
/* WARNING: Function: __x86.get_pc_thunk.cx replaced with injection: get_pc_thunk_cx */
/* 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 __regparm2
ImportRGBOQuantum(Image *image,QuantumInfo *quantum_info,MagickSizeType number_pixels,uchar *p,
                 Quantum *q)

{
  uint *puVar1;
  ushort uVar2;
  ushort uVar3;
  EndianType EVar4;
  int iVar5;
  size_t sVar6;
  int iVar7;
  PixelTrait PVar8;
  byte bVar9;
  double dVar10;
  double dVar11;
  double dVar12;
  float fVar13;
  float fVar14;
  ushort uVar15;
  uint uVar16;
  uint uVar17;
  int iVar18;
  uchar *puVar19;
  byte bVar20;
  size_t sVar21;
  uint uVar22;
  uint uVar23;
  uint quantum;
  double *pdVar24;
  uint uVar25;
  ushort uVar26;
  int iVar27;
  PixelChannelMap *pPVar28;
  int in_GS_OFFSET;
  float fVar29;
  float fVar30;
  uint *local_80;
  Quantum *local_78;
  byte local_6c;
  byte bStack_6b;
  ushort uStack_6a;
  int iStack_68;
  float local_64;
  float local_60;
  double *local_5c;
  double local_3c;
  float pixel;
  undefined4 uStack_28;
  int local_20;
  
  fVar14 = DAT_002c5824;
  fVar13 = DAT_002a7ff0;
  fVar30 = DAT_002a7fec;
  fVar29 = DAT_0029f710;
  dVar12 = DAT_0029f138;
  local_80 = (uint *)p;
  local_78 = q;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if (image == (Image *)0x0) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("image != (Image *) NULL","MagickCore/quantum-import.c",0x1123,"ImportRGBOQuantum"
                 );
  }
  if (image->signature != 0xabacadab) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("image->signature == MagickCoreSignature","MagickCore/quantum-import.c",0x1124,
                  "ImportRGBOQuantum");
  }
  uVar23 = quantum_info->depth;
  switch(uVar23) {
  case 8:
    if (0 < (int)number_pixels) {
      pPVar28 = image->channel_map;
      sVar6 = image->number_channels;
      iVar18 = pPVar28->offset;
      iVar27 = 0;
      iVar5 = pPVar28[1].offset;
      iVar7 = pPVar28[2].offset;
      PVar8 = pPVar28[4].traits;
      sVar21 = quantum_info->pad;
      do {
        bVar9 = p[1];
        bVar20 = p[2];
        q[iVar18] = (double)((float)*p * fVar13);
        q[iVar5] = (double)((float)bVar9 * fVar13);
        q[iVar7] = (double)((float)bVar20 * fVar13);
        if (PVar8 != UndefinedPixelTrait) {
          q[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)p[3] * fVar13);
        }
        p = p + sVar21 + 4;
        iVar27 = iVar27 + 1;
        q = q + sVar6;
      } while (iVar27 != (int)number_pixels);
    }
    break;
  default:
    local_6c = 0;
    bStack_6b = 0;
    uStack_6a = 0;
    iStack_68 = 0;
    if (uVar23 != 0) goto LAB_00161285;
    goto LAB_001612bc;
  case 10:
    if (quantum_info->pack == MagickFalse) {
      if (0 < (int)number_pixels) {
        uVar23 = 0;
        local_6c = 0;
        bStack_6b = 0;
        uStack_6a = 0;
        pPVar28 = image->channel_map;
        sVar6 = quantum_info->pad;
        sVar21 = image->number_channels;
        uVar25 = 0;
        do {
          iVar18 = 0;
          uVar22 = uVar25;
LAB_001620a2:
          if (uVar22 % 3 == 1) {
            uVar25 = uVar23 >> 6 & 0xffc0;
LAB_001620cb:
            dVar12 = (double)uVar25;
            if (iVar18 != 2) goto LAB_001620d7;
LAB_00162130:
            local_78[pPVar28[2].offset] = dVar12;
LAB_001620f8:
            uVar22 = uVar22 + 1;
            iVar18 = iVar18 + 1;
            goto LAB_001620a2;
          }
          if (uVar22 % 3 == 2) {
            uVar25 = (uVar23 & 0xffc) << 4;
            goto LAB_001620cb;
          }
          puVar1 = local_80 + 1;
          uVar23 = *local_80;
          if (quantum_info->endian != LSBEndian) {
            uVar23 = uVar23 >> 0x18 | (uVar23 & 0xff0000) >> 8 | (uVar23 & 0xff00) << 8 |
                     uVar23 << 0x18;
          }
          dVar12 = (double)((uVar23 >> 0x16) << 6);
          local_80 = puVar1;
          if (iVar18 == 2) goto LAB_00162130;
LAB_001620d7:
          uVar25 = uVar22 + 1;
          if (iVar18 != 3) {
            if (iVar18 == 1) {
              local_78[pPVar28[1].offset] = dVar12;
            }
            else {
              local_78[pPVar28->offset] = dVar12;
              if (iVar18 == 3) goto LAB_0016217a;
            }
            goto LAB_001620f8;
          }
          if (pPVar28[4].traits != UndefinedPixelTrait) {
            local_78[pPVar28[4].offset] = (double)DAT_0029f710 - dVar12;
          }
LAB_0016217a:
          iVar18 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;
          local_6c = (byte)iVar18;
          bStack_6b = (byte)((uint)iVar18 >> 8);
          uStack_6a = (ushort)((uint)iVar18 >> 0x10);
          local_80 = (uint *)((int)local_80 + sVar6);
          local_78 = local_78 + sVar21;
        } while (iVar18 != (int)number_pixels);
      }
    }
    else if (0 < (int)number_pixels) {
      pPVar28 = image->channel_map;
      iVar18 = 0;
      iVar5 = pPVar28->offset;
      sVar6 = image->number_channels;
      PVar8 = pPVar28[4].traits;
      iVar7 = pPVar28[2].offset;
      iVar27 = pPVar28[1].offset;
      do {
        uVar22 = 0;
        uVar25 = 10;
        uVar23 = (quantum_info->state).bits;
        do {
          if (uVar23 == 0) {
            uVar17 = (uint)(byte)*local_80;
            local_80 = (uint *)((int)local_80 + 1);
            uVar23 = 8;
            (quantum_info->state).pixel = uVar17;
          }
          else {
            uVar17 = (quantum_info->state).pixel;
          }
          uVar16 = uVar23;
          if (uVar25 <= uVar23) {
            uVar16 = uVar25;
          }
          uVar23 = uVar23 - uVar16;
          uVar25 = uVar25 - uVar16;
          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |
                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);
        } while (0 < (int)uVar25);
        (quantum_info->state).bits = uVar23;
        local_78[iVar5] = (double)((uVar22 & 0x3ff) << 6);
        uVar22 = 0;
        uVar25 = 10;
        do {
          if (uVar23 == 0) {
            uVar17 = (uint)(byte)*local_80;
            local_80 = (uint *)((int)local_80 + 1);
            uVar23 = 8;
            (quantum_info->state).pixel = uVar17;
          }
          else {
            uVar17 = (quantum_info->state).pixel;
          }
          uVar16 = uVar25;
          if (uVar23 <= uVar25) {
            uVar16 = uVar23;
          }
          uVar23 = uVar23 - uVar16;
          uVar25 = uVar25 - uVar16;
          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |
                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);
        } while (0 < (int)uVar25);
        (quantum_info->state).bits = uVar23;
        local_78[iVar27] = (double)((uVar22 & 0x3ff) << 6);
        uVar22 = 0;
        uVar25 = 10;
        do {
          if (uVar23 == 0) {
            uVar17 = (uint)(byte)*local_80;
            local_80 = (uint *)((int)local_80 + 1);
            uVar23 = 8;
            (quantum_info->state).pixel = uVar17;
          }
          else {
            uVar17 = (quantum_info->state).pixel;
          }
          uVar16 = uVar25;
          if (uVar23 <= uVar25) {
            uVar16 = uVar23;
          }
          uVar23 = uVar23 - uVar16;
          uVar25 = uVar25 - uVar16;
          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |
                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);
        } while (0 < (int)uVar25);
        uVar25 = 0;
        (quantum_info->state).bits = uVar23;
        local_78[iVar7] = (double)((uVar22 & 0x3ff) << 6);
        uVar22 = 10;
        do {
          if (uVar23 == 0) {
            uVar17 = (uint)(byte)*local_80;
            local_80 = (uint *)((int)local_80 + 1);
            uVar23 = 8;
            (quantum_info->state).pixel = uVar17;
          }
          else {
            uVar17 = (quantum_info->state).pixel;
          }
          uVar16 = uVar23;
          if (uVar22 <= uVar23) {
            uVar16 = uVar22;
          }
          uVar23 = uVar23 - uVar16;
          uVar22 = uVar22 - uVar16;
          uVar25 = uVar25 << ((byte)uVar16 & 0x1f) |
                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);
        } while (0 < (int)uVar22);
        (quantum_info->state).bits = uVar23;
        if (PVar8 != UndefinedPixelTrait) {
          local_78[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)((uVar25 & 0x3ff) << 6));
        }
        iVar18 = iVar18 + 1;
        local_78 = local_78 + sVar6;
      } while (iVar18 != (int)number_pixels);
    }
    break;
  case 0x10:
    if (quantum_info->format == FloatingPointQuantumFormat) {
      if (0 < (int)number_pixels) {
        iVar18 = 0;
        EVar4 = quantum_info->endian;
        do {
          uVar15 = *(ushort *)p;
          if (EVar4 == LSBEndian) {
            fVar30 = HalfToSinglePrecision(uVar15);
            fVar29 = DAT_0029f710;
            pPVar28 = image->channel_map;
            q[pPVar28->offset] = (double)(DAT_0029f710 * fVar30);
            fVar30 = HalfToSinglePrecision(*(ushort *)((int)p + 2));
            q[pPVar28[1].offset] = (double)(fVar30 * fVar29);
            fVar30 = HalfToSinglePrecision(*(ushort *)((int)p + 4));
            q[pPVar28[2].offset] = (double)(fVar30 * fVar29);
            uVar15 = *(ushort *)((int)p + 6);
          }
          else {
            fVar30 = HalfToSinglePrecision(uVar15 << 8 | uVar15 >> 8);
            fVar29 = DAT_0029f710;
            pPVar28 = image->channel_map;
            q[pPVar28->offset] = (double)(DAT_0029f710 * fVar30);
            fVar30 = HalfToSinglePrecision
                               (*(ushort *)((int)p + 2) << 8 | *(ushort *)((int)p + 2) >> 8);
            q[pPVar28[1].offset] = (double)(fVar30 * fVar29);
            fVar30 = HalfToSinglePrecision
                               (*(ushort *)((int)p + 4) << 8 | *(ushort *)((int)p + 4) >> 8);
            q[pPVar28[2].offset] = (double)(fVar30 * fVar29);
            uVar15 = *(ushort *)((int)p + 6) << 8 | *(ushort *)((int)p + 6) >> 8;
          }
          fVar29 = HalfToSinglePrecision(uVar15);
          if (pPVar28[4].traits != UndefinedPixelTrait) {
            q[pPVar28[4].offset] = (double)(DAT_0029f710 - fVar29 * DAT_0029f710);
          }
          iVar18 = iVar18 + 1;
          p = (uchar *)((int)p + quantum_info->pad + 8);
          q = q + image->number_channels;
        } while (iVar18 != (int)number_pixels);
      }
    }
    else if (0 < (int)number_pixels) {
      pPVar28 = image->channel_map;
      EVar4 = quantum_info->endian;
      sVar6 = quantum_info->pad;
      sVar21 = image->number_channels;
      iVar18 = pPVar28[1].offset;
      iVar5 = pPVar28[2].offset;
      iVar7 = pPVar28->offset;
      PVar8 = pPVar28[4].traits;
      iVar27 = 0;
      do {
        uVar15 = *(ushort *)((int)p + 4);
        uVar26 = *(ushort *)((int)p + 6);
        uVar2 = *(ushort *)p;
        uVar3 = *(ushort *)((int)p + 2);
        if (EVar4 == LSBEndian) {
          q[iVar7] = (double)uVar2;
          q[iVar18] = (double)uVar3;
          q[iVar5] = (double)uVar15;
        }
        else {
          uVar26 = uVar26 << 8 | uVar26 >> 8;
          q[iVar7] = (double)(ushort)(uVar2 << 8 | uVar2 >> 8);
          q[iVar18] = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);
          q[iVar5] = (double)(ushort)(uVar15 << 8 | uVar15 >> 8);
        }
        if (PVar8 != UndefinedPixelTrait) {
          q[pPVar28[4].offset] = (double)(fVar29 - (float)uVar26);
        }
        p = (uchar *)((int)p + sVar6 + 8);
        iVar27 = iVar27 + 1;
        q = q + sVar21;
      } while (iVar27 != (int)number_pixels);
    }
    break;
  case 0x18:
    if (quantum_info->format == FloatingPointQuantumFormat) {
      if (0 < (int)number_pixels) {
        iVar18 = 0;
        do {
          puVar19 = PushQuantumFloat24Pixel(quantum_info,p,&pixel);
          q[image->channel_map->offset] = (double)pixel;
          puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel);
          q[image->channel_map[1].offset] = (double)pixel;
          puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel);
          q[image->channel_map[2].offset] = (double)pixel;
          puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel);
          if (image->channel_map[4].traits != UndefinedPixelTrait) {
            q[image->channel_map[4].offset] = (double)(DAT_0029f710 - pixel);
          }
          p = puVar19 + quantum_info->pad;
          iVar18 = iVar18 + 1;
          q = q + image->number_channels;
        } while (iVar18 != (int)number_pixels);
      }
      break;
    }
    goto LAB_001616dd;
  case 0x20:
    if (quantum_info->format == FloatingPointQuantumFormat) {
      if (0 < (int)number_pixels) {
        pPVar28 = image->channel_map;
        local_5c = (double *)0x0;
        sVar6 = quantum_info->pad;
        EVar4 = quantum_info->endian;
        sVar21 = image->number_channels;
        do {
          local_64 = *(float *)p;
          if (EVar4 != LSBEndian) {
            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*p << 0x18) >> 0x10) |
                                                (ushort)*(byte *)((int)p + 1),*(byte *)((int)p + 2))
                                       ,*(byte *)((int)p + 3));
          }
          fVar30 = (local_64 - (float)quantum_info->minimum) * (float)quantum_info->scale;
          fVar29 = fVar14;
          if ((fVar14 <= fVar30) && (fVar29 = DAT_002c5828, fVar30 <= DAT_002c5828)) {
            fVar29 = fVar30;
          }
          q[pPVar28->offset] = (double)fVar29;
          if (EVar4 == LSBEndian) {
            fVar29 = *(float *)((int)p + 4);
          }
          else {
            fVar29 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)((int)p + 4) << 0x18) >> 0x10
                                                      ) | (ushort)*(byte *)((int)p + 5),
                                              *(byte *)((int)p + 6)),*(byte *)((int)p + 7));
          }
          fVar29 = (fVar29 - (float)quantum_info->minimum) * (float)quantum_info->scale;
          fVar30 = DAT_002c5824;
          if ((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)) {
            fVar30 = fVar29;
          }
          q[pPVar28[1].offset] = (double)fVar30;
          if (EVar4 == LSBEndian) {
            local_60 = *(float *)((int)p + 8);
          }
          else {
            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)((int)p + 8) << 0x18) >>
                                                        0x10) | (ushort)*(byte *)((int)p + 9),
                                                *(byte *)((int)p + 10)),*(byte *)((int)p + 0xb));
          }
          fVar29 = (local_60 - (float)quantum_info->minimum) * (float)quantum_info->scale;
          fVar30 = DAT_002c5824;
          if ((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)) {
            fVar30 = fVar29;
          }
          q[pPVar28[2].offset] = (double)fVar30;
          if (EVar4 == LSBEndian) {
            fVar29 = *(float *)((int)p + 0xc);
            local_6c = SUB41(fVar29,0);
            bStack_6b = (byte)((uint)fVar29 >> 8);
            uStack_6a = (ushort)((uint)fVar29 >> 0x10);
          }
          else {
            uStack_6a = (ushort)(((uint)*(byte *)((int)p + 0xc) << 0x18) >> 0x10) |
                        (ushort)*(byte *)((int)p + 0xd);
            bStack_6b = *(byte *)((int)p + 0xe);
            local_6c = *(byte *)((int)p + 0xf);
          }
          fVar29 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -
                   (float)quantum_info->minimum) * (float)quantum_info->scale;
          fVar30 = DAT_002c5824;
          if ((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)) {
            fVar30 = fVar29;
          }
          if (pPVar28[4].traits != UndefinedPixelTrait) {
            q[pPVar28[4].offset] = (double)(DAT_0029f710 - fVar30);
          }
          local_5c = (double *)((int)local_5c + 1);
          p = (uchar *)((int)p + sVar6 + 0x10);
          q = q + sVar21;
        } while (local_5c != (double *)(int)number_pixels);
      }
      break;
    }
LAB_001616dd:
    if (0 < (int)number_pixels) {
      pPVar28 = image->channel_map;
      EVar4 = quantum_info->endian;
      sVar6 = quantum_info->pad;
      sVar21 = image->number_channels;
      iVar18 = pPVar28->offset;
      iVar5 = pPVar28[1].offset;
      iVar7 = pPVar28[2].offset;
      PVar8 = pPVar28[4].traits;
      iVar27 = 0;
      do {
        fVar29 = DAT_002a7fec;
        uVar23 = *(uint *)((int)p + 0xc);
        uVar25 = *(uint *)((int)p + 4);
        uVar22 = *(uint *)((int)p + 8);
        uVar17 = *(uint *)p;
        if (EVar4 == LSBEndian) {
          q[iVar18] = (double)((float)uVar17 / DAT_002a7fec);
          q[iVar5] = (double)((float)uVar25 / fVar29);
          q[iVar7] = (double)((float)uVar22 / fVar29);
        }
        else {
          uVar15 = (ushort)(uVar17 >> 8);
          uStack_6a = uVar15 & 0xff | (ushort)((uVar17 << 0x18) >> 0x10);
          uVar23 = uVar23 >> 0x18 | (uVar23 & 0xff0000) >> 8 | (uVar23 & 0xff00) << 8 |
                   uVar23 << 0x18;
          q[iVar18] = (double)((float)CONCAT22(uStack_6a,
                                               (ushort)(byte)(uVar17 >> 0x18) | uVar15 & 0xff00) /
                              fVar30);
          q[iVar5] = (double)((float)(uVar25 >> 0x18 | (uVar25 & 0xff0000) >> 8 |
                                      (uVar25 & 0xff00) << 8 | uVar25 << 0x18) / fVar30);
          q[iVar7] = (double)((float)(uVar22 >> 0x18 | (uVar22 & 0xff0000) >> 8 |
                                      (uVar22 & 0xff00) << 8 | uVar22 << 0x18) / fVar30);
        }
        if (PVar8 != UndefinedPixelTrait) {
          q[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)uVar23 / DAT_002a7fec);
        }
        p = (uchar *)((int)p + sVar6 + 0x10);
        iVar27 = iVar27 + 1;
        q = q + sVar21;
      } while (iVar27 != (int)number_pixels);
    }
    break;
  case 0x40:
    if (quantum_info->format == FloatingPointQuantumFormat) {
      if (0 < (int)number_pixels) {
        iVar18 = 0;
        do {
          puVar19 = PushDoublePixel(quantum_info,p,(double *)&pixel);
          q[image->channel_map->offset] = (Quantum)CONCAT44(uStack_28,pixel);
          puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel);
          q[image->channel_map[1].offset] = (Quantum)CONCAT44(uStack_28,pixel);
          puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel);
          q[image->channel_map[2].offset] = (Quantum)CONCAT44(uStack_28,pixel);
          puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel);
          if (image->channel_map[4].traits != UndefinedPixelTrait) {
            q[image->channel_map[4].offset] =
                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,pixel));
          }
          p = puVar19 + quantum_info->pad;
          iVar18 = iVar18 + 1;
          q = q + image->number_channels;
        } while (iVar18 != (int)number_pixels);
      }
      break;
    }
LAB_00161285:
    uVar25 = 0;
    if (uVar23 < 0x41) {
      uVar25 = uVar23;
    }
    bVar20 = (byte)(uVar25 - 1);
    bVar9 = bVar20 & 0x1f;
    uVar16 = 2 << (bVar20 & 0x1f);
    uVar17 = uVar16;
    uVar22 = 0 << bVar9 | 2U >> 0x20 - bVar9;
    if ((uVar25 - 1 & 0x20) != 0) {
      uVar17 = 0;
      uVar22 = uVar16;
    }
    iVar18 = uVar17 - 1;
    iStack_68 = (uVar22 - 1) + (uint)(uVar17 != 0);
    local_6c = (byte)iVar18;
    bStack_6b = (byte)((uint)iVar18 >> 8);
    uStack_6a = (ushort)((uint)iVar18 >> 0x10);
LAB_001612bc:
    if (0 < (int)number_pixels) {
      pPVar28 = image->channel_map;
      local_64 = 0.0;
      iVar18 = pPVar28->offset;
      iVar5 = pPVar28[1].offset;
      sVar6 = image->number_channels;
      do {
        pdVar24 = local_78 + iVar18;
        if ((int)uVar23 < 1) {
          fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));
          if (iStack_68 < 0) {
            fVar29 = fVar29 + DAT_0029f714;
          }
          local_3c = (double)fVar29;
          if (local_3c < dVar12) {
            *pdVar24 = 0.0;
          }
          else {
            dVar11 = 0.0;
LAB_00161f72:
            *pdVar24 = ((double)DAT_0029f718 / local_3c) * dVar11 * (double)DAT_0029f710;
            if (0 < (int)uVar23) goto LAB_00161938;
          }
          dVar11 = 0.0;
          local_5c = local_78 + pPVar28[2].offset;
LAB_00161a0c:
          dVar10 = DAT_0029f738;
          if (DAT_0029f138 <= local_3c) {
            dVar10 = (double)DAT_0029f718 / local_3c;
          }
          local_78[iVar5] = dVar10 * dVar11 * (double)DAT_0029f710;
          if (0 < (int)uVar23) goto LAB_00161a4a;
          if (DAT_0029f138 <= local_3c) {
            dVar11 = 0.0;
            goto LAB_00161ed0;
          }
          *local_5c = 0.0;
          dVar11 = 0.0;
LAB_00161c0a:
          dVar10 = DAT_0029f738;
          if (DAT_0029f138 <= local_3c) {
LAB_00161f00:
            dVar10 = (double)DAT_0029f718 / local_3c;
          }
          dVar11 = dVar10 * dVar11 * (double)DAT_0029f710;
        }
        else {
          uVar22 = 0;
          sVar21 = (quantum_info->state).bits;
          uVar25 = uVar23;
          do {
            if (sVar21 == 0) {
              uVar17 = (uint)(byte)*local_80;
              local_80 = (uint *)((int)local_80 + 1);
              (quantum_info->state).pixel = uVar17;
              sVar21 = 8;
            }
            else {
              uVar17 = (quantum_info->state).pixel;
            }
            uVar16 = sVar21;
            if (uVar25 <= sVar21) {
              uVar16 = uVar25;
            }
            sVar21 = sVar21 - uVar16;
            uVar25 = uVar25 - uVar16;
            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |
                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);
          } while (0 < (int)uVar25);
          (quantum_info->state).bits = sVar21;
          if ((iStack_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar22)) {
            *pdVar24 = (double)DAT_0029f710;
          }
          else {
            dVar11 = (double)uVar22;
            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));
            if (iStack_68 < 0) {
              fVar29 = fVar29 + DAT_0029f714;
            }
            local_3c = (double)fVar29;
            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;
            *pdVar24 = dVar11 * DAT_0029f738 * (double)DAT_0029f710;
          }
LAB_00161938:
          uVar22 = 0;
          sVar21 = (quantum_info->state).bits;
          uVar25 = uVar23;
          do {
            if (sVar21 == 0) {
              uVar17 = (uint)(byte)*local_80;
              local_80 = (uint *)((int)local_80 + 1);
              sVar21 = 8;
              (quantum_info->state).pixel = uVar17;
            }
            else {
              uVar17 = (quantum_info->state).pixel;
            }
            uVar16 = sVar21;
            if (uVar25 <= sVar21) {
              uVar16 = uVar25;
            }
            sVar21 = sVar21 - uVar16;
            uVar25 = uVar25 - uVar16;
            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |
                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);
          } while (0 < (int)uVar25);
          (quantum_info->state).bits = sVar21;
          local_5c = local_78 + pPVar28[2].offset;
          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {
            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));
            if (iStack_68 < 0) {
              fVar29 = fVar29 + DAT_0029f714;
            }
            local_3c = (double)fVar29;
            dVar11 = (double)uVar22;
            goto LAB_00161a0c;
          }
          local_78[iVar5] = (double)DAT_0029f710;
LAB_00161a4a:
          uVar22 = 0;
          sVar21 = (quantum_info->state).bits;
          uVar25 = uVar23;
          do {
            if (sVar21 == 0) {
              uVar17 = (uint)(byte)*local_80;
              local_80 = (uint *)((int)local_80 + 1);
              (quantum_info->state).pixel = uVar17;
              sVar21 = 8;
            }
            else {
              uVar17 = (quantum_info->state).pixel;
            }
            uVar16 = uVar25;
            if (sVar21 <= uVar25) {
              uVar16 = sVar21;
            }
            sVar21 = sVar21 - uVar16;
            uVar25 = uVar25 - uVar16;
            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |
                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);
          } while (0 < (int)uVar25);
          (quantum_info->state).bits = sVar21;
          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {
            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));
            if (iStack_68 < 0) {
              fVar29 = fVar29 + DAT_0029f714;
            }
            local_3c = (double)fVar29;
            dVar11 = (double)uVar22;
            if (local_3c < DAT_0029f138) {
              *local_5c = dVar11 * DAT_0029f738 * (double)DAT_0029f710;
              if ((int)uVar23 < 1) {
                dVar11 = 0.0;
                goto LAB_00161c0a;
              }
              goto LAB_00161b52;
            }
LAB_00161ed0:
            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar11 * (double)DAT_0029f710;
            if (0 < (int)uVar23) goto LAB_00161b52;
            dVar11 = 0.0;
            goto LAB_00161f00;
          }
          *local_5c = (double)DAT_0029f710;
LAB_00161b52:
          uVar22 = 0;
          sVar21 = (quantum_info->state).bits;
          uVar25 = uVar23;
          do {
            if (sVar21 == 0) {
              uVar17 = (uint)(byte)*local_80;
              local_80 = (uint *)((int)local_80 + 1);
              sVar21 = 8;
              (quantum_info->state).pixel = uVar17;
            }
            else {
              uVar17 = (quantum_info->state).pixel;
            }
            uVar16 = uVar25;
            if (sVar21 <= uVar25) {
              uVar16 = sVar21;
            }
            sVar21 = sVar21 - uVar16;
            uVar25 = uVar25 - uVar16;
            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |
                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);
          } while (0 < (int)uVar25);
          (quantum_info->state).bits = sVar21;
          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {
            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));
            if (iStack_68 < 0) {
              fVar29 = fVar29 + DAT_0029f714;
            }
            local_3c = (double)fVar29;
            dVar11 = (double)uVar22;
            goto LAB_00161c0a;
          }
          dVar11 = (double)DAT_0029f710;
        }
        if (pPVar28[4].traits != UndefinedPixelTrait) {
          local_78[pPVar28[4].offset] = (double)DAT_0029f710 - dVar11;
        }
        local_64 = (float)((int)local_64 + 1);
        local_78 = local_78 + sVar6;
      } while (local_64 != (float)(int)number_pixels);
    }
  }
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail_local();
  }
  return;
}



/* WARNING: Function: __i686.get_pc_thunk.cx replaced with injection: get_pc_thunk_cx */

void __regparm2
FUN_00160f20(int param_1,uint *param_2,int param_3,undefined4 param_4,float *param_5,int param_6)

{
  float *pfVar1;
  int iVar2;
  ushort uVar3;
  ushort uVar4;
  ushort uVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  float fVar9;
  float fVar10;
  float fVar11;
  byte bVar12;
  float fVar13;
  double dVar14;
  double dVar15;
  double dVar16;
  float fVar17;
  uint uVar18;
  uint uVar19;
  int iVar20;
  double *pdVar21;
  uint uVar22;
  byte bVar23;
  int iVar24;
  uint uVar25;
  uint uVar26;
  float fVar27;
  double *pdVar28;
  uint uVar29;
  double *pdVar30;
  ushort uVar31;
  int iVar32;
  int iVar33;
  int in_GS_OFFSET;
  longdouble lVar34;
  float *local_80;
  int local_78;
  byte local_6c;
  byte bStack_6b;
  ushort uStack_6a;
  int local_68;
  float local_64;
  float local_60;
  double *local_5c;
  double local_3c;
  float fStack_2c;
  undefined4 uStack_28;
  
  fVar10 = DAT_002c5824;
  fVar9 = DAT_002a7ff0;
  fVar13 = DAT_002a7fec;
  fVar27 = DAT_0029f710;
  dVar16 = DAT_0029f138;
  local_80 = param_5;
  local_78 = param_6;
  iVar2 = *(int *)(in_GS_OFFSET + 0x14);
  if (param_1 == 0) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("image != (Image *) NULL","MagickCore/quantum-import.c",0x1123,"ImportRGBOQuantum"
                 );
  }
  if (*(int *)(param_1 + 0x3344) != -0x54535255) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("image->signature == MagickCoreSignature","MagickCore/quantum-import.c",0x1124,
                  "ImportRGBOQuantum");
  }
  uVar22 = *param_2;
  switch(uVar22) {
  case 8:
    if (0 < param_3) {
      iVar20 = *(int *)(param_1 + 0x2a8);
      iVar33 = *(int *)(param_1 + 0x298);
      iVar24 = *(int *)(iVar20 + 8);
      iVar32 = 0;
      iVar6 = *(int *)(iVar20 + 0x14);
      iVar7 = *(int *)(iVar20 + 0x20);
      iVar8 = *(int *)(iVar20 + 0x34);
      uVar22 = param_2[9];
      do {
        bVar12 = *(byte *)((int)param_5 + 1);
        bVar23 = *(byte *)((int)param_5 + 2);
        *(double *)(param_6 + iVar24 * 8) = (double)((float)*(byte *)param_5 * fVar9);
        *(double *)(param_6 + iVar6 * 8) = (double)((float)bVar12 * fVar9);
        *(double *)(param_6 + iVar7 * 8) = (double)((float)bVar23 * fVar9);
        if (iVar8 != 0) {
          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =
               (double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9);
        }
        param_5 = (float *)((int)param_5 + uVar22 + 4);
        iVar32 = iVar32 + 1;
        param_6 = param_6 + iVar33 * 8;
      } while (iVar32 != param_3);
    }
    break;
  default:
    local_6c = 0;
    bStack_6b = 0;
    uStack_6a = 0;
    local_68 = 0;
    if (uVar22 != 0) goto LAB_00161285;
    goto LAB_001612bc;
  case 10:
    if (param_2[0xb] == 0) {
      if (0 < param_3) {
        fVar27 = 0.0;
        local_6c = 0;
        bStack_6b = 0;
        uStack_6a = 0;
        iVar20 = *(int *)(param_1 + 0x2a8);
        uVar22 = param_2[9];
        iVar33 = *(int *)(param_1 + 0x298);
        uVar26 = 0;
        do {
          iVar24 = 0;
          uVar29 = uVar26;
code_r0x001620a2:
          if (uVar29 % 3 == 1) {
            uVar26 = (uint)fVar27 >> 6 & 0xffc0;
code_r0x001620cb:
            dVar16 = (double)uVar26;
            if (iVar24 != 2) goto code_r0x001620d7;
code_r0x00162130:
            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;
code_r0x001620f8:
            uVar29 = uVar29 + 1;
            iVar24 = iVar24 + 1;
            goto code_r0x001620a2;
          }
          if (uVar29 % 3 == 2) {
            uVar26 = ((uint)fVar27 & 0xffc) << 4;
            goto code_r0x001620cb;
          }
          pfVar1 = local_80 + 1;
          fVar27 = *local_80;
          if (param_2[0x10] != 1) {
            fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |
                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);
          }
          dVar16 = (double)(((uint)fVar27 >> 0x16) << 6);
          local_80 = pfVar1;
          if (iVar24 == 2) goto code_r0x00162130;
code_r0x001620d7:
          uVar26 = uVar29 + 1;
          if (iVar24 != 3) {
            if (iVar24 == 1) {
              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;
            }
            else {
              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;
              if (iVar24 == 3) goto code_r0x0016217a;
            }
            goto code_r0x001620f8;
          }
          if (*(int *)(iVar20 + 0x34) != 0) {
            *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;
          }
code_r0x0016217a:
          iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;
          local_6c = (byte)iVar24;
          bStack_6b = (byte)((uint)iVar24 >> 8);
          uStack_6a = (ushort)((uint)iVar24 >> 0x10);
          local_80 = (float *)((int)local_80 + uVar22);
          local_78 = local_78 + iVar33 * 8;
        } while (iVar24 != param_3);
      }
    }
    else if (0 < param_3) {
      iVar33 = *(int *)(param_1 + 0x2a8);
      iVar20 = 0;
      iVar24 = *(int *)(iVar33 + 8);
      iVar6 = *(int *)(param_1 + 0x298);
      iVar7 = *(int *)(iVar33 + 0x34);
      iVar8 = *(int *)(iVar33 + 0x20);
      iVar32 = *(int *)(iVar33 + 0x14);
      do {
        uVar29 = 0;
        uVar26 = 10;
        uVar22 = param_2[0x14];
        do {
          if (uVar22 == 0) {
            uVar19 = (uint)*(byte *)local_80;
            local_80 = (float *)((int)local_80 + 1);
            uVar22 = 8;
            param_2[0x13] = uVar19;
          }
          else {
            uVar19 = param_2[0x13];
          }
          uVar18 = uVar22;
          if (uVar26 <= uVar22) {
            uVar18 = uVar26;
          }
          uVar22 = uVar22 - uVar18;
          uVar26 = uVar26 - uVar18;
          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |
                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);
        } while (0 < (int)uVar26);
        param_2[0x14] = uVar22;
        *(double *)(local_78 + iVar24 * 8) = (double)((uVar29 & 0x3ff) << 6);
        uVar29 = 0;
        uVar26 = 10;
        do {
          if (uVar22 == 0) {
            uVar19 = (uint)*(byte *)local_80;
            local_80 = (float *)((int)local_80 + 1);
            uVar22 = 8;
            param_2[0x13] = uVar19;
          }
          else {
            uVar19 = param_2[0x13];
          }
          uVar18 = uVar26;
          if (uVar22 <= uVar26) {
            uVar18 = uVar22;
          }
          uVar22 = uVar22 - uVar18;
          uVar26 = uVar26 - uVar18;
          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |
                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);
        } while (0 < (int)uVar26);
        param_2[0x14] = uVar22;
        *(double *)(local_78 + iVar32 * 8) = (double)((uVar29 & 0x3ff) << 6);
        uVar29 = 0;
        uVar26 = 10;
        do {
          if (uVar22 == 0) {
            uVar19 = (uint)*(byte *)local_80;
            local_80 = (float *)((int)local_80 + 1);
            uVar22 = 8;
            param_2[0x13] = uVar19;
          }
          else {
            uVar19 = param_2[0x13];
          }
          uVar18 = uVar26;
          if (uVar22 <= uVar26) {
            uVar18 = uVar22;
          }
          uVar22 = uVar22 - uVar18;
          uVar26 = uVar26 - uVar18;
          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |
                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);
        } while (0 < (int)uVar26);
        uVar26 = 0;
        param_2[0x14] = uVar22;
        *(double *)(local_78 + iVar8 * 8) = (double)((uVar29 & 0x3ff) << 6);
        uVar29 = 10;
        do {
          if (uVar22 == 0) {
            uVar19 = (uint)*(byte *)local_80;
            local_80 = (float *)((int)local_80 + 1);
            uVar22 = 8;
            param_2[0x13] = uVar19;
          }
          else {
            uVar19 = param_2[0x13];
          }
          uVar18 = uVar22;
          if (uVar29 <= uVar22) {
            uVar18 = uVar29;
          }
          uVar22 = uVar22 - uVar18;
          uVar29 = uVar29 - uVar18;
          uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |
                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);
        } while (0 < (int)uVar29);
        param_2[0x14] = uVar22;
        if (iVar7 != 0) {
          *(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =
               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));
        }
        iVar20 = iVar20 + 1;
        local_78 = local_78 + iVar6 * 8;
      } while (iVar20 != param_3);
    }
    break;
  case 0x10:
    if (param_2[2] == 1) {
      if (0 < param_3) {
        iVar20 = 0;
        uVar22 = param_2[0x10];
        do {
          if (uVar22 == 1) {
            lVar34 = (longdouble)FUN_00159350();
            fVar27 = DAT_0029f710;
            iVar33 = *(int *)(param_1 + 0x2a8);
            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =
                 (double)((longdouble)DAT_0029f710 * lVar34);
            lVar34 = (longdouble)FUN_00159350();
            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =
                 (double)(lVar34 * (longdouble)fVar27);
            lVar34 = (longdouble)FUN_00159350();
            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =
                 (double)(lVar34 * (longdouble)fVar27);
          }
          else {
            lVar34 = (longdouble)FUN_00159350();
            fVar27 = DAT_0029f710;
            iVar33 = *(int *)(param_1 + 0x2a8);
            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =
                 (double)((longdouble)DAT_0029f710 * lVar34);
            lVar34 = (longdouble)FUN_00159350();
            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =
                 (double)(lVar34 * (longdouble)fVar27);
            lVar34 = (longdouble)FUN_00159350();
            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =
                 (double)(lVar34 * (longdouble)fVar27);
          }
          lVar34 = (longdouble)FUN_00159350();
          if (*(int *)(iVar33 + 0x34) != 0) {
            *(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =
                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);
          }
          iVar20 = iVar20 + 1;
          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;
        } while (iVar20 != param_3);
      }
    }
    else if (0 < param_3) {
      iVar20 = *(int *)(param_1 + 0x2a8);
      uVar22 = param_2[0x10];
      uVar26 = param_2[9];
      iVar33 = *(int *)(param_1 + 0x298);
      iVar24 = *(int *)(iVar20 + 0x14);
      iVar6 = *(int *)(iVar20 + 0x20);
      iVar7 = *(int *)(iVar20 + 8);
      iVar8 = *(int *)(iVar20 + 0x34);
      iVar32 = 0;
      do {
        uVar3 = *(ushort *)(param_5 + 1);
        uVar31 = *(ushort *)((int)param_5 + 6);
        uVar4 = *(ushort *)param_5;
        pdVar21 = (double *)(iVar24 * 8 + param_6);
        uVar5 = *(ushort *)((int)param_5 + 2);
        pdVar28 = (double *)(iVar6 * 8 + param_6);
        pdVar30 = (double *)(iVar7 * 8 + param_6);
        if (uVar22 == 1) {
          *pdVar30 = (double)uVar4;
          *pdVar21 = (double)uVar5;
          *pdVar28 = (double)uVar3;
        }
        else {
          uVar31 = uVar31 << 8 | uVar31 >> 8;
          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);
          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);
          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);
        }
        if (iVar8 != 0) {
          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);
        }
        param_5 = (float *)((int)param_5 + uVar26 + 8);
        iVar32 = iVar32 + 1;
        param_6 = param_6 + iVar33 * 8;
      } while (iVar32 != param_3);
    }
    break;
  case 0x18:
    if (param_2[2] == 1) {
      if (0 < param_3) {
        iVar20 = 0;
        do {
          FUN_00159670();
          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) = (double)fStack_2c;
          FUN_00159670();
          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) = (double)fStack_2c;
          FUN_00159670();
          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) = (double)fStack_2c;
          FUN_00159670();
          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {
            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =
                 (double)(DAT_0029f710 - fStack_2c);
          }
          iVar20 = iVar20 + 1;
          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;
        } while (iVar20 != param_3);
      }
      break;
    }
    goto code_r0x001616dd;
  case 0x20:
    if (param_2[2] == 1) {
      if (0 < param_3) {
        iVar20 = *(int *)(param_1 + 0x2a8);
        local_5c = (double *)0x0;
        uVar22 = param_2[9];
        uVar26 = param_2[0x10];
        iVar33 = *(int *)(param_1 + 0x298);
        do {
          local_64 = *param_5;
          if (uVar26 != 1) {
            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |
                                                (ushort)*(byte *)((int)param_5 + 1),
                                                *(byte *)((int)param_5 + 2)),
                                       *(byte *)((int)param_5 + 3));
          }
          fVar13 = (local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);
          fVar27 = fVar10;
          if ((fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)) {
            fVar27 = fVar13;
          }
          *(double *)(param_6 + *(int *)(iVar20 + 8) * 8) = (double)fVar27;
          if (uVar26 == 1) {
            fVar27 = param_5[1];
          }
          else {
            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>
                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),
                                              *(byte *)((int)param_5 + 6)),
                                     *(byte *)((int)param_5 + 7));
          }
          fVar27 = (fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);
          fVar13 = DAT_002c5824;
          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {
            fVar13 = fVar27;
          }
          *(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8) = (double)fVar13;
          if (uVar26 == 1) {
            local_60 = param_5[2];
          }
          else {
            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>
                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),
                                                *(byte *)((int)param_5 + 10)),
                                       *(byte *)((int)param_5 + 0xb));
          }
          fVar27 = (local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);
          fVar13 = DAT_002c5824;
          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {
            fVar13 = fVar27;
          }
          *(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8) = (double)fVar13;
          if (uVar26 == 1) {
            fVar27 = param_5[3];
            local_6c = SUB41(fVar27,0);
            bStack_6b = (byte)((uint)fVar27 >> 8);
            uStack_6a = (ushort)((uint)fVar27 >> 0x10);
          }
          else {
            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |
                        (ushort)*(byte *)((int)param_5 + 0xd);
            bStack_6b = *(byte *)((int)param_5 + 0xe);
            local_6c = *(byte *)((int)param_5 + 0xf);
          }
          fVar27 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -
                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);
          fVar13 = DAT_002c5824;
          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {
            fVar13 = fVar27;
          }
          if (*(int *)(iVar20 + 0x34) != 0) {
            *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);
          }
          local_5c = (double *)((int)local_5c + 1);
          param_5 = (float *)((int)param_5 + uVar22 + 0x10);
          param_6 = param_6 + iVar33 * 8;
        } while (local_5c != (double *)param_3);
      }
      break;
    }
code_r0x001616dd:
    if (0 < param_3) {
      iVar20 = *(int *)(param_1 + 0x2a8);
      uVar22 = param_2[0x10];
      uVar26 = param_2[9];
      iVar33 = *(int *)(param_1 + 0x298);
      iVar24 = *(int *)(iVar20 + 8);
      iVar6 = *(int *)(iVar20 + 0x14);
      iVar7 = *(int *)(iVar20 + 0x20);
      iVar8 = *(int *)(iVar20 + 0x34);
      iVar32 = 0;
      do {
        fVar17 = DAT_002a7fec;
        fVar27 = param_5[3];
        fVar9 = param_5[1];
        pdVar21 = (double *)(iVar6 * 8 + param_6);
        fVar10 = param_5[2];
        pdVar30 = (double *)(iVar24 * 8 + param_6);
        fVar11 = *param_5;
        pdVar28 = (double *)(iVar7 * 8 + param_6);
        if (uVar22 == 1) {
          *pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec);
          *pdVar21 = (double)((float)(uint)fVar9 / fVar17);
          *pdVar28 = (double)((float)(uint)fVar10 / fVar17);
        }
        else {
          uVar3 = (ushort)((uint)fVar11 >> 8);
          uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);
          fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |
                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);
          *pdVar30 = (double)((float)CONCAT22(uStack_6a,
                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)
                             / fVar13);
          *pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |
                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);
          *pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |
                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);
        }
        if (iVar8 != 0) {
          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =
               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec);
        }
        param_5 = (float *)((int)param_5 + uVar26 + 0x10);
        iVar32 = iVar32 + 1;
        param_6 = param_6 + iVar33 * 8;
      } while (iVar32 != param_3);
    }
    break;
  case 0x40:
    if (param_2[2] == 1) {
      if (0 < param_3) {
        iVar20 = 0;
        do {
          FUN_00159410();
          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) =
               CONCAT44(uStack_28,fStack_2c);
          FUN_00159410();
          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) =
               CONCAT44(uStack_28,fStack_2c);
          FUN_00159410();
          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) =
               CONCAT44(uStack_28,fStack_2c);
          FUN_00159410();
          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {
            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =
                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));
          }
          iVar20 = iVar20 + 1;
          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;
        } while (iVar20 != param_3);
      }
      break;
    }
LAB_00161285:
    uVar26 = 0;
    if (uVar22 < 0x41) {
      uVar26 = uVar22;
    }
    bVar23 = (byte)(uVar26 - 1);
    bVar12 = bVar23 & 0x1f;
    uVar18 = 2 << (bVar23 & 0x1f);
    uVar19 = uVar18;
    uVar29 = 0 << bVar12 | 2U >> 0x20 - bVar12;
    if ((uVar26 - 1 & 0x20) != 0) {
      uVar19 = 0;
      uVar29 = uVar18;
    }
    iVar20 = uVar19 - 1;
    local_68 = (uVar29 - 1) + (uint)(uVar19 != 0);
    local_6c = (byte)iVar20;
    bStack_6b = (byte)((uint)iVar20 >> 8);
    uStack_6a = (ushort)((uint)iVar20 >> 0x10);
LAB_001612bc:
    if (0 < param_3) {
      iVar20 = *(int *)(param_1 + 0x2a8);
      local_64 = 0.0;
      iVar33 = *(int *)(iVar20 + 8);
      iVar24 = *(int *)(iVar20 + 0x14);
      iVar6 = *(int *)(param_1 + 0x298);
      do {
        pdVar28 = (double *)(iVar33 * 8 + local_78);
        pdVar21 = (double *)(local_78 + iVar24 * 8);
        if ((int)uVar22 < 1) {
          fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));
          if (local_68 < 0) {
            fVar27 = fVar27 + DAT_0029f714;
          }
          local_3c = (double)fVar27;
          if (local_3c < dVar16) {
            *pdVar28 = 0.0;
          }
          else {
            dVar15 = 0.0;
LAB_00161f72:
            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;
            if (0 < (int)uVar22) goto LAB_00161938;
          }
          dVar15 = 0.0;
          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);
LAB_00161a0c:
          dVar14 = DAT_0029f738;
          if (DAT_0029f138 <= local_3c) {
            dVar14 = (double)DAT_0029f718 / local_3c;
          }
          *pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710;
          if (0 < (int)uVar22) goto LAB_00161a4a;
          if (DAT_0029f138 <= local_3c) {
            dVar15 = 0.0;
            goto LAB_00161ed0;
          }
          *local_5c = 0.0;
          dVar15 = 0.0;
LAB_00161c0a:
          dVar14 = DAT_0029f738;
          if (DAT_0029f138 <= local_3c) {
LAB_00161f00:
            dVar14 = (double)DAT_0029f718 / local_3c;
          }
          dVar15 = dVar14 * dVar15 * (double)DAT_0029f710;
        }
        else {
          uVar19 = 0;
          uVar26 = param_2[0x14];
          uVar29 = uVar22;
          do {
            if (uVar26 == 0) {
              uVar18 = (uint)*(byte *)local_80;
              local_80 = (float *)((int)local_80 + 1);
              param_2[0x13] = uVar18;
              uVar26 = 8;
            }
            else {
              uVar18 = param_2[0x13];
            }
            uVar25 = uVar26;
            if (uVar29 <= uVar26) {
              uVar25 = uVar29;
            }
            uVar26 = uVar26 - uVar25;
            uVar29 = uVar29 - uVar25;
            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |
                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);
          } while (0 < (int)uVar29);
          param_2[0x14] = uVar26;
          if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {
            *pdVar28 = (double)DAT_0029f710;
          }
          else {
            dVar15 = (double)uVar19;
            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));
            if (local_68 < 0) {
              fVar27 = fVar27 + DAT_0029f714;
            }
            local_3c = (double)fVar27;
            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;
            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;
          }
LAB_00161938:
          uVar19 = 0;
          uVar26 = param_2[0x14];
          uVar29 = uVar22;
          do {
            if (uVar26 == 0) {
              uVar18 = (uint)*(byte *)local_80;
              local_80 = (float *)((int)local_80 + 1);
              uVar26 = 8;
              param_2[0x13] = uVar18;
            }
            else {
              uVar18 = param_2[0x13];
            }
            uVar25 = uVar26;
            if (uVar29 <= uVar26) {
              uVar25 = uVar29;
            }
            uVar26 = uVar26 - uVar25;
            uVar29 = uVar29 - uVar25;
            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |
                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);
          } while (0 < (int)uVar29);
          param_2[0x14] = uVar26;
          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);
          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {
            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));
            if (local_68 < 0) {
              fVar27 = fVar27 + DAT_0029f714;
            }
            local_3c = (double)fVar27;
            dVar15 = (double)uVar19;
            goto LAB_00161a0c;
          }
          *pdVar21 = (double)DAT_0029f710;
LAB_00161a4a:
          uVar19 = 0;
          uVar26 = param_2[0x14];
          uVar29 = uVar22;
          do {
            if (uVar26 == 0) {
              uVar18 = (uint)*(byte *)local_80;
              local_80 = (float *)((int)local_80 + 1);
              param_2[0x13] = uVar18;
              uVar26 = 8;
            }
            else {
              uVar18 = param_2[0x13];
            }
            uVar25 = uVar29;
            if (uVar26 <= uVar29) {
              uVar25 = uVar26;
            }
            uVar26 = uVar26 - uVar25;
            uVar29 = uVar29 - uVar25;
            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |
                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);
          } while (0 < (int)uVar29);
          param_2[0x14] = uVar26;
          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {
            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));
            if (local_68 < 0) {
              fVar27 = fVar27 + DAT_0029f714;
            }
            local_3c = (double)fVar27;
            dVar15 = (double)uVar19;
            if (local_3c < DAT_0029f138) {
              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;
              if ((int)uVar22 < 1) {
                dVar15 = 0.0;
                goto LAB_00161c0a;
              }
              goto LAB_00161b52;
            }
LAB_00161ed0:
            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;
            if (0 < (int)uVar22) goto LAB_00161b52;
            dVar15 = 0.0;
            goto LAB_00161f00;
          }
          *local_5c = (double)DAT_0029f710;
LAB_00161b52:
          uVar19 = 0;
          uVar26 = param_2[0x14];
          uVar29 = uVar22;
          do {
            if (uVar26 == 0) {
              uVar18 = (uint)*(byte *)local_80;
              local_80 = (float *)((int)local_80 + 1);
              uVar26 = 8;
              param_2[0x13] = uVar18;
            }
            else {
              uVar18 = param_2[0x13];
            }
            uVar25 = uVar29;
            if (uVar26 <= uVar29) {
              uVar25 = uVar26;
            }
            uVar26 = uVar26 - uVar25;
            uVar29 = uVar29 - uVar25;
            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |
                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);
          } while (0 < (int)uVar29);
          param_2[0x14] = uVar26;
          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {
            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));
            if (local_68 < 0) {
              fVar27 = fVar27 + DAT_0029f714;
            }
            local_3c = (double)fVar27;
            dVar15 = (double)uVar19;
            goto LAB_00161c0a;
          }
          dVar15 = (double)DAT_0029f710;
        }
        if (*(int *)(iVar20 + 0x34) != 0) {
          *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15;
        }
        local_64 = (float)((int)local_64 + 1);
        local_78 = local_78 + iVar6 * 8;
      } while (local_64 != (float)param_3);
    }
  }
  if (iVar2 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_0029eab0();
  }
  return;
}


CALL 0x00042795
ADD ECX,0x2780db
PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
MOV EBX,EAX
SUB ESP,0x7c
MOV EAX,dword ptr [ESP + 0x90]
MOV dword ptr [ESP],EDX
MOV dword ptr [ESP + 0x10],ECX
MOV dword ptr [ESP + 0x18],EAX
MOV EAX,dword ptr [ESP + 0x98]
MOV dword ptr [ESP + 0xc],EAX
MOV EAX,dword ptr [ESP + 0x9c]
MOV dword ptr [ESP + 0x14],EAX
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x6c],EAX
XOR EAX,EAX
TEST EBX,EBX
JZ 0x0016249d
CMP dword ptr [EBX + 0x3344],0xabacadab
JNZ 0x001624c3
MOV EAX,dword ptr [ESP]
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESP + 0x1c],EAX
SUB EAX,0x8
CMP EAX,0x38
JA 0x00161880
MOV ECX,dword ptr [ESP + 0x10]
MOV EDX,dword ptr [ECX + EAX*0x4 + 0xffeec03c]
ADD EDX,ECX
JMP EDX
MOV EAX,dword ptr [ESP + 0x1c]
MOV ECX,0x40
CMP EAX,0x40
CMOVBE ECX,EAX
MOV EAX,0x2
XOR EDX,EDX
XOR ESI,ESI
SUB ECX,0x1
SHLD EDX,EAX,CL
SHL EAX,CL
TEST CL,0x20
CMOVNZ EDX,EAX
CMOVNZ EAX,ESI
ADD EAX,-0x1
ADC EDX,-0x1
MOV dword ptr [ESP + 0x20],EAX
MOV dword ptr [ESP + 0x24],EDX
MOV EBP,dword ptr [ESP + 0x18]
TEST EBP,EBP
JLE 0x00161490
MOV EAX,dword ptr [EBX + 0x2a8]
MOV dword ptr [ESP + 0x28],0x0
MOV ESI,dword ptr [EAX + 0x8]
MOV dword ptr [ESP + 0x2c],EAX
MOV EAX,dword ptr [EAX + 0x14]
SHL ESI,0x3
SHL EAX,0x3
MOV dword ptr [ESP + 0x48],ESI
MOV dword ptr [ESP + 0x4c],EAX
MOV EAX,dword ptr [EBX + 0x298]
MOV dword ptr [ESP + 0x58],EAX
MOV EAX,dword ptr [ESP + 0x10]
FLD qword ptr [EAX + 0xffec6138]
LEA ESI,[ESI]
MOV EAX,dword ptr [ESP + 0x14]
MOV ESI,dword ptr [ESP + 0x48]
ADD ESI,EAX
ADD EAX,dword ptr [ESP + 0x4c]
MOV dword ptr [ESP + 0x30],ESI
MOV ESI,dword ptr [ESP + 0x1c]
MOV dword ptr [ESP + 0x38],EAX
TEST ESI,ESI
JLE 0x00161f30
MOV EAX,dword ptr [ESP]
XOR EBP,EBP
MOV EBX,dword ptr [EAX + 0x50]
JMP 0x00161368
MOV EAX,dword ptr [ESP]
MOV EAX,dword ptr [EAX + 0x4c]
CMP ESI,EBX
MOV EDX,EBX
MOV EDI,0xffffffff
CMOVBE EDX,ESI
SUB EBX,EDX
MOV ECX,EDX
SUB ESI,EDX
SHL EDI,CL
MOV ECX,EBX
SHR EAX,CL
NOT EDI
MOV ECX,EDX
AND EDI,EAX
SHL EBP,CL
OR EBP,EDI
TEST ESI,ESI
JLE 0x001618a8
TEST EBX,EBX
JNZ 0x00161338
MOV ECX,dword ptr [ESP + 0xc]
MOV EBX,dword ptr [ESP]
MOVZX EAX,byte ptr [ECX]
ADD ECX,0x1
MOV dword ptr [ESP + 0xc],ECX
MOV dword ptr [EBX + 0x4c],EAX
MOV EBX,0x8
JMP 0x0016133e
MOV EAX,dword ptr [ESP + 0x6c]
XOR EAX,dword ptr GS:[0x14]
JNZ 0x001624be
ADD ESP,0x7c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EDI,dword ptr [ESP + 0x1c]
MOV dword ptr [ESP + 0x20],0x0
MOV dword ptr [ESP + 0x24],0x0
TEST EDI,EDI
JZ 0x001612bc
JMP 0x00161285
MOV EAX,dword ptr [ESP]
MOV dword ptr [ESP + 0x40],EBP
MOV EDX,dword ptr [ESP + 0x24]
MOV dword ptr [ESP + 0x44],0x0
MOV dword ptr [EAX + 0x50],EBX
MOV EAX,dword ptr [ESP + 0x20]
CMP EDX,0x0
JA 0x001618d3
MOV ESI,dword ptr [ESP + 0x40]
CMP EAX,ESI
JC 0x00161cd0
MOV EDX,dword ptr [ESP + 0x24]
MOV EAX,dword ptr [ESP + 0x20]
FILD qword ptr [ESP + 0x40]
TEST EDX,EDX
MOV dword ptr [ESP + 0x44],EDX
MOV dword ptr [ESP + 0x40],EAX
FILD qword ptr [ESP + 0x40]
JNS 0x001618f9
MOV EAX,dword ptr [ESP + 0x10]
FADD dword ptr [EAX + 0xffec6714]
MOV EAX,dword ptr [ESP + 0x10]
FSTP qword ptr [ESP + 0x50]
FLD qword ptr [EAX + 0xffec6138]
FLD qword ptr [ESP + 0x50]
FUCOMI ST0,ST1
FSTP ST1
JNC 0x00161f70
FSTP ST0
MOV EAX,dword ptr [ESP + 0x10]
FMUL qword ptr [EAX + 0xffec6738]
FMUL dword ptr [EAX + 0xffec6710]
MOV EAX,dword ptr [ESP + 0x30]
FSTP qword ptr [EAX]
JMP 0x00161938
FSTP ST0
LEA ESI,[ESI]
MOV EAX,dword ptr [ESP]
XOR EBP,EBP
MOV ESI,dword ptr [ESP + 0x1c]
MOV EBX,dword ptr [EAX + 0x50]
JMP 0x0016197c
MOV EAX,dword ptr [ESP]
MOV EAX,dword ptr [EAX + 0x4c]
CMP ESI,EBX
MOV EDX,EBX
MOV EDI,0xffffffff
CMOVBE EDX,ESI
SUB EBX,EDX
MOV ECX,EDX
SUB ESI,EDX
SHL EDI,CL
MOV ECX,EBX
SHR EAX,CL
NOT EDI
MOV ECX,EDX
AND EDI,EAX
SHL EBP,CL
OR EBP,EDI
TEST ESI,ESI
JLE 0x001619a0
TEST EBX,EBX
JNZ 0x00161950
MOV EBX,dword ptr [ESP + 0xc]
MOV ECX,dword ptr [ESP]
MOVZX EAX,byte ptr [EBX]
LEA EDX,[EBX + 0x1]
MOV EBX,0x8
MOV dword ptr [ESP + 0xc],EDX
MOV dword ptr [ECX + 0x4c],EAX
JMP 0x00161956
MOV EAX,dword ptr [ESP]
XOR EDX,EDX
MOV ESI,dword ptr [ESP + 0x14]
MOV EDI,dword ptr [ESP + 0x24]
MOV dword ptr [EAX + 0x50],EBX
MOV EAX,dword ptr [ESP + 0x2c]
MOV EAX,dword ptr [EAX + 0x20]
LEA EAX,[ESI + EAX*0x8]
MOV ESI,dword ptr [ESP + 0x20]
MOV dword ptr [ESP + 0x30],EAX
MOV EAX,EBP
CMP EDX,EDI
JA 0x00161cb8
JC 0x001619d6
CMP EBP,ESI
JA 0x00161cb8
MOV EDI,dword ptr [ESP + 0x24]
MOV ESI,dword ptr [ESP + 0x20]
TEST EDI,EDI
MOV dword ptr [ESP + 0x44],EDI
MOV dword ptr [ESP + 0x40],ESI
FILD qword ptr [ESP + 0x40]
JNS 0x001619f8
MOV ESI,dword ptr [ESP + 0x10]
FADD dword ptr [ESI + 0xffec6714]
FSTP qword ptr [ESP + 0x50]
FLD qword ptr [ESP + 0x50]
MOV dword ptr [ESP + 0x40],EAX
MOV dword ptr [ESP + 0x44],EDX
FILD qword ptr [ESP + 0x40]
MOV EAX,dword ptr [ESP + 0x10]
FLD qword ptr [EAX + 0xffec6138]
FXCH ST2
FUCOMI ST0,ST2
FSTP ST2
JC 0x00161f18
FLD ST1
FDIVR dword ptr [EAX + 0xffec6718]
FMULP
MOV EAX,dword ptr [ESP + 0x10]
MOV ESI,dword ptr [ESP + 0x1c]
FMUL dword ptr [EAX + 0xffec6710]
MOV EAX,dword ptr [ESP + 0x38]
TEST ESI,ESI
FSTP qword ptr [EAX]
JLE 0x00161eb8
FSTP ST0
MOV EAX,dword ptr [ESP]
XOR EBP,EBP
MOV ESI,dword ptr [ESP + 0x1c]
MOV EBX,dword ptr [EAX + 0x50]
JMP 0x00161a8c
MOV EAX,dword ptr [ESP]
MOV EAX,dword ptr [EAX + 0x4c]
CMP EBX,ESI
MOV EDX,ESI
MOV EDI,0xffffffff
CMOVBE EDX,EBX
SUB EBX,EDX
MOV ECX,EDX
SUB ESI,EDX
SHL EDI,CL
MOV ECX,EBX
SHR EAX,CL
NOT EDI
MOV ECX,EDX
AND EDI,EAX
SHL EBP,CL
OR EBP,EDI
TEST ESI,ESI
JLE 0x00161ab0
TEST EBX,EBX
JNZ 0x00161a60
MOV ECX,dword ptr [ESP + 0xc]
MOV EBX,dword ptr [ESP]
MOVZX EAX,byte ptr [ECX]
ADD ECX,0x1
MOV dword ptr [ESP + 0xc],ECX
MOV dword ptr [EBX + 0x4c],EAX
MOV EBX,0x8
JMP 0x00161a66
MOV EAX,dword ptr [ESP]
XOR EDX,EDX
MOV EDI,dword ptr [ESP + 0x24]
MOV ESI,dword ptr [ESP + 0x20]
MOV dword ptr [EAX + 0x50],EBX
MOV EAX,EBP
CMP EDX,EDI
JA 0x00161ca0
JC 0x00161ad4
CMP EBP,ESI
JA 0x00161ca0
MOV EDI,dword ptr [ESP + 0x24]
MOV ESI,dword ptr [ESP + 0x20]
TEST EDI,EDI
MOV dword ptr [ESP + 0x3c],EDI
MOV dword ptr [ESP + 0x38],ESI
FILD qword ptr [ESP + 0x38]
JNS 0x00161af6
MOV ESI,dword ptr [ESP + 0x10]
FADD dword ptr [ESI + 0xffec6714]
MOV dword ptr [ESP + 0x38],EAX
MOV EAX,dword ptr [ESP + 0x10]
FSTP qword ptr [ESP + 0x50]
FLD qword ptr [ESP + 0x50]
MOV dword ptr [ESP + 0x3c],EDX
FILD qword ptr [ESP + 0x38]
FLD qword ptr [EAX + 0xffec6138]
FXCH ST2
FUCOMI ST0,ST2
FSTP ST2
JNC 0x00161ed0
MOV EAX,dword ptr [ESP + 0x10]
MOV ECX,dword ptr [ESP + 0x1c]
FMUL qword ptr [EAX + 0xffec6738]
TEST ECX,ECX
FMUL dword ptr [EAX + 0xffec6710]
MOV EAX,dword ptr [ESP + 0x30]
FSTP qword ptr [EAX]
JLE 0x00162496
FSTP ST0
JMP 0x00161b52
FSTP ST0
MOV EAX,dword ptr [ESP]
XOR EBP,EBP
MOV ESI,dword ptr [ESP + 0x1c]
MOV EBX,dword ptr [EAX + 0x50]
JMP 0x00161b8c
MOV EAX,dword ptr [ESP]
MOV EAX,dword ptr [EAX + 0x4c]
CMP EBX,ESI
MOV EDX,ESI
MOV EDI,0xffffffff
CMOVBE EDX,EBX
SUB EBX,EDX
MOV ECX,EDX
SUB ESI,EDX
SHL EDI,CL
MOV ECX,EBX
SHR EAX,CL
NOT EDI
MOV ECX,EDX
AND EDI,EAX
SHL EBP,CL
OR EBP,EDI
TEST ESI,ESI
JLE 0x00161bb0
TEST EBX,EBX
JNZ 0x00161b60
MOV EBX,dword ptr [ESP + 0xc]
MOV EDX,dword ptr [ESP]
MOVZX EAX,byte ptr [EBX]
ADD EBX,0x1
MOV dword ptr [ESP + 0xc],EBX
MOV EBX,0x8
MOV dword ptr [EDX + 0x4c],EAX
JMP 0x00161b66
MOV EAX,dword ptr [ESP]
XOR EDX,EDX
MOV EDI,dword ptr [ESP + 0x24]
MOV ESI,dword ptr [ESP + 0x20]
MOV dword ptr [EAX + 0x50],EBX
MOV EAX,EBP
CMP EDX,EDI
JA 0x00161c90
JC 0x00161bd4
CMP EBP,ESI
JA 0x00161c90
MOV EDI,dword ptr [ESP + 0x24]
MOV ESI,dword ptr [ESP + 0x20]
TEST EDI,EDI
MOV dword ptr [ESP + 0x34],EDI
MOV dword ptr [ESP + 0x30],ESI
FILD qword ptr [ESP + 0x30]
JNS 0x00161bf6
MOV ESI,dword ptr [ESP + 0x10]
FADD dword ptr [ESI + 0xffec6714]
FSTP qword ptr [ESP + 0x50]
FLD qword ptr [ESP + 0x50]
MOV dword ptr [ESP + 0x30],EAX
MOV dword ptr [ESP + 0x34],EDX
FILD qword ptr [ESP + 0x30]
MOV EAX,dword ptr [ESP + 0x10]
FLD qword ptr [EAX + 0xffec6138]
FXCH ST2
FUCOMI ST0,ST2
FSTP ST2
JNC 0x00161f00
FSTP ST1
MOV EAX,dword ptr [ESP + 0x10]
FLD qword ptr [EAX + 0xffec6738]
FMULP
MOV EAX,dword ptr [ESP + 0x10]
FMUL dword ptr [EAX + 0xffec6710]
MOV EAX,dword ptr [ESP + 0x2c]
MOV EDX,dword ptr [EAX + 0x34]
TEST EDX,EDX
JZ 0x00161c60
MOV ESI,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [EAX + 0x38]
FSUBR dword ptr [ESI + 0xffec6710]
MOV ESI,dword ptr [ESP + 0x14]
FSTP qword ptr [ESI + EAX*0x8]
JMP 0x00161c62
FSTP ST0
MOV EAX,dword ptr [ESP + 0x14]
MOV ESI,dword ptr [ESP + 0x58]
ADD dword ptr [ESP + 0x28],0x1
LEA EAX,[EAX + ESI*0x8]
MOV dword ptr [ESP + 0x14],EAX
MOV EAX,dword ptr [ESP + 0x28]
CMP EAX,dword ptr [ESP + 0x18]
JNZ 0x00161308
FSTP ST0
JMP 0x00161490
MOV EAX,dword ptr [ESP + 0x10]
FLD dword ptr [EAX + 0xffec6710]
JMP 0x00161c38
MOV ESI,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [ESP + 0x30]
FLD dword ptr [ESI + 0xffec6710]
FSTP qword ptr [EAX]
JMP 0x00161b52
MOV ESI,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [ESP + 0x38]
FLD dword ptr [ESI + 0xffec6710]
FSTP qword ptr [EAX]
JMP 0x00161a4a
MOV ESI,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [ESP + 0x30]
FLD dword ptr [ESI + 0xffec6710]
FSTP qword ptr [EAX]
JMP 0x00161938
MOV EAX,dword ptr [ESP + 0x10]
FLD qword ptr [EAX + 0xffec6138]
FXCH
FUCOMI ST0,ST1
FSTP ST1
JC 0x00162050
FLDZ
MOV EAX,dword ptr [ESP + 0x10]
FLD ST1
MOV EBX,dword ptr [ESP + 0x1c]
FDIVR dword ptr [EAX + 0xffec6718]
TEST EBX,EBX
FMULP
FMUL dword ptr [EAX + 0xffec6710]
MOV EAX,dword ptr [ESP + 0x30]
FSTP qword ptr [EAX]
JG 0x00161b50
FLDZ
NOP
LEA ESI,[ESI]
FXCH
MOV EAX,dword ptr [ESP + 0x10]
FDIVR dword ptr [EAX + 0xffec6718]
JMP 0x00161c2c
MOV EAX,dword ptr [ESP + 0x10]
FLD qword ptr [EAX + 0xffec6738]
JMP 0x00161a2a
MOV EDX,dword ptr [ESP + 0x24]
MOV EAX,dword ptr [ESP + 0x20]
TEST EDX,EDX
MOV dword ptr [ESP + 0x44],EDX
MOV dword ptr [ESP + 0x40],EAX
FILD qword ptr [ESP + 0x40]
JNS 0x00161f52
MOV EAX,dword ptr [ESP + 0x10]
FADD dword ptr [EAX + 0xffec6714]
FSTP qword ptr [ESP + 0x50]
FLD qword ptr [ESP + 0x50]
FUCOMI ST0,ST1
JC 0x001624e6
FLDZ
JMP 0x00161f72
FXCH
MOV EAX,dword ptr [ESP + 0x10]
FLD ST1
MOV EDI,dword ptr [ESP + 0x1c]
FDIVR dword ptr [EAX + 0xffec6718]
TEST EDI,EDI
FMULP
FMUL dword ptr [EAX + 0xffec6710]
MOV EAX,dword ptr [ESP + 0x30]
FSTP qword ptr [EAX]
JG 0x00161930
MOV EAX,dword ptr [ESP + 0x2c]
FLDZ
MOV ESI,dword ptr [ESP + 0x14]
MOV EAX,dword ptr [EAX + 0x20]
LEA EAX,[ESI + EAX*0x8]
MOV dword ptr [ESP + 0x30],EAX
JMP 0x00161a0c
MOV EAX,dword ptr [ESP + 0x30]
FLDZ
FSTP qword ptr [EAX]
FLDZ
JMP 0x00161c0a
FLDZ
JMP 0x00161c0a
LEA EAX,[ECX + 0xffeec660]
MOV EBX,ECX
PUSH EAX
LEA EAX,[ECX + 0xffeebc70]
PUSH 0x1123
PUSH EAX
LEA EAX,[ECX + 0xffede594]
PUSH EAX
CALL 0x000313d0
CALL 0x0029eab0
MOV EBX,dword ptr [ESP + 0x10]
LEA EAX,[EBX + 0xffeec660]
PUSH EAX
LEA EAX,[EBX + 0xffeebc70]
PUSH 0x1124
PUSH EAX
LEA EAX,[EBX + 0xffed1338]
PUSH EAX
CALL 0x000313d0
MOV EAX,dword ptr [ESP + 0x30]
FLDZ
FSTP qword ptr [EAX]
JMP 0x00161f98
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.cx replaced with injection: get_pc_thunk_cx */\n\nvoid __regparm2\nFUN_00160f20(int param_1,uint *param_2,int param_3,undefined4 param_4,float *param_5,int param_6)\n\n{\n  float *pfVar1;\n  int iVar2;\n  ushort uVar3;\n  ushort uVar4;\n  ushort uVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  float fVar9;\n  float fVar10;\n  float fVar11;\n  byte bVar12;\n  float fVar13;\n  double dVar14;\n  double dVar15;\n  double dVar16;\n  float fVar17;\n  uint uVar18;\n  uint uVar19;\n  int iVar20;\n  double *pdVar21;\n  uint uVar22;\n  byte bVar23;\n  int iVar24;\n  uint uVar25;\n  uint uVar26;\n  float fVar27;\n  double *pdVar28;\n  uint uVar29;\n  double *pdVar30;\n  ushort uVar31;\n  int iVar32;\n  int iVar33;\n  int in_GS_OFFSET;\n  longdouble lVar34;\n  float *local_80;\n  int local_78;\n  byte local_6c;\n  byte bStack_6b;\n  ushort uStack_6a;\n  int local_68;\n  float local_64;\n  float local_60;\n  double *local_5c;\n  double local_3c;\n  float fStack_2c;\n  undefined4 uStack_28;\n  \n  fVar10 = DAT_002c5824;\n  fVar9 = DAT_002a7ff0;\n  fVar13 = DAT_002a7fec;\n  fVar27 = DAT_0029f710;\n  dVar16 = DAT_0029f138;\n  local_80 = param_5;\n  local_78 = param_6;\n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image != (Image *) NULL","MagickCore/quantum-import.c",0x1123,"ImportRGBOQuantum"\n                 );\n  }\n  if (*(int *)(param_1 + 0x3344) != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image->signature == MagickCoreSignature","MagickCore/quantum-import.c",0x1124,\n                  "ImportRGBOQuantum");\n  }\n  uVar22 = *param_2;\n  switch(uVar22) {\n  case 8:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar32 = 0;\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      uVar22 = param_2[9];\n      do {\n        bVar12 = *(byte *)((int)param_5 + 1);\n        bVar23 = *(byte *)((int)param_5 + 2);\n        *(double *)(param_6 + iVar24 * 8) = (double)((float)*(byte *)param_5 * fVar9);\n        *(double *)(param_6 + iVar6 * 8) = (double)((float)bVar12 * fVar9);\n        *(double *)(param_6 + iVar7 * 8) = (double)((float)bVar23 * fVar9);\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9);\n        }\n        param_5 = (float *)((int)param_5 + uVar22 + 4);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;\n  default:\n    local_6c = 0;\n    bStack_6b = 0;\n    uStack_6a = 0;\n    local_68 = 0;\n    if (uVar22 != 0) goto LAB_00161285;\n    goto LAB_001612bc;\n  case 10:\n    if (param_2[0xb] == 0) {\n      if (0 < param_3) {\n        fVar27 = 0.0;\n        local_6c = 0;\n        bStack_6b = 0;\n        uStack_6a = 0;\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        uVar22 = param_2[9];\n        iVar33 = *(int *)(param_1 + 0x298);\n        uVar26 = 0;\n        do {\n          iVar24 = 0;\n          uVar29 = uVar26;\ncode_r0x001620a2:\n          if (uVar29 % 3 == 1) {\n            uVar26 = (uint)fVar27 >> 6 & 0xffc0;\ncode_r0x001620cb:\n            dVar16 = (double)uVar26;\n            if (iVar24 != 2) goto code_r0x001620d7;\ncode_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;\ncode_r0x001620f8:\n            uVar29 = uVar29 + 1;\n            iVar24 = iVar24 + 1;\n            goto code_r0x001620a2;\n          }\n          if (uVar29 % 3 == 2) {\n            uVar26 = ((uint)fVar27 & 0xffc) << 4;\n            goto code_r0x001620cb;\n          }\n          pfVar1 = local_80 + 1;\n          fVar27 = *local_80;\n          if (param_2[0x10] != 1) {\n            fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          }\n          dVar16 = (double)(((uint)fVar27 >> 0x16) << 6);\n          local_80 = pfVar1;\n          if (iVar24 == 2) goto code_r0x00162130;\ncode_r0x001620d7:\n          uVar26 = uVar29 + 1;\n          if (iVar24 != 3) {\n            if (iVar24 == 1) {\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }\n            else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }\n            goto code_r0x001620f8;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;\n          }\ncode_r0x0016217a:\n          iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar24;\n          bStack_6b = (byte)((uint)iVar24 >> 8);\n          uStack_6a = (ushort)((uint)iVar24 >> 0x10);\n          local_80 = (float *)((int)local_80 + uVar22);\n          local_78 = local_78 + iVar33 * 8;\n        } while (iVar24 != param_3);\n      }\n    }\n    else if (0 < param_3) {\n      iVar33 = *(int *)(param_1 + 0x2a8);\n      iVar20 = 0;\n      iVar24 = *(int *)(iVar33 + 8);\n      iVar6 = *(int *)(param_1 + 0x298);\n      iVar7 = *(int *)(iVar33 + 0x34);\n      iVar8 = *(int *)(iVar33 + 0x20);\n      iVar32 = *(int *)(iVar33 + 0x14);\n      do {\n        uVar29 = 0;\n        uVar26 = 10;\n        uVar22 = param_2[0x14];\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar26 <= uVar22) {\n            uVar18 = uVar26;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar24 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar32 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        uVar26 = 0;\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar8 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar29 <= uVar22) {\n            uVar18 = uVar29;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar29 = uVar29 - uVar18;\n          uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar29);\n        param_2[0x14] = uVar22;\n        if (iVar7 != 0) {\n          *(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));\n        }\n        iVar20 = iVar20 + 1;\n        local_78 = local_78 + iVar6 * 8;\n      } while (iVar20 != param_3);\n    }\n    break;\n  case 0x10:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        uVar22 = param_2[0x10];\n        do {\n          if (uVar22 == 1) {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          else {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          lVar34 = (longdouble)FUN_00159350();\n          if (*(int *)(iVar33 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n    }\n    else if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(iVar20 + 0x20);\n      iVar7 = *(int *)(iVar20 + 8);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        uVar3 = *(ushort *)(param_5 + 1);\n        uVar31 = *(ushort *)((int)param_5 + 6);\n        uVar4 = *(ushort *)param_5;\n        pdVar21 = (double *)(iVar24 * 8 + param_6);\n        uVar5 = *(ushort *)((int)param_5 + 2);\n        pdVar28 = (double *)(iVar6 * 8 + param_6);\n        pdVar30 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)uVar4;\n          *pdVar21 = (double)uVar5;\n          *pdVar28 = (double)uVar3;\n        }\n        else {\n          uVar31 = uVar31 << 8 | uVar31 >> 8;\n          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);\n          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);\n          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 8);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;\n  case 0x18:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }\n    goto code_r0x001616dd;\n  case 0x20:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        local_5c = (double *)0x0;\n        uVar22 = param_2[9];\n        uVar26 = param_2[0x10];\n        iVar33 = *(int *)(param_1 + 0x298);\n        do {\n          local_64 = *param_5;\n          if (uVar26 != 1) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3));\n          }\n          fVar13 = (local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar27 = fVar10;\n          if ((fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)) {\n            fVar27 = fVar13;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 8) * 8) = (double)fVar27;\n          if (uVar26 == 1) {\n            fVar27 = param_5[1];\n          }\n          else {\n            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));\n          }\n          fVar27 = (fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            local_60 = param_5[2];\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));\n          }\n          fVar27 = (local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            fVar27 = param_5[3];\n            local_6c = SUB41(fVar27,0);\n            bStack_6b = (byte)((uint)fVar27 >> 8);\n            uStack_6a = (ushort)((uint)fVar27 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);\n            bStack_6b = *(byte *)((int)param_5 + 0xe);\n            local_6c = *(byte *)((int)param_5 + 0xf);\n          }\n          fVar27 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          param_5 = (float *)((int)param_5 + uVar22 + 0x10);\n          param_6 = param_6 + iVar33 * 8;\n        } while (local_5c != (double *)param_3);\n      }\n      break;\n    }\ncode_r0x001616dd:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        fVar17 = DAT_002a7fec;\n        fVar27 = param_5[3];\n        fVar9 = param_5[1];\n        pdVar21 = (double *)(iVar6 * 8 + param_6);\n        fVar10 = param_5[2];\n        pdVar30 = (double *)(iVar24 * 8 + param_6);\n        fVar11 = *param_5;\n        pdVar28 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec);\n          *pdVar21 = (double)((float)(uint)fVar9 / fVar17);\n          *pdVar28 = (double)((float)(uint)fVar10 / fVar17);\n        }\n        else {\n          uVar3 = (ushort)((uint)fVar11 >> 8);\n          uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);\n          fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          *pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13);\n          *pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);\n          *pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 0x10);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;\n  case 0x40:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }\nLAB_00161285:\n    uVar26 = 0;\n    if (uVar22 < 0x41) {\n      uVar26 = uVar22;\n    }\n    bVar23 = (byte)(uVar26 - 1);\n    bVar12 = bVar23 & 0x1f;\n    uVar18 = 2 << (bVar23 & 0x1f);\n    uVar19 = uVar18;\n    uVar29 = 0 << bVar12 | 2U >> 0x20 - bVar12;\n    if ((uVar26 - 1 & 0x20) != 0) {\n      uVar19 = 0;\n      uVar29 = uVar18;\n    }\n    iVar20 = uVar19 - 1;\n    local_68 = (uVar29 - 1) + (uint)(uVar19 != 0);\n    local_6c = (byte)iVar20;\n    bStack_6b = (byte)((uint)iVar20 >> 8);\n    uStack_6a = (ushort)((uint)iVar20 >> 0x10);\nLAB_001612bc:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      local_64 = 0.0;\n      iVar33 = *(int *)(iVar20 + 8);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(param_1 + 0x298);\n      do {\n        pdVar28 = (double *)(iVar33 * 8 + local_78);\n        pdVar21 = (double *)(local_78 + iVar24 * 8);\n        if ((int)uVar22 < 1) {\n          fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (local_68 < 0) {\n            fVar27 = fVar27 + DAT_0029f714;\n          }\n          local_3c = (double)fVar27;\n          if (local_3c < dVar16) {\n            *pdVar28 = 0.0;\n          }\n          else {\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }\n          dVar15 = 0.0;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\nLAB_00161a0c:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          *pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710;\n          if (0 < (int)uVar22) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar15 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar15 = 0.0;\nLAB_00161c0a:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar15 = dVar14 * dVar15 * (double)DAT_0029f710;\n        }\n        else {\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {\n            *pdVar28 = (double)DAT_0029f710;\n          }\n          else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }\n          *pdVar21 = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }\n          dVar15 = (double)DAT_0029f710;\n        }\n        if (*(int *)(iVar20 + 0x34) != 0) {\n          *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15;\n        }\n        local_64 = (float)((int)local_64 + 1);\n        local_78 = local_78 + iVar6 * 8;\n      } while (local_64 != (float)param_3);\n    }\n  }\n  if (iVar2 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0029eab0();\n  }\n  return;\n}\n\n" comment (function_definition "void __regparm2\nFUN_00160f20(int param_1,uint *param_2,int param_3,undefined4 param_4,float *param_5,int param_6)\n\n{\n  float *pfVar1;\n  int iVar2;\n  ushort uVar3;\n  ushort uVar4;\n  ushort uVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  float fVar9;\n  float fVar10;\n  float fVar11;\n  byte bVar12;\n  float fVar13;\n  double dVar14;\n  double dVar15;\n  double dVar16;\n  float fVar17;\n  uint uVar18;\n  uint uVar19;\n  int iVar20;\n  double *pdVar21;\n  uint uVar22;\n  byte bVar23;\n  int iVar24;\n  uint uVar25;\n  uint uVar26;\n  float fVar27;\n  double *pdVar28;\n  uint uVar29;\n  double *pdVar30;\n  ushort uVar31;\n  int iVar32;\n  int iVar33;\n  int in_GS_OFFSET;\n  longdouble lVar34;\n  float *local_80;\n  int local_78;\n  byte local_6c;\n  byte bStack_6b;\n  ushort uStack_6a;\n  int local_68;\n  float local_64;\n  float local_60;\n  double *local_5c;\n  double local_3c;\n  float fStack_2c;\n  undefined4 uStack_28;\n  \n  fVar10 = DAT_002c5824;\n  fVar9 = DAT_002a7ff0;\n  fVar13 = DAT_002a7fec;\n  fVar27 = DAT_0029f710;\n  dVar16 = DAT_0029f138;\n  local_80 = param_5;\n  local_78 = param_6;\n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image != (Image *) NULL","MagickCore/quantum-import.c",0x1123,"ImportRGBOQuantum"\n                 );\n  }\n  if (*(int *)(param_1 + 0x3344) != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image->signature == MagickCoreSignature","MagickCore/quantum-import.c",0x1124,\n                  "ImportRGBOQuantum");\n  }\n  uVar22 = *param_2;\n  switch(uVar22) {\n  case 8:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar32 = 0;\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      uVar22 = param_2[9];\n      do {\n        bVar12 = *(byte *)((int)param_5 + 1);\n        bVar23 = *(byte *)((int)param_5 + 2);\n        *(double *)(param_6 + iVar24 * 8) = (double)((float)*(byte *)param_5 * fVar9);\n        *(double *)(param_6 + iVar6 * 8) = (double)((float)bVar12 * fVar9);\n        *(double *)(param_6 + iVar7 * 8) = (double)((float)bVar23 * fVar9);\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9);\n        }\n        param_5 = (float *)((int)param_5 + uVar22 + 4);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;\n  default:\n    local_6c = 0;\n    bStack_6b = 0;\n    uStack_6a = 0;\n    local_68 = 0;\n    if (uVar22 != 0) goto LAB_00161285;\n    goto LAB_001612bc;\n  case 10:\n    if (param_2[0xb] == 0) {\n      if (0 < param_3) {\n        fVar27 = 0.0;\n        local_6c = 0;\n        bStack_6b = 0;\n        uStack_6a = 0;\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        uVar22 = param_2[9];\n        iVar33 = *(int *)(param_1 + 0x298);\n        uVar26 = 0;\n        do {\n          iVar24 = 0;\n          uVar29 = uVar26;\ncode_r0x001620a2:\n          if (uVar29 % 3 == 1) {\n            uVar26 = (uint)fVar27 >> 6 & 0xffc0;\ncode_r0x001620cb:\n            dVar16 = (double)uVar26;\n            if (iVar24 != 2) goto code_r0x001620d7;\ncode_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;\ncode_r0x001620f8:\n            uVar29 = uVar29 + 1;\n            iVar24 = iVar24 + 1;\n            goto code_r0x001620a2;\n          }\n          if (uVar29 % 3 == 2) {\n            uVar26 = ((uint)fVar27 & 0xffc) << 4;\n            goto code_r0x001620cb;\n          }\n          pfVar1 = local_80 + 1;\n          fVar27 = *local_80;\n          if (param_2[0x10] != 1) {\n            fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          }\n          dVar16 = (double)(((uint)fVar27 >> 0x16) << 6);\n          local_80 = pfVar1;\n          if (iVar24 == 2) goto code_r0x00162130;\ncode_r0x001620d7:\n          uVar26 = uVar29 + 1;\n          if (iVar24 != 3) {\n            if (iVar24 == 1) {\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }\n            else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }\n            goto code_r0x001620f8;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;\n          }\ncode_r0x0016217a:\n          iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar24;\n          bStack_6b = (byte)((uint)iVar24 >> 8);\n          uStack_6a = (ushort)((uint)iVar24 >> 0x10);\n          local_80 = (float *)((int)local_80 + uVar22);\n          local_78 = local_78 + iVar33 * 8;\n        } while (iVar24 != param_3);\n      }\n    }\n    else if (0 < param_3) {\n      iVar33 = *(int *)(param_1 + 0x2a8);\n      iVar20 = 0;\n      iVar24 = *(int *)(iVar33 + 8);\n      iVar6 = *(int *)(param_1 + 0x298);\n      iVar7 = *(int *)(iVar33 + 0x34);\n      iVar8 = *(int *)(iVar33 + 0x20);\n      iVar32 = *(int *)(iVar33 + 0x14);\n      do {\n        uVar29 = 0;\n        uVar26 = 10;\n        uVar22 = param_2[0x14];\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar26 <= uVar22) {\n            uVar18 = uVar26;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar24 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar32 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        uVar26 = 0;\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar8 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar29 <= uVar22) {\n            uVar18 = uVar29;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar29 = uVar29 - uVar18;\n          uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar29);\n        param_2[0x14] = uVar22;\n        if (iVar7 != 0) {\n          *(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));\n        }\n        iVar20 = iVar20 + 1;\n        local_78 = local_78 + iVar6 * 8;\n      } while (iVar20 != param_3);\n    }\n    break;\n  case 0x10:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        uVar22 = param_2[0x10];\n        do {\n          if (uVar22 == 1) {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          else {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          lVar34 = (longdouble)FUN_00159350();\n          if (*(int *)(iVar33 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n    }\n    else if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(iVar20 + 0x20);\n      iVar7 = *(int *)(iVar20 + 8);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        uVar3 = *(ushort *)(param_5 + 1);\n        uVar31 = *(ushort *)((int)param_5 + 6);\n        uVar4 = *(ushort *)param_5;\n        pdVar21 = (double *)(iVar24 * 8 + param_6);\n        uVar5 = *(ushort *)((int)param_5 + 2);\n        pdVar28 = (double *)(iVar6 * 8 + param_6);\n        pdVar30 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)uVar4;\n          *pdVar21 = (double)uVar5;\n          *pdVar28 = (double)uVar3;\n        }\n        else {\n          uVar31 = uVar31 << 8 | uVar31 >> 8;\n          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);\n          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);\n          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 8);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;\n  case 0x18:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }\n    goto code_r0x001616dd;\n  case 0x20:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        local_5c = (double *)0x0;\n        uVar22 = param_2[9];\n        uVar26 = param_2[0x10];\n        iVar33 = *(int *)(param_1 + 0x298);\n        do {\n          local_64 = *param_5;\n          if (uVar26 != 1) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3));\n          }\n          fVar13 = (local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar27 = fVar10;\n          if ((fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)) {\n            fVar27 = fVar13;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 8) * 8) = (double)fVar27;\n          if (uVar26 == 1) {\n            fVar27 = param_5[1];\n          }\n          else {\n            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));\n          }\n          fVar27 = (fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            local_60 = param_5[2];\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));\n          }\n          fVar27 = (local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            fVar27 = param_5[3];\n            local_6c = SUB41(fVar27,0);\n            bStack_6b = (byte)((uint)fVar27 >> 8);\n            uStack_6a = (ushort)((uint)fVar27 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);\n            bStack_6b = *(byte *)((int)param_5 + 0xe);\n            local_6c = *(byte *)((int)param_5 + 0xf);\n          }\n          fVar27 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          param_5 = (float *)((int)param_5 + uVar22 + 0x10);\n          param_6 = param_6 + iVar33 * 8;\n        } while (local_5c != (double *)param_3);\n      }\n      break;\n    }\ncode_r0x001616dd:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        fVar17 = DAT_002a7fec;\n        fVar27 = param_5[3];\n        fVar9 = param_5[1];\n        pdVar21 = (double *)(iVar6 * 8 + param_6);\n        fVar10 = param_5[2];\n        pdVar30 = (double *)(iVar24 * 8 + param_6);\n        fVar11 = *param_5;\n        pdVar28 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec);\n          *pdVar21 = (double)((float)(uint)fVar9 / fVar17);\n          *pdVar28 = (double)((float)(uint)fVar10 / fVar17);\n        }\n        else {\n          uVar3 = (ushort)((uint)fVar11 >> 8);\n          uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);\n          fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          *pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13);\n          *pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);\n          *pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 0x10);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;\n  case 0x40:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }\nLAB_00161285:\n    uVar26 = 0;\n    if (uVar22 < 0x41) {\n      uVar26 = uVar22;\n    }\n    bVar23 = (byte)(uVar26 - 1);\n    bVar12 = bVar23 & 0x1f;\n    uVar18 = 2 << (bVar23 & 0x1f);\n    uVar19 = uVar18;\n    uVar29 = 0 << bVar12 | 2U >> 0x20 - bVar12;\n    if ((uVar26 - 1 & 0x20) != 0) {\n      uVar19 = 0;\n      uVar29 = uVar18;\n    }\n    iVar20 = uVar19 - 1;\n    local_68 = (uVar29 - 1) + (uint)(uVar19 != 0);\n    local_6c = (byte)iVar20;\n    bStack_6b = (byte)((uint)iVar20 >> 8);\n    uStack_6a = (ushort)((uint)iVar20 >> 0x10);\nLAB_001612bc:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      local_64 = 0.0;\n      iVar33 = *(int *)(iVar20 + 8);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(param_1 + 0x298);\n      do {\n        pdVar28 = (double *)(iVar33 * 8 + local_78);\n        pdVar21 = (double *)(local_78 + iVar24 * 8);\n        if ((int)uVar22 < 1) {\n          fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (local_68 < 0) {\n            fVar27 = fVar27 + DAT_0029f714;\n          }\n          local_3c = (double)fVar27;\n          if (local_3c < dVar16) {\n            *pdVar28 = 0.0;\n          }\n          else {\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }\n          dVar15 = 0.0;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\nLAB_00161a0c:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          *pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710;\n          if (0 < (int)uVar22) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar15 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar15 = 0.0;\nLAB_00161c0a:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar15 = dVar14 * dVar15 * (double)DAT_0029f710;\n        }\n        else {\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {\n            *pdVar28 = (double)DAT_0029f710;\n          }\n          else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }\n          *pdVar21 = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }\n          dVar15 = (double)DAT_0029f710;\n        }\n        if (*(int *)(iVar20 + 0x34) != 0) {\n          *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15;\n        }\n        local_64 = (float)((int)local_64 + 1);\n        local_78 = local_78 + iVar6 * 8;\n      } while (local_64 != (float)param_3);\n    }\n  }\n  if (iVar2 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0029eab0();\n  }\n  return;\n}" primitive_type (ERROR "__regparm2" identifier) (function_declarator "FUN_00160f20(int param_1,uint *param_2,int param_3,undefined4 param_4,float *param_5,int param_6)" identifier (parameter_list "(int param_1,uint *param_2,int param_3,undefined4 param_4,float *param_5,int param_6)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "float *param_5" primitive_type (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "int param_6" primitive_type identifier) ))) (compound_statement "{\n  float *pfVar1;\n  int iVar2;\n  ushort uVar3;\n  ushort uVar4;\n  ushort uVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  float fVar9;\n  float fVar10;\n  float fVar11;\n  byte bVar12;\n  float fVar13;\n  double dVar14;\n  double dVar15;\n  double dVar16;\n  float fVar17;\n  uint uVar18;\n  uint uVar19;\n  int iVar20;\n  double *pdVar21;\n  uint uVar22;\n  byte bVar23;\n  int iVar24;\n  uint uVar25;\n  uint uVar26;\n  float fVar27;\n  double *pdVar28;\n  uint uVar29;\n  double *pdVar30;\n  ushort uVar31;\n  int iVar32;\n  int iVar33;\n  int in_GS_OFFSET;\n  longdouble lVar34;\n  float *local_80;\n  int local_78;\n  byte local_6c;\n  byte bStack_6b;\n  ushort uStack_6a;\n  int local_68;\n  float local_64;\n  float local_60;\n  double *local_5c;\n  double local_3c;\n  float fStack_2c;\n  undefined4 uStack_28;\n  \n  fVar10 = DAT_002c5824;\n  fVar9 = DAT_002a7ff0;\n  fVar13 = DAT_002a7fec;\n  fVar27 = DAT_0029f710;\n  dVar16 = DAT_0029f138;\n  local_80 = param_5;\n  local_78 = param_6;\n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image != (Image *) NULL","MagickCore/quantum-import.c",0x1123,"ImportRGBOQuantum"\n                 );\n  }\n  if (*(int *)(param_1 + 0x3344) != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image->signature == MagickCoreSignature","MagickCore/quantum-import.c",0x1124,\n                  "ImportRGBOQuantum");\n  }\n  uVar22 = *param_2;\n  switch(uVar22) {\n  case 8:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar32 = 0;\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      uVar22 = param_2[9];\n      do {\n        bVar12 = *(byte *)((int)param_5 + 1);\n        bVar23 = *(byte *)((int)param_5 + 2);\n        *(double *)(param_6 + iVar24 * 8) = (double)((float)*(byte *)param_5 * fVar9);\n        *(double *)(param_6 + iVar6 * 8) = (double)((float)bVar12 * fVar9);\n        *(double *)(param_6 + iVar7 * 8) = (double)((float)bVar23 * fVar9);\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9);\n        }\n        param_5 = (float *)((int)param_5 + uVar22 + 4);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;\n  default:\n    local_6c = 0;\n    bStack_6b = 0;\n    uStack_6a = 0;\n    local_68 = 0;\n    if (uVar22 != 0) goto LAB_00161285;\n    goto LAB_001612bc;\n  case 10:\n    if (param_2[0xb] == 0) {\n      if (0 < param_3) {\n        fVar27 = 0.0;\n        local_6c = 0;\n        bStack_6b = 0;\n        uStack_6a = 0;\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        uVar22 = param_2[9];\n        iVar33 = *(int *)(param_1 + 0x298);\n        uVar26 = 0;\n        do {\n          iVar24 = 0;\n          uVar29 = uVar26;\ncode_r0x001620a2:\n          if (uVar29 % 3 == 1) {\n            uVar26 = (uint)fVar27 >> 6 & 0xffc0;\ncode_r0x001620cb:\n            dVar16 = (double)uVar26;\n            if (iVar24 != 2) goto code_r0x001620d7;\ncode_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;\ncode_r0x001620f8:\n            uVar29 = uVar29 + 1;\n            iVar24 = iVar24 + 1;\n            goto code_r0x001620a2;\n          }\n          if (uVar29 % 3 == 2) {\n            uVar26 = ((uint)fVar27 & 0xffc) << 4;\n            goto code_r0x001620cb;\n          }\n          pfVar1 = local_80 + 1;\n          fVar27 = *local_80;\n          if (param_2[0x10] != 1) {\n            fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          }\n          dVar16 = (double)(((uint)fVar27 >> 0x16) << 6);\n          local_80 = pfVar1;\n          if (iVar24 == 2) goto code_r0x00162130;\ncode_r0x001620d7:\n          uVar26 = uVar29 + 1;\n          if (iVar24 != 3) {\n            if (iVar24 == 1) {\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }\n            else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }\n            goto code_r0x001620f8;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;\n          }\ncode_r0x0016217a:\n          iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar24;\n          bStack_6b = (byte)((uint)iVar24 >> 8);\n          uStack_6a = (ushort)((uint)iVar24 >> 0x10);\n          local_80 = (float *)((int)local_80 + uVar22);\n          local_78 = local_78 + iVar33 * 8;\n        } while (iVar24 != param_3);\n      }\n    }\n    else if (0 < param_3) {\n      iVar33 = *(int *)(param_1 + 0x2a8);\n      iVar20 = 0;\n      iVar24 = *(int *)(iVar33 + 8);\n      iVar6 = *(int *)(param_1 + 0x298);\n      iVar7 = *(int *)(iVar33 + 0x34);\n      iVar8 = *(int *)(iVar33 + 0x20);\n      iVar32 = *(int *)(iVar33 + 0x14);\n      do {\n        uVar29 = 0;\n        uVar26 = 10;\n        uVar22 = param_2[0x14];\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar26 <= uVar22) {\n            uVar18 = uVar26;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar24 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar32 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        uVar26 = 0;\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar8 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar29 <= uVar22) {\n            uVar18 = uVar29;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar29 = uVar29 - uVar18;\n          uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar29);\n        param_2[0x14] = uVar22;\n        if (iVar7 != 0) {\n          *(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));\n        }\n        iVar20 = iVar20 + 1;\n        local_78 = local_78 + iVar6 * 8;\n      } while (iVar20 != param_3);\n    }\n    break;\n  case 0x10:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        uVar22 = param_2[0x10];\n        do {\n          if (uVar22 == 1) {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          else {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          lVar34 = (longdouble)FUN_00159350();\n          if (*(int *)(iVar33 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n    }\n    else if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(iVar20 + 0x20);\n      iVar7 = *(int *)(iVar20 + 8);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        uVar3 = *(ushort *)(param_5 + 1);\n        uVar31 = *(ushort *)((int)param_5 + 6);\n        uVar4 = *(ushort *)param_5;\n        pdVar21 = (double *)(iVar24 * 8 + param_6);\n        uVar5 = *(ushort *)((int)param_5 + 2);\n        pdVar28 = (double *)(iVar6 * 8 + param_6);\n        pdVar30 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)uVar4;\n          *pdVar21 = (double)uVar5;\n          *pdVar28 = (double)uVar3;\n        }\n        else {\n          uVar31 = uVar31 << 8 | uVar31 >> 8;\n          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);\n          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);\n          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 8);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;\n  case 0x18:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }\n    goto code_r0x001616dd;\n  case 0x20:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        local_5c = (double *)0x0;\n        uVar22 = param_2[9];\n        uVar26 = param_2[0x10];\n        iVar33 = *(int *)(param_1 + 0x298);\n        do {\n          local_64 = *param_5;\n          if (uVar26 != 1) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3));\n          }\n          fVar13 = (local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar27 = fVar10;\n          if ((fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)) {\n            fVar27 = fVar13;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 8) * 8) = (double)fVar27;\n          if (uVar26 == 1) {\n            fVar27 = param_5[1];\n          }\n          else {\n            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));\n          }\n          fVar27 = (fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            local_60 = param_5[2];\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));\n          }\n          fVar27 = (local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            fVar27 = param_5[3];\n            local_6c = SUB41(fVar27,0);\n            bStack_6b = (byte)((uint)fVar27 >> 8);\n            uStack_6a = (ushort)((uint)fVar27 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);\n            bStack_6b = *(byte *)((int)param_5 + 0xe);\n            local_6c = *(byte *)((int)param_5 + 0xf);\n          }\n          fVar27 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          param_5 = (float *)((int)param_5 + uVar22 + 0x10);\n          param_6 = param_6 + iVar33 * 8;\n        } while (local_5c != (double *)param_3);\n      }\n      break;\n    }\ncode_r0x001616dd:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        fVar17 = DAT_002a7fec;\n        fVar27 = param_5[3];\n        fVar9 = param_5[1];\n        pdVar21 = (double *)(iVar6 * 8 + param_6);\n        fVar10 = param_5[2];\n        pdVar30 = (double *)(iVar24 * 8 + param_6);\n        fVar11 = *param_5;\n        pdVar28 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec);\n          *pdVar21 = (double)((float)(uint)fVar9 / fVar17);\n          *pdVar28 = (double)((float)(uint)fVar10 / fVar17);\n        }\n        else {\n          uVar3 = (ushort)((uint)fVar11 >> 8);\n          uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);\n          fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          *pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13);\n          *pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);\n          *pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 0x10);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;\n  case 0x40:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }\nLAB_00161285:\n    uVar26 = 0;\n    if (uVar22 < 0x41) {\n      uVar26 = uVar22;\n    }\n    bVar23 = (byte)(uVar26 - 1);\n    bVar12 = bVar23 & 0x1f;\n    uVar18 = 2 << (bVar23 & 0x1f);\n    uVar19 = uVar18;\n    uVar29 = 0 << bVar12 | 2U >> 0x20 - bVar12;\n    if ((uVar26 - 1 & 0x20) != 0) {\n      uVar19 = 0;\n      uVar29 = uVar18;\n    }\n    iVar20 = uVar19 - 1;\n    local_68 = (uVar29 - 1) + (uint)(uVar19 != 0);\n    local_6c = (byte)iVar20;\n    bStack_6b = (byte)((uint)iVar20 >> 8);\n    uStack_6a = (ushort)((uint)iVar20 >> 0x10);\nLAB_001612bc:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      local_64 = 0.0;\n      iVar33 = *(int *)(iVar20 + 8);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(param_1 + 0x298);\n      do {\n        pdVar28 = (double *)(iVar33 * 8 + local_78);\n        pdVar21 = (double *)(local_78 + iVar24 * 8);\n        if ((int)uVar22 < 1) {\n          fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (local_68 < 0) {\n            fVar27 = fVar27 + DAT_0029f714;\n          }\n          local_3c = (double)fVar27;\n          if (local_3c < dVar16) {\n            *pdVar28 = 0.0;\n          }\n          else {\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }\n          dVar15 = 0.0;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\nLAB_00161a0c:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          *pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710;\n          if (0 < (int)uVar22) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar15 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar15 = 0.0;\nLAB_00161c0a:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar15 = dVar14 * dVar15 * (double)DAT_0029f710;\n        }\n        else {\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {\n            *pdVar28 = (double)DAT_0029f710;\n          }\n          else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }\n          *pdVar21 = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }\n          dVar15 = (double)DAT_0029f710;\n        }\n        if (*(int *)(iVar20 + 0x34) != 0) {\n          *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15;\n        }\n        local_64 = (float)((int)local_64 + 1);\n        local_78 = local_78 + iVar6 * 8;\n      } while (local_64 != (float)param_3);\n    }\n  }\n  if (iVar2 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0029eab0();\n  }\n  return;\n}" { (declaration "float *pfVar1;" primitive_type (pointer_declarator "*pfVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "ushort uVar3;" type_identifier identifier ;) (declaration "ushort uVar4;" type_identifier identifier ;) (declaration "ushort uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "float fVar9;" primitive_type identifier ;) (declaration "float fVar10;" primitive_type identifier ;) (declaration "float fVar11;" primitive_type identifier ;) (declaration "byte bVar12;" type_identifier identifier ;) (declaration "float fVar13;" primitive_type identifier ;) (declaration "double dVar14;" primitive_type identifier ;) (declaration "double dVar15;" primitive_type identifier ;) (declaration "double dVar16;" primitive_type identifier ;) (declaration "float fVar17;" primitive_type identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "uint uVar19;" type_identifier identifier ;) (declaration "int iVar20;" primitive_type identifier ;) (declaration "double *pdVar21;" primitive_type (pointer_declarator "*pdVar21" * identifier) ;) (declaration "uint uVar22;" type_identifier identifier ;) (declaration "byte bVar23;" type_identifier identifier ;) (declaration "int iVar24;" primitive_type identifier ;) (declaration "uint uVar25;" type_identifier identifier ;) (declaration "uint uVar26;" type_identifier identifier ;) (declaration "float fVar27;" primitive_type identifier ;) (declaration "double *pdVar28;" primitive_type (pointer_declarator "*pdVar28" * identifier) ;) (declaration "uint uVar29;" type_identifier identifier ;) (declaration "double *pdVar30;" primitive_type (pointer_declarator "*pdVar30" * identifier) ;) (declaration "ushort uVar31;" type_identifier identifier ;) (declaration "int iVar32;" primitive_type identifier ;) (declaration "int iVar33;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "longdouble lVar34;" type_identifier identifier ;) (declaration "float *local_80;" primitive_type (pointer_declarator "*local_80" * identifier) ;) (declaration "int local_78;" primitive_type identifier ;) (declaration "byte local_6c;" type_identifier identifier ;) (declaration "byte bStack_6b;" type_identifier identifier ;) (declaration "ushort uStack_6a;" type_identifier identifier ;) (declaration "int local_68;" primitive_type identifier ;) (declaration "float local_64;" primitive_type identifier ;) (declaration "float local_60;" primitive_type identifier ;) (declaration "double *local_5c;" primitive_type (pointer_declarator "*local_5c" * identifier) ;) (declaration "double local_3c;" primitive_type identifier ;) (declaration "float fStack_2c;" primitive_type identifier ;) (declaration "undefined4 uStack_28;" type_identifier identifier ;) (expression_statement "fVar10 = DAT_002c5824;" (assignment_expression "fVar10 = DAT_002c5824" identifier = identifier) ;) (expression_statement "fVar9 = DAT_002a7ff0;" (assignment_expression "fVar9 = DAT_002a7ff0" identifier = identifier) ;) (expression_statement "fVar13 = DAT_002a7fec;" (assignment_expression "fVar13 = DAT_002a7fec" identifier = identifier) ;) (expression_statement "fVar27 = DAT_0029f710;" (assignment_expression "fVar27 = DAT_0029f710" identifier = identifier) ;) (expression_statement "dVar16 = DAT_0029f138;" (assignment_expression "dVar16 = DAT_0029f138" identifier = identifier) ;) (expression_statement "local_80 = param_5;" (assignment_expression "local_80 = param_5" identifier = identifier) ;) (expression_statement "local_78 = param_6;" (assignment_expression "local_78 = param_6" identifier = identifier) ;) (expression_statement "iVar2 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar2 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (param_1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image != (Image *) NULL","MagickCore/quantum-import.c",0x1123,"ImportRGBOQuantum"\n                 );\n  }" if (parenthesized_expression "(param_1 == 0)" ( (binary_expression "param_1 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image != (Image *) NULL","MagickCore/quantum-import.c",0x1123,"ImportRGBOQuantum"\n                 );\n  }" { comment (expression_statement "__assert_fail("image != (Image *) NULL","MagickCore/quantum-import.c",0x1123,"ImportRGBOQuantum"\n                 );" (call_expression "__assert_fail("image != (Image *) NULL","MagickCore/quantum-import.c",0x1123,"ImportRGBOQuantum"\n                 )" identifier (argument_list "("image != (Image *) NULL","MagickCore/quantum-import.c",0x1123,"ImportRGBOQuantum"\n                 )" ( (string_literal ""image != (Image *) NULL"" " string_content ") , (string_literal ""MagickCore/quantum-import.c"" " string_content ") , number_literal , (string_literal ""ImportRGBOQuantum"" " string_content ") ))) ;) })) (if_statement "if (*(int *)(param_1 + 0x3344) != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image->signature == MagickCoreSignature","MagickCore/quantum-import.c",0x1124,\n                  "ImportRGBOQuantum");\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x3344) != -0x54535255)" ( (binary_expression "*(int *)(param_1 + 0x3344) != -0x54535255" (pointer_expression "*(int *)(param_1 + 0x3344)" * (cast_expression "(int *)(param_1 + 0x3344)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3344)" ( (binary_expression "param_1 + 0x3344" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image->signature == MagickCoreSignature","MagickCore/quantum-import.c",0x1124,\n                  "ImportRGBOQuantum");\n  }" { comment (expression_statement "__assert_fail("image->signature == MagickCoreSignature","MagickCore/quantum-import.c",0x1124,\n                  "ImportRGBOQuantum");" (call_expression "__assert_fail("image->signature == MagickCoreSignature","MagickCore/quantum-import.c",0x1124,\n                  "ImportRGBOQuantum")" identifier (argument_list "("image->signature == MagickCoreSignature","MagickCore/quantum-import.c",0x1124,\n                  "ImportRGBOQuantum")" ( (string_literal ""image->signature == MagickCoreSignature"" " string_content ") , (string_literal ""MagickCore/quantum-import.c"" " string_content ") , number_literal , (string_literal ""ImportRGBOQuantum"" " string_content ") ))) ;) })) (expression_statement "uVar22 = *param_2;" (assignment_expression "uVar22 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (switch_statement "switch(uVar22) {\n  case 8:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar32 = 0;\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      uVar22 = param_2[9];\n      do {\n        bVar12 = *(byte *)((int)param_5 + 1);\n        bVar23 = *(byte *)((int)param_5 + 2);\n        *(double *)(param_6 + iVar24 * 8) = (double)((float)*(byte *)param_5 * fVar9);\n        *(double *)(param_6 + iVar6 * 8) = (double)((float)bVar12 * fVar9);\n        *(double *)(param_6 + iVar7 * 8) = (double)((float)bVar23 * fVar9);\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9);\n        }\n        param_5 = (float *)((int)param_5 + uVar22 + 4);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;\n  default:\n    local_6c = 0;\n    bStack_6b = 0;\n    uStack_6a = 0;\n    local_68 = 0;\n    if (uVar22 != 0) goto LAB_00161285;\n    goto LAB_001612bc;\n  case 10:\n    if (param_2[0xb] == 0) {\n      if (0 < param_3) {\n        fVar27 = 0.0;\n        local_6c = 0;\n        bStack_6b = 0;\n        uStack_6a = 0;\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        uVar22 = param_2[9];\n        iVar33 = *(int *)(param_1 + 0x298);\n        uVar26 = 0;\n        do {\n          iVar24 = 0;\n          uVar29 = uVar26;\ncode_r0x001620a2:\n          if (uVar29 % 3 == 1) {\n            uVar26 = (uint)fVar27 >> 6 & 0xffc0;\ncode_r0x001620cb:\n            dVar16 = (double)uVar26;\n            if (iVar24 != 2) goto code_r0x001620d7;\ncode_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;\ncode_r0x001620f8:\n            uVar29 = uVar29 + 1;\n            iVar24 = iVar24 + 1;\n            goto code_r0x001620a2;\n          }\n          if (uVar29 % 3 == 2) {\n            uVar26 = ((uint)fVar27 & 0xffc) << 4;\n            goto code_r0x001620cb;\n          }\n          pfVar1 = local_80 + 1;\n          fVar27 = *local_80;\n          if (param_2[0x10] != 1) {\n            fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          }\n          dVar16 = (double)(((uint)fVar27 >> 0x16) << 6);\n          local_80 = pfVar1;\n          if (iVar24 == 2) goto code_r0x00162130;\ncode_r0x001620d7:\n          uVar26 = uVar29 + 1;\n          if (iVar24 != 3) {\n            if (iVar24 == 1) {\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }\n            else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }\n            goto code_r0x001620f8;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;\n          }\ncode_r0x0016217a:\n          iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar24;\n          bStack_6b = (byte)((uint)iVar24 >> 8);\n          uStack_6a = (ushort)((uint)iVar24 >> 0x10);\n          local_80 = (float *)((int)local_80 + uVar22);\n          local_78 = local_78 + iVar33 * 8;\n        } while (iVar24 != param_3);\n      }\n    }\n    else if (0 < param_3) {\n      iVar33 = *(int *)(param_1 + 0x2a8);\n      iVar20 = 0;\n      iVar24 = *(int *)(iVar33 + 8);\n      iVar6 = *(int *)(param_1 + 0x298);\n      iVar7 = *(int *)(iVar33 + 0x34);\n      iVar8 = *(int *)(iVar33 + 0x20);\n      iVar32 = *(int *)(iVar33 + 0x14);\n      do {\n        uVar29 = 0;\n        uVar26 = 10;\n        uVar22 = param_2[0x14];\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar26 <= uVar22) {\n            uVar18 = uVar26;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar24 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar32 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        uVar26 = 0;\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar8 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar29 <= uVar22) {\n            uVar18 = uVar29;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar29 = uVar29 - uVar18;\n          uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar29);\n        param_2[0x14] = uVar22;\n        if (iVar7 != 0) {\n          *(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));\n        }\n        iVar20 = iVar20 + 1;\n        local_78 = local_78 + iVar6 * 8;\n      } while (iVar20 != param_3);\n    }\n    break;\n  case 0x10:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        uVar22 = param_2[0x10];\n        do {\n          if (uVar22 == 1) {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          else {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          lVar34 = (longdouble)FUN_00159350();\n          if (*(int *)(iVar33 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n    }\n    else if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(iVar20 + 0x20);\n      iVar7 = *(int *)(iVar20 + 8);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        uVar3 = *(ushort *)(param_5 + 1);\n        uVar31 = *(ushort *)((int)param_5 + 6);\n        uVar4 = *(ushort *)param_5;\n        pdVar21 = (double *)(iVar24 * 8 + param_6);\n        uVar5 = *(ushort *)((int)param_5 + 2);\n        pdVar28 = (double *)(iVar6 * 8 + param_6);\n        pdVar30 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)uVar4;\n          *pdVar21 = (double)uVar5;\n          *pdVar28 = (double)uVar3;\n        }\n        else {\n          uVar31 = uVar31 << 8 | uVar31 >> 8;\n          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);\n          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);\n          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 8);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;\n  case 0x18:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }\n    goto code_r0x001616dd;\n  case 0x20:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        local_5c = (double *)0x0;\n        uVar22 = param_2[9];\n        uVar26 = param_2[0x10];\n        iVar33 = *(int *)(param_1 + 0x298);\n        do {\n          local_64 = *param_5;\n          if (uVar26 != 1) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3));\n          }\n          fVar13 = (local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar27 = fVar10;\n          if ((fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)) {\n            fVar27 = fVar13;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 8) * 8) = (double)fVar27;\n          if (uVar26 == 1) {\n            fVar27 = param_5[1];\n          }\n          else {\n            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));\n          }\n          fVar27 = (fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            local_60 = param_5[2];\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));\n          }\n          fVar27 = (local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            fVar27 = param_5[3];\n            local_6c = SUB41(fVar27,0);\n            bStack_6b = (byte)((uint)fVar27 >> 8);\n            uStack_6a = (ushort)((uint)fVar27 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);\n            bStack_6b = *(byte *)((int)param_5 + 0xe);\n            local_6c = *(byte *)((int)param_5 + 0xf);\n          }\n          fVar27 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          param_5 = (float *)((int)param_5 + uVar22 + 0x10);\n          param_6 = param_6 + iVar33 * 8;\n        } while (local_5c != (double *)param_3);\n      }\n      break;\n    }\ncode_r0x001616dd:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        fVar17 = DAT_002a7fec;\n        fVar27 = param_5[3];\n        fVar9 = param_5[1];\n        pdVar21 = (double *)(iVar6 * 8 + param_6);\n        fVar10 = param_5[2];\n        pdVar30 = (double *)(iVar24 * 8 + param_6);\n        fVar11 = *param_5;\n        pdVar28 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec);\n          *pdVar21 = (double)((float)(uint)fVar9 / fVar17);\n          *pdVar28 = (double)((float)(uint)fVar10 / fVar17);\n        }\n        else {\n          uVar3 = (ushort)((uint)fVar11 >> 8);\n          uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);\n          fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          *pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13);\n          *pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);\n          *pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 0x10);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;\n  case 0x40:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }\nLAB_00161285:\n    uVar26 = 0;\n    if (uVar22 < 0x41) {\n      uVar26 = uVar22;\n    }\n    bVar23 = (byte)(uVar26 - 1);\n    bVar12 = bVar23 & 0x1f;\n    uVar18 = 2 << (bVar23 & 0x1f);\n    uVar19 = uVar18;\n    uVar29 = 0 << bVar12 | 2U >> 0x20 - bVar12;\n    if ((uVar26 - 1 & 0x20) != 0) {\n      uVar19 = 0;\n      uVar29 = uVar18;\n    }\n    iVar20 = uVar19 - 1;\n    local_68 = (uVar29 - 1) + (uint)(uVar19 != 0);\n    local_6c = (byte)iVar20;\n    bStack_6b = (byte)((uint)iVar20 >> 8);\n    uStack_6a = (ushort)((uint)iVar20 >> 0x10);\nLAB_001612bc:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      local_64 = 0.0;\n      iVar33 = *(int *)(iVar20 + 8);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(param_1 + 0x298);\n      do {\n        pdVar28 = (double *)(iVar33 * 8 + local_78);\n        pdVar21 = (double *)(local_78 + iVar24 * 8);\n        if ((int)uVar22 < 1) {\n          fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (local_68 < 0) {\n            fVar27 = fVar27 + DAT_0029f714;\n          }\n          local_3c = (double)fVar27;\n          if (local_3c < dVar16) {\n            *pdVar28 = 0.0;\n          }\n          else {\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }\n          dVar15 = 0.0;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\nLAB_00161a0c:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          *pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710;\n          if (0 < (int)uVar22) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar15 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar15 = 0.0;\nLAB_00161c0a:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar15 = dVar14 * dVar15 * (double)DAT_0029f710;\n        }\n        else {\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {\n            *pdVar28 = (double)DAT_0029f710;\n          }\n          else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }\n          *pdVar21 = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }\n          dVar15 = (double)DAT_0029f710;\n        }\n        if (*(int *)(iVar20 + 0x34) != 0) {\n          *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15;\n        }\n        local_64 = (float)((int)local_64 + 1);\n        local_78 = local_78 + iVar6 * 8;\n      } while (local_64 != (float)param_3);\n    }\n  }" switch (parenthesized_expression "(uVar22)" ( identifier )) (compound_statement "{\n  case 8:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar32 = 0;\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      uVar22 = param_2[9];\n      do {\n        bVar12 = *(byte *)((int)param_5 + 1);\n        bVar23 = *(byte *)((int)param_5 + 2);\n        *(double *)(param_6 + iVar24 * 8) = (double)((float)*(byte *)param_5 * fVar9);\n        *(double *)(param_6 + iVar6 * 8) = (double)((float)bVar12 * fVar9);\n        *(double *)(param_6 + iVar7 * 8) = (double)((float)bVar23 * fVar9);\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9);\n        }\n        param_5 = (float *)((int)param_5 + uVar22 + 4);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;\n  default:\n    local_6c = 0;\n    bStack_6b = 0;\n    uStack_6a = 0;\n    local_68 = 0;\n    if (uVar22 != 0) goto LAB_00161285;\n    goto LAB_001612bc;\n  case 10:\n    if (param_2[0xb] == 0) {\n      if (0 < param_3) {\n        fVar27 = 0.0;\n        local_6c = 0;\n        bStack_6b = 0;\n        uStack_6a = 0;\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        uVar22 = param_2[9];\n        iVar33 = *(int *)(param_1 + 0x298);\n        uVar26 = 0;\n        do {\n          iVar24 = 0;\n          uVar29 = uVar26;\ncode_r0x001620a2:\n          if (uVar29 % 3 == 1) {\n            uVar26 = (uint)fVar27 >> 6 & 0xffc0;\ncode_r0x001620cb:\n            dVar16 = (double)uVar26;\n            if (iVar24 != 2) goto code_r0x001620d7;\ncode_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;\ncode_r0x001620f8:\n            uVar29 = uVar29 + 1;\n            iVar24 = iVar24 + 1;\n            goto code_r0x001620a2;\n          }\n          if (uVar29 % 3 == 2) {\n            uVar26 = ((uint)fVar27 & 0xffc) << 4;\n            goto code_r0x001620cb;\n          }\n          pfVar1 = local_80 + 1;\n          fVar27 = *local_80;\n          if (param_2[0x10] != 1) {\n            fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          }\n          dVar16 = (double)(((uint)fVar27 >> 0x16) << 6);\n          local_80 = pfVar1;\n          if (iVar24 == 2) goto code_r0x00162130;\ncode_r0x001620d7:\n          uVar26 = uVar29 + 1;\n          if (iVar24 != 3) {\n            if (iVar24 == 1) {\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }\n            else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }\n            goto code_r0x001620f8;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;\n          }\ncode_r0x0016217a:\n          iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar24;\n          bStack_6b = (byte)((uint)iVar24 >> 8);\n          uStack_6a = (ushort)((uint)iVar24 >> 0x10);\n          local_80 = (float *)((int)local_80 + uVar22);\n          local_78 = local_78 + iVar33 * 8;\n        } while (iVar24 != param_3);\n      }\n    }\n    else if (0 < param_3) {\n      iVar33 = *(int *)(param_1 + 0x2a8);\n      iVar20 = 0;\n      iVar24 = *(int *)(iVar33 + 8);\n      iVar6 = *(int *)(param_1 + 0x298);\n      iVar7 = *(int *)(iVar33 + 0x34);\n      iVar8 = *(int *)(iVar33 + 0x20);\n      iVar32 = *(int *)(iVar33 + 0x14);\n      do {\n        uVar29 = 0;\n        uVar26 = 10;\n        uVar22 = param_2[0x14];\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar26 <= uVar22) {\n            uVar18 = uVar26;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar24 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar32 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        uVar26 = 0;\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar8 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar29 <= uVar22) {\n            uVar18 = uVar29;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar29 = uVar29 - uVar18;\n          uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar29);\n        param_2[0x14] = uVar22;\n        if (iVar7 != 0) {\n          *(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));\n        }\n        iVar20 = iVar20 + 1;\n        local_78 = local_78 + iVar6 * 8;\n      } while (iVar20 != param_3);\n    }\n    break;\n  case 0x10:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        uVar22 = param_2[0x10];\n        do {\n          if (uVar22 == 1) {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          else {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          lVar34 = (longdouble)FUN_00159350();\n          if (*(int *)(iVar33 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n    }\n    else if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(iVar20 + 0x20);\n      iVar7 = *(int *)(iVar20 + 8);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        uVar3 = *(ushort *)(param_5 + 1);\n        uVar31 = *(ushort *)((int)param_5 + 6);\n        uVar4 = *(ushort *)param_5;\n        pdVar21 = (double *)(iVar24 * 8 + param_6);\n        uVar5 = *(ushort *)((int)param_5 + 2);\n        pdVar28 = (double *)(iVar6 * 8 + param_6);\n        pdVar30 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)uVar4;\n          *pdVar21 = (double)uVar5;\n          *pdVar28 = (double)uVar3;\n        }\n        else {\n          uVar31 = uVar31 << 8 | uVar31 >> 8;\n          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);\n          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);\n          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 8);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;\n  case 0x18:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }\n    goto code_r0x001616dd;\n  case 0x20:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        local_5c = (double *)0x0;\n        uVar22 = param_2[9];\n        uVar26 = param_2[0x10];\n        iVar33 = *(int *)(param_1 + 0x298);\n        do {\n          local_64 = *param_5;\n          if (uVar26 != 1) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3));\n          }\n          fVar13 = (local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar27 = fVar10;\n          if ((fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)) {\n            fVar27 = fVar13;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 8) * 8) = (double)fVar27;\n          if (uVar26 == 1) {\n            fVar27 = param_5[1];\n          }\n          else {\n            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));\n          }\n          fVar27 = (fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            local_60 = param_5[2];\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));\n          }\n          fVar27 = (local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            fVar27 = param_5[3];\n            local_6c = SUB41(fVar27,0);\n            bStack_6b = (byte)((uint)fVar27 >> 8);\n            uStack_6a = (ushort)((uint)fVar27 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);\n            bStack_6b = *(byte *)((int)param_5 + 0xe);\n            local_6c = *(byte *)((int)param_5 + 0xf);\n          }\n          fVar27 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          param_5 = (float *)((int)param_5 + uVar22 + 0x10);\n          param_6 = param_6 + iVar33 * 8;\n        } while (local_5c != (double *)param_3);\n      }\n      break;\n    }\ncode_r0x001616dd:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        fVar17 = DAT_002a7fec;\n        fVar27 = param_5[3];\n        fVar9 = param_5[1];\n        pdVar21 = (double *)(iVar6 * 8 + param_6);\n        fVar10 = param_5[2];\n        pdVar30 = (double *)(iVar24 * 8 + param_6);\n        fVar11 = *param_5;\n        pdVar28 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec);\n          *pdVar21 = (double)((float)(uint)fVar9 / fVar17);\n          *pdVar28 = (double)((float)(uint)fVar10 / fVar17);\n        }\n        else {\n          uVar3 = (ushort)((uint)fVar11 >> 8);\n          uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);\n          fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          *pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13);\n          *pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);\n          *pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 0x10);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;\n  case 0x40:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }\nLAB_00161285:\n    uVar26 = 0;\n    if (uVar22 < 0x41) {\n      uVar26 = uVar22;\n    }\n    bVar23 = (byte)(uVar26 - 1);\n    bVar12 = bVar23 & 0x1f;\n    uVar18 = 2 << (bVar23 & 0x1f);\n    uVar19 = uVar18;\n    uVar29 = 0 << bVar12 | 2U >> 0x20 - bVar12;\n    if ((uVar26 - 1 & 0x20) != 0) {\n      uVar19 = 0;\n      uVar29 = uVar18;\n    }\n    iVar20 = uVar19 - 1;\n    local_68 = (uVar29 - 1) + (uint)(uVar19 != 0);\n    local_6c = (byte)iVar20;\n    bStack_6b = (byte)((uint)iVar20 >> 8);\n    uStack_6a = (ushort)((uint)iVar20 >> 0x10);\nLAB_001612bc:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      local_64 = 0.0;\n      iVar33 = *(int *)(iVar20 + 8);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(param_1 + 0x298);\n      do {\n        pdVar28 = (double *)(iVar33 * 8 + local_78);\n        pdVar21 = (double *)(local_78 + iVar24 * 8);\n        if ((int)uVar22 < 1) {\n          fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (local_68 < 0) {\n            fVar27 = fVar27 + DAT_0029f714;\n          }\n          local_3c = (double)fVar27;\n          if (local_3c < dVar16) {\n            *pdVar28 = 0.0;\n          }\n          else {\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }\n          dVar15 = 0.0;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\nLAB_00161a0c:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          *pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710;\n          if (0 < (int)uVar22) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar15 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar15 = 0.0;\nLAB_00161c0a:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar15 = dVar14 * dVar15 * (double)DAT_0029f710;\n        }\n        else {\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {\n            *pdVar28 = (double)DAT_0029f710;\n          }\n          else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }\n          *pdVar21 = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }\n          dVar15 = (double)DAT_0029f710;\n        }\n        if (*(int *)(iVar20 + 0x34) != 0) {\n          *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15;\n        }\n        local_64 = (float)((int)local_64 + 1);\n        local_78 = local_78 + iVar6 * 8;\n      } while (local_64 != (float)param_3);\n    }\n  }" { (case_statement "case 8:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar32 = 0;\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      uVar22 = param_2[9];\n      do {\n        bVar12 = *(byte *)((int)param_5 + 1);\n        bVar23 = *(byte *)((int)param_5 + 2);\n        *(double *)(param_6 + iVar24 * 8) = (double)((float)*(byte *)param_5 * fVar9);\n        *(double *)(param_6 + iVar6 * 8) = (double)((float)bVar12 * fVar9);\n        *(double *)(param_6 + iVar7 * 8) = (double)((float)bVar23 * fVar9);\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9);\n        }\n        param_5 = (float *)((int)param_5 + uVar22 + 4);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;" case number_literal : (if_statement "if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar32 = 0;\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      uVar22 = param_2[9];\n      do {\n        bVar12 = *(byte *)((int)param_5 + 1);\n        bVar23 = *(byte *)((int)param_5 + 2);\n        *(double *)(param_6 + iVar24 * 8) = (double)((float)*(byte *)param_5 * fVar9);\n        *(double *)(param_6 + iVar6 * 8) = (double)((float)bVar12 * fVar9);\n        *(double *)(param_6 + iVar7 * 8) = (double)((float)bVar23 * fVar9);\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9);\n        }\n        param_5 = (float *)((int)param_5 + uVar22 + 4);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }" if (parenthesized_expression "(0 < param_3)" ( (binary_expression "0 < param_3" number_literal < identifier) )) (compound_statement "{\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar32 = 0;\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      uVar22 = param_2[9];\n      do {\n        bVar12 = *(byte *)((int)param_5 + 1);\n        bVar23 = *(byte *)((int)param_5 + 2);\n        *(double *)(param_6 + iVar24 * 8) = (double)((float)*(byte *)param_5 * fVar9);\n        *(double *)(param_6 + iVar6 * 8) = (double)((float)bVar12 * fVar9);\n        *(double *)(param_6 + iVar7 * 8) = (double)((float)bVar23 * fVar9);\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9);\n        }\n        param_5 = (float *)((int)param_5 + uVar22 + 4);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }" { (expression_statement "iVar20 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar20 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) (expression_statement "iVar33 = *(int *)(param_1 + 0x298);" (assignment_expression "iVar33 = *(int *)(param_1 + 0x298)" identifier = (pointer_expression "*(int *)(param_1 + 0x298)" * (cast_expression "(int *)(param_1 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) ))))) ;) (expression_statement "iVar24 = *(int *)(iVar20 + 8);" (assignment_expression "iVar24 = *(int *)(iVar20 + 8)" identifier = (pointer_expression "*(int *)(iVar20 + 8)" * (cast_expression "(int *)(iVar20 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 8)" ( (binary_expression "iVar20 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar32 = 0;" (assignment_expression "iVar32 = 0" identifier = number_literal) ;) (expression_statement "iVar6 = *(int *)(iVar20 + 0x14);" (assignment_expression "iVar6 = *(int *)(iVar20 + 0x14)" identifier = (pointer_expression "*(int *)(iVar20 + 0x14)" * (cast_expression "(int *)(iVar20 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x14)" ( (binary_expression "iVar20 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = *(int *)(iVar20 + 0x20);" (assignment_expression "iVar7 = *(int *)(iVar20 + 0x20)" identifier = (pointer_expression "*(int *)(iVar20 + 0x20)" * (cast_expression "(int *)(iVar20 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x20)" ( (binary_expression "iVar20 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = *(int *)(iVar20 + 0x34);" (assignment_expression "iVar8 = *(int *)(iVar20 + 0x34)" identifier = (pointer_expression "*(int *)(iVar20 + 0x34)" * (cast_expression "(int *)(iVar20 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x34)" ( (binary_expression "iVar20 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "uVar22 = param_2[9];" (assignment_expression "uVar22 = param_2[9]" identifier = (subscript_expression "param_2[9]" identifier [ number_literal ])) ;) (do_statement "do {\n        bVar12 = *(byte *)((int)param_5 + 1);\n        bVar23 = *(byte *)((int)param_5 + 2);\n        *(double *)(param_6 + iVar24 * 8) = (double)((float)*(byte *)param_5 * fVar9);\n        *(double *)(param_6 + iVar6 * 8) = (double)((float)bVar12 * fVar9);\n        *(double *)(param_6 + iVar7 * 8) = (double)((float)bVar23 * fVar9);\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9);\n        }\n        param_5 = (float *)((int)param_5 + uVar22 + 4);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);" do (compound_statement "{\n        bVar12 = *(byte *)((int)param_5 + 1);\n        bVar23 = *(byte *)((int)param_5 + 2);\n        *(double *)(param_6 + iVar24 * 8) = (double)((float)*(byte *)param_5 * fVar9);\n        *(double *)(param_6 + iVar6 * 8) = (double)((float)bVar12 * fVar9);\n        *(double *)(param_6 + iVar7 * 8) = (double)((float)bVar23 * fVar9);\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9);\n        }\n        param_5 = (float *)((int)param_5 + uVar22 + 4);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      }" { (expression_statement "bVar12 = *(byte *)((int)param_5 + 1);" (assignment_expression "bVar12 = *(byte *)((int)param_5 + 1)" identifier = (pointer_expression "*(byte *)((int)param_5 + 1)" * (cast_expression "(byte *)((int)param_5 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 1)" ( (binary_expression "(int)param_5 + 1" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "bVar23 = *(byte *)((int)param_5 + 2);" (assignment_expression "bVar23 = *(byte *)((int)param_5 + 2)" identifier = (pointer_expression "*(byte *)((int)param_5 + 2)" * (cast_expression "(byte *)((int)param_5 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 2)" ( (binary_expression "(int)param_5 + 2" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(double *)(param_6 + iVar24 * 8) = (double)((float)*(byte *)param_5 * fVar9);" (assignment_expression "*(double *)(param_6 + iVar24 * 8) = (double)((float)*(byte *)param_5 * fVar9)" (pointer_expression "*(double *)(param_6 + iVar24 * 8)" * (cast_expression "(double *)(param_6 + iVar24 * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + iVar24 * 8)" ( (binary_expression "param_6 + iVar24 * 8" identifier + (binary_expression "iVar24 * 8" identifier * number_literal)) )))) = (cast_expression "(double)((float)*(byte *)param_5 * fVar9)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((float)*(byte *)param_5 * fVar9)" ( (binary_expression "(float)*(byte *)param_5 * fVar9" (cast_expression "(float)*(byte *)param_5" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(byte *)param_5" * (cast_expression "(byte *)param_5" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) * identifier) )))) ;) (expression_statement "*(double *)(param_6 + iVar6 * 8) = (double)((float)bVar12 * fVar9);" (assignment_expression "*(double *)(param_6 + iVar6 * 8) = (double)((float)bVar12 * fVar9)" (pointer_expression "*(double *)(param_6 + iVar6 * 8)" * (cast_expression "(double *)(param_6 + iVar6 * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + iVar6 * 8)" ( (binary_expression "param_6 + iVar6 * 8" identifier + (binary_expression "iVar6 * 8" identifier * number_literal)) )))) = (cast_expression "(double)((float)bVar12 * fVar9)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((float)bVar12 * fVar9)" ( (binary_expression "(float)bVar12 * fVar9" (cast_expression "(float)bVar12" ( (type_descriptor "float" primitive_type) ) identifier) * identifier) )))) ;) (expression_statement "*(double *)(param_6 + iVar7 * 8) = (double)((float)bVar23 * fVar9);" (assignment_expression "*(double *)(param_6 + iVar7 * 8) = (double)((float)bVar23 * fVar9)" (pointer_expression "*(double *)(param_6 + iVar7 * 8)" * (cast_expression "(double *)(param_6 + iVar7 * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + iVar7 * 8)" ( (binary_expression "param_6 + iVar7 * 8" identifier + (binary_expression "iVar7 * 8" identifier * number_literal)) )))) = (cast_expression "(double)((float)bVar23 * fVar9)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((float)bVar23 * fVar9)" ( (binary_expression "(float)bVar23 * fVar9" (cast_expression "(float)bVar23" ( (type_descriptor "float" primitive_type) ) identifier) * identifier) )))) ;) (if_statement "if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9);\n        }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9);\n        }" { (expression_statement "*(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9);" (assignment_expression "*(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9)" (pointer_expression "*(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8)" * (cast_expression "(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(iVar20 + 0x38) * 8)" ( (binary_expression "param_6 + *(int *)(iVar20 + 0x38) * 8" identifier + (binary_expression "*(int *)(iVar20 + 0x38) * 8" (pointer_expression "*(int *)(iVar20 + 0x38)" * (cast_expression "(int *)(iVar20 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x38)" ( (binary_expression "iVar20 + 0x38" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9)" ( (binary_expression "DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9" identifier - (binary_expression "(float)*(byte *)((int)param_5 + 3) * fVar9" (cast_expression "(float)*(byte *)((int)param_5 + 3)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(byte *)((int)param_5 + 3)" * (cast_expression "(byte *)((int)param_5 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 3)" ( (binary_expression "(int)param_5 + 3" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) * identifier)) )))) ;) })) (expression_statement "param_5 = (float *)((int)param_5 + uVar22 + 4);" (assignment_expression "param_5 = (float *)((int)param_5 + uVar22 + 4)" identifier = (cast_expression "(float *)((int)param_5 + uVar22 + 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + uVar22 + 4)" ( (binary_expression "(int)param_5 + uVar22 + 4" (binary_expression "(int)param_5 + uVar22" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ;) (expression_statement "iVar32 = iVar32 + 1;" (assignment_expression "iVar32 = iVar32 + 1" identifier = (binary_expression "iVar32 + 1" identifier + number_literal)) ;) (expression_statement "param_6 = param_6 + iVar33 * 8;" (assignment_expression "param_6 = param_6 + iVar33 * 8" identifier = (binary_expression "param_6 + iVar33 * 8" identifier + (binary_expression "iVar33 * 8" identifier * number_literal))) ;) }) while (parenthesized_expression "(iVar32 != param_3)" ( (binary_expression "iVar32 != param_3" identifier != identifier) )) ;) })) (break_statement "break;" break ;)) (case_statement "default:\n    local_6c = 0;\n    bStack_6b = 0;\n    uStack_6a = 0;\n    local_68 = 0;\n    if (uVar22 != 0) goto LAB_00161285;\n    goto LAB_001612bc;" default : (expression_statement "local_6c = 0;" (assignment_expression "local_6c = 0" identifier = number_literal) ;) (expression_statement "bStack_6b = 0;" (assignment_expression "bStack_6b = 0" identifier = number_literal) ;) (expression_statement "uStack_6a = 0;" (assignment_expression "uStack_6a = 0" identifier = number_literal) ;) (expression_statement "local_68 = 0;" (assignment_expression "local_68 = 0" identifier = number_literal) ;) (if_statement "if (uVar22 != 0) goto LAB_00161285;" if (parenthesized_expression "(uVar22 != 0)" ( (binary_expression "uVar22 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00161285;" goto statement_identifier ;)) (goto_statement "goto LAB_001612bc;" goto statement_identifier ;)) (case_statement "case 10:\n    if (param_2[0xb] == 0) {\n      if (0 < param_3) {\n        fVar27 = 0.0;\n        local_6c = 0;\n        bStack_6b = 0;\n        uStack_6a = 0;\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        uVar22 = param_2[9];\n        iVar33 = *(int *)(param_1 + 0x298);\n        uVar26 = 0;\n        do {\n          iVar24 = 0;\n          uVar29 = uVar26;\ncode_r0x001620a2:\n          if (uVar29 % 3 == 1) {\n            uVar26 = (uint)fVar27 >> 6 & 0xffc0;\ncode_r0x001620cb:\n            dVar16 = (double)uVar26;\n            if (iVar24 != 2) goto code_r0x001620d7;\ncode_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;\ncode_r0x001620f8:\n            uVar29 = uVar29 + 1;\n            iVar24 = iVar24 + 1;\n            goto code_r0x001620a2;\n          }\n          if (uVar29 % 3 == 2) {\n            uVar26 = ((uint)fVar27 & 0xffc) << 4;\n            goto code_r0x001620cb;\n          }\n          pfVar1 = local_80 + 1;\n          fVar27 = *local_80;\n          if (param_2[0x10] != 1) {\n            fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          }\n          dVar16 = (double)(((uint)fVar27 >> 0x16) << 6);\n          local_80 = pfVar1;\n          if (iVar24 == 2) goto code_r0x00162130;\ncode_r0x001620d7:\n          uVar26 = uVar29 + 1;\n          if (iVar24 != 3) {\n            if (iVar24 == 1) {\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }\n            else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }\n            goto code_r0x001620f8;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;\n          }\ncode_r0x0016217a:\n          iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar24;\n          bStack_6b = (byte)((uint)iVar24 >> 8);\n          uStack_6a = (ushort)((uint)iVar24 >> 0x10);\n          local_80 = (float *)((int)local_80 + uVar22);\n          local_78 = local_78 + iVar33 * 8;\n        } while (iVar24 != param_3);\n      }\n    }\n    else if (0 < param_3) {\n      iVar33 = *(int *)(param_1 + 0x2a8);\n      iVar20 = 0;\n      iVar24 = *(int *)(iVar33 + 8);\n      iVar6 = *(int *)(param_1 + 0x298);\n      iVar7 = *(int *)(iVar33 + 0x34);\n      iVar8 = *(int *)(iVar33 + 0x20);\n      iVar32 = *(int *)(iVar33 + 0x14);\n      do {\n        uVar29 = 0;\n        uVar26 = 10;\n        uVar22 = param_2[0x14];\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar26 <= uVar22) {\n            uVar18 = uVar26;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar24 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar32 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        uVar26 = 0;\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar8 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar29 <= uVar22) {\n            uVar18 = uVar29;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar29 = uVar29 - uVar18;\n          uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar29);\n        param_2[0x14] = uVar22;\n        if (iVar7 != 0) {\n          *(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));\n        }\n        iVar20 = iVar20 + 1;\n        local_78 = local_78 + iVar6 * 8;\n      } while (iVar20 != param_3);\n    }\n    break;" case number_literal : (if_statement "if (param_2[0xb] == 0) {\n      if (0 < param_3) {\n        fVar27 = 0.0;\n        local_6c = 0;\n        bStack_6b = 0;\n        uStack_6a = 0;\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        uVar22 = param_2[9];\n        iVar33 = *(int *)(param_1 + 0x298);\n        uVar26 = 0;\n        do {\n          iVar24 = 0;\n          uVar29 = uVar26;\ncode_r0x001620a2:\n          if (uVar29 % 3 == 1) {\n            uVar26 = (uint)fVar27 >> 6 & 0xffc0;\ncode_r0x001620cb:\n            dVar16 = (double)uVar26;\n            if (iVar24 != 2) goto code_r0x001620d7;\ncode_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;\ncode_r0x001620f8:\n            uVar29 = uVar29 + 1;\n            iVar24 = iVar24 + 1;\n            goto code_r0x001620a2;\n          }\n          if (uVar29 % 3 == 2) {\n            uVar26 = ((uint)fVar27 & 0xffc) << 4;\n            goto code_r0x001620cb;\n          }\n          pfVar1 = local_80 + 1;\n          fVar27 = *local_80;\n          if (param_2[0x10] != 1) {\n            fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          }\n          dVar16 = (double)(((uint)fVar27 >> 0x16) << 6);\n          local_80 = pfVar1;\n          if (iVar24 == 2) goto code_r0x00162130;\ncode_r0x001620d7:\n          uVar26 = uVar29 + 1;\n          if (iVar24 != 3) {\n            if (iVar24 == 1) {\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }\n            else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }\n            goto code_r0x001620f8;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;\n          }\ncode_r0x0016217a:\n          iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar24;\n          bStack_6b = (byte)((uint)iVar24 >> 8);\n          uStack_6a = (ushort)((uint)iVar24 >> 0x10);\n          local_80 = (float *)((int)local_80 + uVar22);\n          local_78 = local_78 + iVar33 * 8;\n        } while (iVar24 != param_3);\n      }\n    }\n    else if (0 < param_3) {\n      iVar33 = *(int *)(param_1 + 0x2a8);\n      iVar20 = 0;\n      iVar24 = *(int *)(iVar33 + 8);\n      iVar6 = *(int *)(param_1 + 0x298);\n      iVar7 = *(int *)(iVar33 + 0x34);\n      iVar8 = *(int *)(iVar33 + 0x20);\n      iVar32 = *(int *)(iVar33 + 0x14);\n      do {\n        uVar29 = 0;\n        uVar26 = 10;\n        uVar22 = param_2[0x14];\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar26 <= uVar22) {\n            uVar18 = uVar26;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar24 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar32 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        uVar26 = 0;\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar8 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar29 <= uVar22) {\n            uVar18 = uVar29;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar29 = uVar29 - uVar18;\n          uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar29);\n        param_2[0x14] = uVar22;\n        if (iVar7 != 0) {\n          *(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));\n        }\n        iVar20 = iVar20 + 1;\n        local_78 = local_78 + iVar6 * 8;\n      } while (iVar20 != param_3);\n    }" if (parenthesized_expression "(param_2[0xb] == 0)" ( (binary_expression "param_2[0xb] == 0" (subscript_expression "param_2[0xb]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      if (0 < param_3) {\n        fVar27 = 0.0;\n        local_6c = 0;\n        bStack_6b = 0;\n        uStack_6a = 0;\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        uVar22 = param_2[9];\n        iVar33 = *(int *)(param_1 + 0x298);\n        uVar26 = 0;\n        do {\n          iVar24 = 0;\n          uVar29 = uVar26;\ncode_r0x001620a2:\n          if (uVar29 % 3 == 1) {\n            uVar26 = (uint)fVar27 >> 6 & 0xffc0;\ncode_r0x001620cb:\n            dVar16 = (double)uVar26;\n            if (iVar24 != 2) goto code_r0x001620d7;\ncode_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;\ncode_r0x001620f8:\n            uVar29 = uVar29 + 1;\n            iVar24 = iVar24 + 1;\n            goto code_r0x001620a2;\n          }\n          if (uVar29 % 3 == 2) {\n            uVar26 = ((uint)fVar27 & 0xffc) << 4;\n            goto code_r0x001620cb;\n          }\n          pfVar1 = local_80 + 1;\n          fVar27 = *local_80;\n          if (param_2[0x10] != 1) {\n            fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          }\n          dVar16 = (double)(((uint)fVar27 >> 0x16) << 6);\n          local_80 = pfVar1;\n          if (iVar24 == 2) goto code_r0x00162130;\ncode_r0x001620d7:\n          uVar26 = uVar29 + 1;\n          if (iVar24 != 3) {\n            if (iVar24 == 1) {\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }\n            else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }\n            goto code_r0x001620f8;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;\n          }\ncode_r0x0016217a:\n          iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar24;\n          bStack_6b = (byte)((uint)iVar24 >> 8);\n          uStack_6a = (ushort)((uint)iVar24 >> 0x10);\n          local_80 = (float *)((int)local_80 + uVar22);\n          local_78 = local_78 + iVar33 * 8;\n        } while (iVar24 != param_3);\n      }\n    }" { (if_statement "if (0 < param_3) {\n        fVar27 = 0.0;\n        local_6c = 0;\n        bStack_6b = 0;\n        uStack_6a = 0;\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        uVar22 = param_2[9];\n        iVar33 = *(int *)(param_1 + 0x298);\n        uVar26 = 0;\n        do {\n          iVar24 = 0;\n          uVar29 = uVar26;\ncode_r0x001620a2:\n          if (uVar29 % 3 == 1) {\n            uVar26 = (uint)fVar27 >> 6 & 0xffc0;\ncode_r0x001620cb:\n            dVar16 = (double)uVar26;\n            if (iVar24 != 2) goto code_r0x001620d7;\ncode_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;\ncode_r0x001620f8:\n            uVar29 = uVar29 + 1;\n            iVar24 = iVar24 + 1;\n            goto code_r0x001620a2;\n          }\n          if (uVar29 % 3 == 2) {\n            uVar26 = ((uint)fVar27 & 0xffc) << 4;\n            goto code_r0x001620cb;\n          }\n          pfVar1 = local_80 + 1;\n          fVar27 = *local_80;\n          if (param_2[0x10] != 1) {\n            fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          }\n          dVar16 = (double)(((uint)fVar27 >> 0x16) << 6);\n          local_80 = pfVar1;\n          if (iVar24 == 2) goto code_r0x00162130;\ncode_r0x001620d7:\n          uVar26 = uVar29 + 1;\n          if (iVar24 != 3) {\n            if (iVar24 == 1) {\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }\n            else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }\n            goto code_r0x001620f8;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;\n          }\ncode_r0x0016217a:\n          iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar24;\n          bStack_6b = (byte)((uint)iVar24 >> 8);\n          uStack_6a = (ushort)((uint)iVar24 >> 0x10);\n          local_80 = (float *)((int)local_80 + uVar22);\n          local_78 = local_78 + iVar33 * 8;\n        } while (iVar24 != param_3);\n      }" if (parenthesized_expression "(0 < param_3)" ( (binary_expression "0 < param_3" number_literal < identifier) )) (compound_statement "{\n        fVar27 = 0.0;\n        local_6c = 0;\n        bStack_6b = 0;\n        uStack_6a = 0;\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        uVar22 = param_2[9];\n        iVar33 = *(int *)(param_1 + 0x298);\n        uVar26 = 0;\n        do {\n          iVar24 = 0;\n          uVar29 = uVar26;\ncode_r0x001620a2:\n          if (uVar29 % 3 == 1) {\n            uVar26 = (uint)fVar27 >> 6 & 0xffc0;\ncode_r0x001620cb:\n            dVar16 = (double)uVar26;\n            if (iVar24 != 2) goto code_r0x001620d7;\ncode_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;\ncode_r0x001620f8:\n            uVar29 = uVar29 + 1;\n            iVar24 = iVar24 + 1;\n            goto code_r0x001620a2;\n          }\n          if (uVar29 % 3 == 2) {\n            uVar26 = ((uint)fVar27 & 0xffc) << 4;\n            goto code_r0x001620cb;\n          }\n          pfVar1 = local_80 + 1;\n          fVar27 = *local_80;\n          if (param_2[0x10] != 1) {\n            fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          }\n          dVar16 = (double)(((uint)fVar27 >> 0x16) << 6);\n          local_80 = pfVar1;\n          if (iVar24 == 2) goto code_r0x00162130;\ncode_r0x001620d7:\n          uVar26 = uVar29 + 1;\n          if (iVar24 != 3) {\n            if (iVar24 == 1) {\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }\n            else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }\n            goto code_r0x001620f8;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;\n          }\ncode_r0x0016217a:\n          iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar24;\n          bStack_6b = (byte)((uint)iVar24 >> 8);\n          uStack_6a = (ushort)((uint)iVar24 >> 0x10);\n          local_80 = (float *)((int)local_80 + uVar22);\n          local_78 = local_78 + iVar33 * 8;\n        } while (iVar24 != param_3);\n      }" { (expression_statement "fVar27 = 0.0;" (assignment_expression "fVar27 = 0.0" identifier = number_literal) ;) (expression_statement "local_6c = 0;" (assignment_expression "local_6c = 0" identifier = number_literal) ;) (expression_statement "bStack_6b = 0;" (assignment_expression "bStack_6b = 0" identifier = number_literal) ;) (expression_statement "uStack_6a = 0;" (assignment_expression "uStack_6a = 0" identifier = number_literal) ;) (expression_statement "iVar20 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar20 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) (expression_statement "uVar22 = param_2[9];" (assignment_expression "uVar22 = param_2[9]" identifier = (subscript_expression "param_2[9]" identifier [ number_literal ])) ;) (expression_statement "iVar33 = *(int *)(param_1 + 0x298);" (assignment_expression "iVar33 = *(int *)(param_1 + 0x298)" identifier = (pointer_expression "*(int *)(param_1 + 0x298)" * (cast_expression "(int *)(param_1 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) ))))) ;) (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" identifier = number_literal) ;) (do_statement "do {\n          iVar24 = 0;\n          uVar29 = uVar26;\ncode_r0x001620a2:\n          if (uVar29 % 3 == 1) {\n            uVar26 = (uint)fVar27 >> 6 & 0xffc0;\ncode_r0x001620cb:\n            dVar16 = (double)uVar26;\n            if (iVar24 != 2) goto code_r0x001620d7;\ncode_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;\ncode_r0x001620f8:\n            uVar29 = uVar29 + 1;\n            iVar24 = iVar24 + 1;\n            goto code_r0x001620a2;\n          }\n          if (uVar29 % 3 == 2) {\n            uVar26 = ((uint)fVar27 & 0xffc) << 4;\n            goto code_r0x001620cb;\n          }\n          pfVar1 = local_80 + 1;\n          fVar27 = *local_80;\n          if (param_2[0x10] != 1) {\n            fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          }\n          dVar16 = (double)(((uint)fVar27 >> 0x16) << 6);\n          local_80 = pfVar1;\n          if (iVar24 == 2) goto code_r0x00162130;\ncode_r0x001620d7:\n          uVar26 = uVar29 + 1;\n          if (iVar24 != 3) {\n            if (iVar24 == 1) {\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }\n            else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }\n            goto code_r0x001620f8;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;\n          }\ncode_r0x0016217a:\n          iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar24;\n          bStack_6b = (byte)((uint)iVar24 >> 8);\n          uStack_6a = (ushort)((uint)iVar24 >> 0x10);\n          local_80 = (float *)((int)local_80 + uVar22);\n          local_78 = local_78 + iVar33 * 8;\n        } while (iVar24 != param_3);" do (compound_statement "{\n          iVar24 = 0;\n          uVar29 = uVar26;\ncode_r0x001620a2:\n          if (uVar29 % 3 == 1) {\n            uVar26 = (uint)fVar27 >> 6 & 0xffc0;\ncode_r0x001620cb:\n            dVar16 = (double)uVar26;\n            if (iVar24 != 2) goto code_r0x001620d7;\ncode_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;\ncode_r0x001620f8:\n            uVar29 = uVar29 + 1;\n            iVar24 = iVar24 + 1;\n            goto code_r0x001620a2;\n          }\n          if (uVar29 % 3 == 2) {\n            uVar26 = ((uint)fVar27 & 0xffc) << 4;\n            goto code_r0x001620cb;\n          }\n          pfVar1 = local_80 + 1;\n          fVar27 = *local_80;\n          if (param_2[0x10] != 1) {\n            fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          }\n          dVar16 = (double)(((uint)fVar27 >> 0x16) << 6);\n          local_80 = pfVar1;\n          if (iVar24 == 2) goto code_r0x00162130;\ncode_r0x001620d7:\n          uVar26 = uVar29 + 1;\n          if (iVar24 != 3) {\n            if (iVar24 == 1) {\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }\n            else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }\n            goto code_r0x001620f8;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;\n          }\ncode_r0x0016217a:\n          iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar24;\n          bStack_6b = (byte)((uint)iVar24 >> 8);\n          uStack_6a = (ushort)((uint)iVar24 >> 0x10);\n          local_80 = (float *)((int)local_80 + uVar22);\n          local_78 = local_78 + iVar33 * 8;\n        }" { (expression_statement "iVar24 = 0;" (assignment_expression "iVar24 = 0" identifier = number_literal) ;) (expression_statement "uVar29 = uVar26;" (assignment_expression "uVar29 = uVar26" identifier = identifier) ;) (labeled_statement "code_r0x001620a2:\n          if (uVar29 % 3 == 1) {\n            uVar26 = (uint)fVar27 >> 6 & 0xffc0;\ncode_r0x001620cb:\n            dVar16 = (double)uVar26;\n            if (iVar24 != 2) goto code_r0x001620d7;\ncode_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;\ncode_r0x001620f8:\n            uVar29 = uVar29 + 1;\n            iVar24 = iVar24 + 1;\n            goto code_r0x001620a2;\n          }" statement_identifier : (if_statement "if (uVar29 % 3 == 1) {\n            uVar26 = (uint)fVar27 >> 6 & 0xffc0;\ncode_r0x001620cb:\n            dVar16 = (double)uVar26;\n            if (iVar24 != 2) goto code_r0x001620d7;\ncode_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;\ncode_r0x001620f8:\n            uVar29 = uVar29 + 1;\n            iVar24 = iVar24 + 1;\n            goto code_r0x001620a2;\n          }" if (parenthesized_expression "(uVar29 % 3 == 1)" ( (binary_expression "uVar29 % 3 == 1" (binary_expression "uVar29 % 3" identifier % number_literal) == number_literal) )) (compound_statement "{\n            uVar26 = (uint)fVar27 >> 6 & 0xffc0;\ncode_r0x001620cb:\n            dVar16 = (double)uVar26;\n            if (iVar24 != 2) goto code_r0x001620d7;\ncode_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;\ncode_r0x001620f8:\n            uVar29 = uVar29 + 1;\n            iVar24 = iVar24 + 1;\n            goto code_r0x001620a2;\n          }" { (expression_statement "uVar26 = (uint)fVar27 >> 6 & 0xffc0;" (assignment_expression "uVar26 = (uint)fVar27 >> 6 & 0xffc0" identifier = (binary_expression "(uint)fVar27 >> 6 & 0xffc0" (binary_expression "(uint)fVar27 >> 6" (cast_expression "(uint)fVar27" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) & number_literal)) ;) (labeled_statement "code_r0x001620cb:\n            dVar16 = (double)uVar26;" statement_identifier : (expression_statement "dVar16 = (double)uVar26;" (assignment_expression "dVar16 = (double)uVar26" identifier = (cast_expression "(double)uVar26" ( (type_descriptor "double" primitive_type) ) identifier)) ;)) (if_statement "if (iVar24 != 2) goto code_r0x001620d7;" if (parenthesized_expression "(iVar24 != 2)" ( (binary_expression "iVar24 != 2" identifier != number_literal) )) (goto_statement "goto code_r0x001620d7;" goto statement_identifier ;)) (labeled_statement "code_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;" statement_identifier : (expression_statement "*(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;" (assignment_expression "*(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16" (pointer_expression "*(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8)" * (cast_expression "(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + *(int *)(iVar20 + 0x20) * 8)" ( (binary_expression "local_78 + *(int *)(iVar20 + 0x20) * 8" identifier + (binary_expression "*(int *)(iVar20 + 0x20) * 8" (pointer_expression "*(int *)(iVar20 + 0x20)" * (cast_expression "(int *)(iVar20 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x20)" ( (binary_expression "iVar20 + 0x20" identifier + number_literal) )))) * number_literal)) )))) = identifier) ;)) (labeled_statement "code_r0x001620f8:\n            uVar29 = uVar29 + 1;" statement_identifier : (expression_statement "uVar29 = uVar29 + 1;" (assignment_expression "uVar29 = uVar29 + 1" identifier = (binary_expression "uVar29 + 1" identifier + number_literal)) ;)) (expression_statement "iVar24 = iVar24 + 1;" (assignment_expression "iVar24 = iVar24 + 1" identifier = (binary_expression "iVar24 + 1" identifier + number_literal)) ;) (goto_statement "goto code_r0x001620a2;" goto statement_identifier ;) }))) (if_statement "if (uVar29 % 3 == 2) {\n            uVar26 = ((uint)fVar27 & 0xffc) << 4;\n            goto code_r0x001620cb;\n          }" if (parenthesized_expression "(uVar29 % 3 == 2)" ( (binary_expression "uVar29 % 3 == 2" (binary_expression "uVar29 % 3" identifier % number_literal) == number_literal) )) (compound_statement "{\n            uVar26 = ((uint)fVar27 & 0xffc) << 4;\n            goto code_r0x001620cb;\n          }" { (expression_statement "uVar26 = ((uint)fVar27 & 0xffc) << 4;" (assignment_expression "uVar26 = ((uint)fVar27 & 0xffc) << 4" identifier = (binary_expression "((uint)fVar27 & 0xffc) << 4" (parenthesized_expression "((uint)fVar27 & 0xffc)" ( (binary_expression "(uint)fVar27 & 0xffc" (cast_expression "(uint)fVar27" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) << number_literal)) ;) (goto_statement "goto code_r0x001620cb;" goto statement_identifier ;) })) (expression_statement "pfVar1 = local_80 + 1;" (assignment_expression "pfVar1 = local_80 + 1" identifier = (binary_expression "local_80 + 1" identifier + number_literal)) ;) (expression_statement "fVar27 = *local_80;" (assignment_expression "fVar27 = *local_80" identifier = (pointer_expression "*local_80" * identifier)) ;) (if_statement "if (param_2[0x10] != 1) {\n            fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          }" if (parenthesized_expression "(param_2[0x10] != 1)" ( (binary_expression "param_2[0x10] != 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n            fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          }" { (expression_statement "fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);" (assignment_expression "fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18)" identifier = (cast_expression "(float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18)" ( (binary_expression "(uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18" (binary_expression "(uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8" (binary_expression "(uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8" (binary_expression "(uint)fVar27 >> 0x18" (cast_expression "(uint)fVar27" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) | (binary_expression "((uint)fVar27 & 0xff0000) >> 8" (parenthesized_expression "((uint)fVar27 & 0xff0000)" ( (binary_expression "(uint)fVar27 & 0xff0000" (cast_expression "(uint)fVar27" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) >> number_literal)) | (binary_expression "((uint)fVar27 & 0xff00) << 8" (parenthesized_expression "((uint)fVar27 & 0xff00)" ( (binary_expression "(uint)fVar27 & 0xff00" (cast_expression "(uint)fVar27" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) << number_literal)) | (binary_expression "(int)fVar27 << 0x18" (cast_expression "(int)fVar27" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal)) )))) ;) })) (expression_statement "dVar16 = (double)(((uint)fVar27 >> 0x16) << 6);" (assignment_expression "dVar16 = (double)(((uint)fVar27 >> 0x16) << 6)" identifier = (cast_expression "(double)(((uint)fVar27 >> 0x16) << 6)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(((uint)fVar27 >> 0x16) << 6)" ( (binary_expression "((uint)fVar27 >> 0x16) << 6" (parenthesized_expression "((uint)fVar27 >> 0x16)" ( (binary_expression "(uint)fVar27 >> 0x16" (cast_expression "(uint)fVar27" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )) << number_literal) )))) ;) (expression_statement "local_80 = pfVar1;" (assignment_expression "local_80 = pfVar1" identifier = identifier) ;) (if_statement "if (iVar24 == 2) goto code_r0x00162130;" if (parenthesized_expression "(iVar24 == 2)" ( (binary_expression "iVar24 == 2" identifier == number_literal) )) (goto_statement "goto code_r0x00162130;" goto statement_identifier ;)) (labeled_statement "code_r0x001620d7:\n          uVar26 = uVar29 + 1;" statement_identifier : (expression_statement "uVar26 = uVar29 + 1;" (assignment_expression "uVar26 = uVar29 + 1" identifier = (binary_expression "uVar29 + 1" identifier + number_literal)) ;)) (if_statement "if (iVar24 != 3) {\n            if (iVar24 == 1) {\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }\n            else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }\n            goto code_r0x001620f8;\n          }" if (parenthesized_expression "(iVar24 != 3)" ( (binary_expression "iVar24 != 3" identifier != number_literal) )) (compound_statement "{\n            if (iVar24 == 1) {\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }\n            else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }\n            goto code_r0x001620f8;\n          }" { (if_statement "if (iVar24 == 1) {\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }\n            else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }" if (parenthesized_expression "(iVar24 == 1)" ( (binary_expression "iVar24 == 1" identifier == number_literal) )) (compound_statement "{\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }" { (expression_statement "*(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;" (assignment_expression "*(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16" (pointer_expression "*(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8)" * (cast_expression "(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + *(int *)(iVar20 + 0x14) * 8)" ( (binary_expression "local_78 + *(int *)(iVar20 + 0x14) * 8" identifier + (binary_expression "*(int *)(iVar20 + 0x14) * 8" (pointer_expression "*(int *)(iVar20 + 0x14)" * (cast_expression "(int *)(iVar20 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x14)" ( (binary_expression "iVar20 + 0x14" identifier + number_literal) )))) * number_literal)) )))) = identifier) ;) }) (else_clause "else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }" else (compound_statement "{\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }" { (expression_statement "*(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;" (assignment_expression "*(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16" (pointer_expression "*(double *)(local_78 + *(int *)(iVar20 + 8) * 8)" * (cast_expression "(double *)(local_78 + *(int *)(iVar20 + 8) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + *(int *)(iVar20 + 8) * 8)" ( (binary_expression "local_78 + *(int *)(iVar20 + 8) * 8" identifier + (binary_expression "*(int *)(iVar20 + 8) * 8" (pointer_expression "*(int *)(iVar20 + 8)" * (cast_expression "(int *)(iVar20 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 8)" ( (binary_expression "iVar20 + 8" identifier + number_literal) )))) * number_literal)) )))) = identifier) ;) (if_statement "if (iVar24 == 3) goto code_r0x0016217a;" if (parenthesized_expression "(iVar24 == 3)" ( (binary_expression "iVar24 == 3" identifier == number_literal) )) (goto_statement "goto code_r0x0016217a;" goto statement_identifier ;)) }))) (goto_statement "goto code_r0x001620f8;" goto statement_identifier ;) })) (if_statement "if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;\n          }" if (parenthesized_expression "(*(int *)(iVar20 + 0x34) != 0)" ( (binary_expression "*(int *)(iVar20 + 0x34) != 0" (pointer_expression "*(int *)(iVar20 + 0x34)" * (cast_expression "(int *)(iVar20 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x34)" ( (binary_expression "iVar20 + 0x34" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n            *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;\n          }" { (expression_statement "*(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;" (assignment_expression "*(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16" (pointer_expression "*(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8)" * (cast_expression "(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + *(int *)(iVar20 + 0x38) * 8)" ( (binary_expression "local_78 + *(int *)(iVar20 + 0x38) * 8" identifier + (binary_expression "*(int *)(iVar20 + 0x38) * 8" (pointer_expression "*(int *)(iVar20 + 0x38)" * (cast_expression "(int *)(iVar20 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x38)" ( (binary_expression "iVar20 + 0x38" identifier + number_literal) )))) * number_literal)) )))) = (binary_expression "(double)DAT_0029f710 - dVar16" (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier) - identifier)) ;) })) (labeled_statement "code_r0x0016217a:\n          iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;" statement_identifier : (expression_statement "iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;" (assignment_expression "iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1" identifier = (binary_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1" (call_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" identifier (argument_list "(uStack_6a,CONCAT11(bStack_6b,local_6c))" ( identifier , (call_expression "CONCAT11(bStack_6b,local_6c)" identifier (argument_list "(bStack_6b,local_6c)" ( identifier , identifier ))) ))) + number_literal)) ;)) (expression_statement "local_6c = (byte)iVar24;" (assignment_expression "local_6c = (byte)iVar24" identifier = (cast_expression "(byte)iVar24" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "bStack_6b = (byte)((uint)iVar24 >> 8);" (assignment_expression "bStack_6b = (byte)((uint)iVar24 >> 8)" identifier = (call_expression "(byte)((uint)iVar24 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)iVar24 >> 8)" ( (binary_expression "(uint)iVar24 >> 8" (cast_expression "(uint)iVar24" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uStack_6a = (ushort)((uint)iVar24 >> 0x10);" (assignment_expression "uStack_6a = (ushort)((uint)iVar24 >> 0x10)" identifier = (call_expression "(ushort)((uint)iVar24 >> 0x10)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "((uint)iVar24 >> 0x10)" ( (binary_expression "(uint)iVar24 >> 0x10" (cast_expression "(uint)iVar24" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_80 = (float *)((int)local_80 + uVar22);" (assignment_expression "local_80 = (float *)((int)local_80 + uVar22)" identifier = (cast_expression "(float *)((int)local_80 + uVar22)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + uVar22)" ( (binary_expression "(int)local_80 + uVar22" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "local_78 = local_78 + iVar33 * 8;" (assignment_expression "local_78 = local_78 + iVar33 * 8" identifier = (binary_expression "local_78 + iVar33 * 8" identifier + (binary_expression "iVar33 * 8" identifier * number_literal))) ;) }) while (parenthesized_expression "(iVar24 != param_3)" ( (binary_expression "iVar24 != param_3" identifier != identifier) )) ;) })) }) (else_clause "else if (0 < param_3) {\n      iVar33 = *(int *)(param_1 + 0x2a8);\n      iVar20 = 0;\n      iVar24 = *(int *)(iVar33 + 8);\n      iVar6 = *(int *)(param_1 + 0x298);\n      iVar7 = *(int *)(iVar33 + 0x34);\n      iVar8 = *(int *)(iVar33 + 0x20);\n      iVar32 = *(int *)(iVar33 + 0x14);\n      do {\n        uVar29 = 0;\n        uVar26 = 10;\n        uVar22 = param_2[0x14];\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar26 <= uVar22) {\n            uVar18 = uVar26;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar24 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar32 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        uVar26 = 0;\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar8 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar29 <= uVar22) {\n            uVar18 = uVar29;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar29 = uVar29 - uVar18;\n          uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar29);\n        param_2[0x14] = uVar22;\n        if (iVar7 != 0) {\n          *(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));\n        }\n        iVar20 = iVar20 + 1;\n        local_78 = local_78 + iVar6 * 8;\n      } while (iVar20 != param_3);\n    }" else (if_statement "if (0 < param_3) {\n      iVar33 = *(int *)(param_1 + 0x2a8);\n      iVar20 = 0;\n      iVar24 = *(int *)(iVar33 + 8);\n      iVar6 = *(int *)(param_1 + 0x298);\n      iVar7 = *(int *)(iVar33 + 0x34);\n      iVar8 = *(int *)(iVar33 + 0x20);\n      iVar32 = *(int *)(iVar33 + 0x14);\n      do {\n        uVar29 = 0;\n        uVar26 = 10;\n        uVar22 = param_2[0x14];\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar26 <= uVar22) {\n            uVar18 = uVar26;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar24 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar32 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        uVar26 = 0;\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar8 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar29 <= uVar22) {\n            uVar18 = uVar29;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar29 = uVar29 - uVar18;\n          uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar29);\n        param_2[0x14] = uVar22;\n        if (iVar7 != 0) {\n          *(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));\n        }\n        iVar20 = iVar20 + 1;\n        local_78 = local_78 + iVar6 * 8;\n      } while (iVar20 != param_3);\n    }" if (parenthesized_expression "(0 < param_3)" ( (binary_expression "0 < param_3" number_literal < identifier) )) (compound_statement "{\n      iVar33 = *(int *)(param_1 + 0x2a8);\n      iVar20 = 0;\n      iVar24 = *(int *)(iVar33 + 8);\n      iVar6 = *(int *)(param_1 + 0x298);\n      iVar7 = *(int *)(iVar33 + 0x34);\n      iVar8 = *(int *)(iVar33 + 0x20);\n      iVar32 = *(int *)(iVar33 + 0x14);\n      do {\n        uVar29 = 0;\n        uVar26 = 10;\n        uVar22 = param_2[0x14];\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar26 <= uVar22) {\n            uVar18 = uVar26;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar24 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar32 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        uVar26 = 0;\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar8 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar29 <= uVar22) {\n            uVar18 = uVar29;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar29 = uVar29 - uVar18;\n          uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar29);\n        param_2[0x14] = uVar22;\n        if (iVar7 != 0) {\n          *(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));\n        }\n        iVar20 = iVar20 + 1;\n        local_78 = local_78 + iVar6 * 8;\n      } while (iVar20 != param_3);\n    }" { (expression_statement "iVar33 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar33 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) (expression_statement "iVar20 = 0;" (assignment_expression "iVar20 = 0" identifier = number_literal) ;) (expression_statement "iVar24 = *(int *)(iVar33 + 8);" (assignment_expression "iVar24 = *(int *)(iVar33 + 8)" identifier = (pointer_expression "*(int *)(iVar33 + 8)" * (cast_expression "(int *)(iVar33 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 8)" ( (binary_expression "iVar33 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = *(int *)(param_1 + 0x298);" (assignment_expression "iVar6 = *(int *)(param_1 + 0x298)" identifier = (pointer_expression "*(int *)(param_1 + 0x298)" * (cast_expression "(int *)(param_1 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = *(int *)(iVar33 + 0x34);" (assignment_expression "iVar7 = *(int *)(iVar33 + 0x34)" identifier = (pointer_expression "*(int *)(iVar33 + 0x34)" * (cast_expression "(int *)(iVar33 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x34)" ( (binary_expression "iVar33 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = *(int *)(iVar33 + 0x20);" (assignment_expression "iVar8 = *(int *)(iVar33 + 0x20)" identifier = (pointer_expression "*(int *)(iVar33 + 0x20)" * (cast_expression "(int *)(iVar33 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x20)" ( (binary_expression "iVar33 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "iVar32 = *(int *)(iVar33 + 0x14);" (assignment_expression "iVar32 = *(int *)(iVar33 + 0x14)" identifier = (pointer_expression "*(int *)(iVar33 + 0x14)" * (cast_expression "(int *)(iVar33 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x14)" ( (binary_expression "iVar33 + 0x14" identifier + number_literal) ))))) ;) (do_statement "do {\n        uVar29 = 0;\n        uVar26 = 10;\n        uVar22 = param_2[0x14];\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar26 <= uVar22) {\n            uVar18 = uVar26;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar24 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar32 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        uVar26 = 0;\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar8 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar29 <= uVar22) {\n            uVar18 = uVar29;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar29 = uVar29 - uVar18;\n          uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar29);\n        param_2[0x14] = uVar22;\n        if (iVar7 != 0) {\n          *(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));\n        }\n        iVar20 = iVar20 + 1;\n        local_78 = local_78 + iVar6 * 8;\n      } while (iVar20 != param_3);" do (compound_statement "{\n        uVar29 = 0;\n        uVar26 = 10;\n        uVar22 = param_2[0x14];\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar26 <= uVar22) {\n            uVar18 = uVar26;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar24 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar32 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        uVar26 = 0;\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar8 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar29 <= uVar22) {\n            uVar18 = uVar29;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar29 = uVar29 - uVar18;\n          uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar29);\n        param_2[0x14] = uVar22;\n        if (iVar7 != 0) {\n          *(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));\n        }\n        iVar20 = iVar20 + 1;\n        local_78 = local_78 + iVar6 * 8;\n      }" { (expression_statement "uVar29 = 0;" (assignment_expression "uVar29 = 0" identifier = number_literal) ;) (expression_statement "uVar26 = 10;" (assignment_expression "uVar26 = 10" identifier = number_literal) ;) (expression_statement "uVar22 = param_2[0x14];" (assignment_expression "uVar22 = param_2[0x14]" identifier = (subscript_expression "param_2[0x14]" identifier [ number_literal ])) ;) (do_statement "do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar26 <= uVar22) {\n            uVar18 = uVar26;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);" do (compound_statement "{\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar26 <= uVar22) {\n            uVar18 = uVar26;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        }" { (if_statement "if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }" if (parenthesized_expression "(uVar22 == 0)" ( (binary_expression "uVar22 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }" { (expression_statement "uVar19 = (uint)*(byte *)local_80;" (assignment_expression "uVar19 = (uint)*(byte *)local_80" identifier = (binary_expression "(uint)*(byte *)local_80" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)local_80" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_80 = (float *)((int)local_80 + 1);" (assignment_expression "local_80 = (float *)((int)local_80 + 1)" identifier = (cast_expression "(float *)((int)local_80 + 1)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + 1)" ( (binary_expression "(int)local_80 + 1" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar22 = 8;" (assignment_expression "uVar22 = 8" identifier = number_literal) ;) (expression_statement "param_2[0x13] = uVar19;" (assignment_expression "param_2[0x13] = uVar19" (subscript_expression "param_2[0x13]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            uVar19 = param_2[0x13];\n          }" else (compound_statement "{\n            uVar19 = param_2[0x13];\n          }" { (expression_statement "uVar19 = param_2[0x13];" (assignment_expression "uVar19 = param_2[0x13]" identifier = (subscript_expression "param_2[0x13]" identifier [ number_literal ])) ;) }))) (expression_statement "uVar18 = uVar22;" (assignment_expression "uVar18 = uVar22" identifier = identifier) ;) (if_statement "if (uVar26 <= uVar22) {\n            uVar18 = uVar26;\n          }" if (parenthesized_expression "(uVar26 <= uVar22)" ( (binary_expression "uVar26 <= uVar22" identifier <= identifier) )) (compound_statement "{\n            uVar18 = uVar26;\n          }" { (expression_statement "uVar18 = uVar26;" (assignment_expression "uVar18 = uVar26" identifier = identifier) ;) })) (expression_statement "uVar22 = uVar22 - uVar18;" (assignment_expression "uVar22 = uVar22 - uVar18" identifier = (binary_expression "uVar22 - uVar18" identifier - identifier)) ;) (expression_statement "uVar26 = uVar26 - uVar18;" (assignment_expression "uVar26 = uVar26 - uVar18" identifier = (binary_expression "uVar26 - uVar18" identifier - identifier)) ;) (expression_statement "uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);" (assignment_expression "uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f)" identifier = (binary_expression "uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f)" (binary_expression "uVar29 << ((byte)uVar18 & 0x1f)" identifier << (parenthesized_expression "((byte)uVar18 & 0x1f)" ( (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) | (binary_expression "~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f)" (unary_expression "~(-1 << ((byte)uVar18 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar18 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar18 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar18 & 0x1f)" ( (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & (binary_expression "uVar19 >> ((byte)uVar22 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar22 & 0x1f)" ( (binary_expression "(byte)uVar22 & 0x1f" (cast_expression "(byte)uVar22" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))))) ;) }) while (parenthesized_expression "(0 < (int)uVar26)" ( (binary_expression "0 < (int)uVar26" number_literal < (cast_expression "(int)uVar26" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "param_2[0x14] = uVar22;" (assignment_expression "param_2[0x14] = uVar22" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(double *)(local_78 + iVar24 * 8) = (double)((uVar29 & 0x3ff) << 6);" (assignment_expression "*(double *)(local_78 + iVar24 * 8) = (double)((uVar29 & 0x3ff) << 6)" (pointer_expression "*(double *)(local_78 + iVar24 * 8)" * (cast_expression "(double *)(local_78 + iVar24 * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + iVar24 * 8)" ( (binary_expression "local_78 + iVar24 * 8" identifier + (binary_expression "iVar24 * 8" identifier * number_literal)) )))) = (cast_expression "(double)((uVar29 & 0x3ff) << 6)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((uVar29 & 0x3ff) << 6)" ( (binary_expression "(uVar29 & 0x3ff) << 6" (parenthesized_expression "(uVar29 & 0x3ff)" ( (binary_expression "uVar29 & 0x3ff" identifier & number_literal) )) << number_literal) )))) ;) (expression_statement "uVar29 = 0;" (assignment_expression "uVar29 = 0" identifier = number_literal) ;) (expression_statement "uVar26 = 10;" (assignment_expression "uVar26 = 10" identifier = number_literal) ;) (do_statement "do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);" do (compound_statement "{\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        }" { (if_statement "if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }" if (parenthesized_expression "(uVar22 == 0)" ( (binary_expression "uVar22 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }" { (expression_statement "uVar19 = (uint)*(byte *)local_80;" (assignment_expression "uVar19 = (uint)*(byte *)local_80" identifier = (binary_expression "(uint)*(byte *)local_80" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)local_80" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_80 = (float *)((int)local_80 + 1);" (assignment_expression "local_80 = (float *)((int)local_80 + 1)" identifier = (cast_expression "(float *)((int)local_80 + 1)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + 1)" ( (binary_expression "(int)local_80 + 1" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar22 = 8;" (assignment_expression "uVar22 = 8" identifier = number_literal) ;) (expression_statement "param_2[0x13] = uVar19;" (assignment_expression "param_2[0x13] = uVar19" (subscript_expression "param_2[0x13]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            uVar19 = param_2[0x13];\n          }" else (compound_statement "{\n            uVar19 = param_2[0x13];\n          }" { (expression_statement "uVar19 = param_2[0x13];" (assignment_expression "uVar19 = param_2[0x13]" identifier = (subscript_expression "param_2[0x13]" identifier [ number_literal ])) ;) }))) (expression_statement "uVar18 = uVar26;" (assignment_expression "uVar18 = uVar26" identifier = identifier) ;) (if_statement "if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }" if (parenthesized_expression "(uVar22 <= uVar26)" ( (binary_expression "uVar22 <= uVar26" identifier <= identifier) )) (compound_statement "{\n            uVar18 = uVar22;\n          }" { (expression_statement "uVar18 = uVar22;" (assignment_expression "uVar18 = uVar22" identifier = identifier) ;) })) (expression_statement "uVar22 = uVar22 - uVar18;" (assignment_expression "uVar22 = uVar22 - uVar18" identifier = (binary_expression "uVar22 - uVar18" identifier - identifier)) ;) (expression_statement "uVar26 = uVar26 - uVar18;" (assignment_expression "uVar26 = uVar26 - uVar18" identifier = (binary_expression "uVar26 - uVar18" identifier - identifier)) ;) (expression_statement "uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);" (assignment_expression "uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f)" identifier = (binary_expression "uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f)" (binary_expression "uVar29 << ((byte)uVar18 & 0x1f)" identifier << (parenthesized_expression "((byte)uVar18 & 0x1f)" ( (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) | (binary_expression "~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f)" (unary_expression "~(-1 << ((byte)uVar18 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar18 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar18 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar18 & 0x1f)" ( (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & (binary_expression "uVar19 >> ((byte)uVar22 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar22 & 0x1f)" ( (binary_expression "(byte)uVar22 & 0x1f" (cast_expression "(byte)uVar22" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))))) ;) }) while (parenthesized_expression "(0 < (int)uVar26)" ( (binary_expression "0 < (int)uVar26" number_literal < (cast_expression "(int)uVar26" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "param_2[0x14] = uVar22;" (assignment_expression "param_2[0x14] = uVar22" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(double *)(local_78 + iVar32 * 8) = (double)((uVar29 & 0x3ff) << 6);" (assignment_expression "*(double *)(local_78 + iVar32 * 8) = (double)((uVar29 & 0x3ff) << 6)" (pointer_expression "*(double *)(local_78 + iVar32 * 8)" * (cast_expression "(double *)(local_78 + iVar32 * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + iVar32 * 8)" ( (binary_expression "local_78 + iVar32 * 8" identifier + (binary_expression "iVar32 * 8" identifier * number_literal)) )))) = (cast_expression "(double)((uVar29 & 0x3ff) << 6)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((uVar29 & 0x3ff) << 6)" ( (binary_expression "(uVar29 & 0x3ff) << 6" (parenthesized_expression "(uVar29 & 0x3ff)" ( (binary_expression "uVar29 & 0x3ff" identifier & number_literal) )) << number_literal) )))) ;) (expression_statement "uVar29 = 0;" (assignment_expression "uVar29 = 0" identifier = number_literal) ;) (expression_statement "uVar26 = 10;" (assignment_expression "uVar26 = 10" identifier = number_literal) ;) (do_statement "do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);" do (compound_statement "{\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        }" { (if_statement "if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }" if (parenthesized_expression "(uVar22 == 0)" ( (binary_expression "uVar22 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }" { (expression_statement "uVar19 = (uint)*(byte *)local_80;" (assignment_expression "uVar19 = (uint)*(byte *)local_80" identifier = (binary_expression "(uint)*(byte *)local_80" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)local_80" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_80 = (float *)((int)local_80 + 1);" (assignment_expression "local_80 = (float *)((int)local_80 + 1)" identifier = (cast_expression "(float *)((int)local_80 + 1)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + 1)" ( (binary_expression "(int)local_80 + 1" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar22 = 8;" (assignment_expression "uVar22 = 8" identifier = number_literal) ;) (expression_statement "param_2[0x13] = uVar19;" (assignment_expression "param_2[0x13] = uVar19" (subscript_expression "param_2[0x13]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            uVar19 = param_2[0x13];\n          }" else (compound_statement "{\n            uVar19 = param_2[0x13];\n          }" { (expression_statement "uVar19 = param_2[0x13];" (assignment_expression "uVar19 = param_2[0x13]" identifier = (subscript_expression "param_2[0x13]" identifier [ number_literal ])) ;) }))) (expression_statement "uVar18 = uVar26;" (assignment_expression "uVar18 = uVar26" identifier = identifier) ;) (if_statement "if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }" if (parenthesized_expression "(uVar22 <= uVar26)" ( (binary_expression "uVar22 <= uVar26" identifier <= identifier) )) (compound_statement "{\n            uVar18 = uVar22;\n          }" { (expression_statement "uVar18 = uVar22;" (assignment_expression "uVar18 = uVar22" identifier = identifier) ;) })) (expression_statement "uVar22 = uVar22 - uVar18;" (assignment_expression "uVar22 = uVar22 - uVar18" identifier = (binary_expression "uVar22 - uVar18" identifier - identifier)) ;) (expression_statement "uVar26 = uVar26 - uVar18;" (assignment_expression "uVar26 = uVar26 - uVar18" identifier = (binary_expression "uVar26 - uVar18" identifier - identifier)) ;) (expression_statement "uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);" (assignment_expression "uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f)" identifier = (binary_expression "uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f)" (binary_expression "uVar29 << ((byte)uVar18 & 0x1f)" identifier << (parenthesized_expression "((byte)uVar18 & 0x1f)" ( (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) | (binary_expression "~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f)" (unary_expression "~(-1 << ((byte)uVar18 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar18 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar18 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar18 & 0x1f)" ( (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & (binary_expression "uVar19 >> ((byte)uVar22 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar22 & 0x1f)" ( (binary_expression "(byte)uVar22 & 0x1f" (cast_expression "(byte)uVar22" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))))) ;) }) while (parenthesized_expression "(0 < (int)uVar26)" ( (binary_expression "0 < (int)uVar26" number_literal < (cast_expression "(int)uVar26" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" identifier = number_literal) ;) (expression_statement "param_2[0x14] = uVar22;" (assignment_expression "param_2[0x14] = uVar22" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(double *)(local_78 + iVar8 * 8) = (double)((uVar29 & 0x3ff) << 6);" (assignment_expression "*(double *)(local_78 + iVar8 * 8) = (double)((uVar29 & 0x3ff) << 6)" (pointer_expression "*(double *)(local_78 + iVar8 * 8)" * (cast_expression "(double *)(local_78 + iVar8 * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + iVar8 * 8)" ( (binary_expression "local_78 + iVar8 * 8" identifier + (binary_expression "iVar8 * 8" identifier * number_literal)) )))) = (cast_expression "(double)((uVar29 & 0x3ff) << 6)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((uVar29 & 0x3ff) << 6)" ( (binary_expression "(uVar29 & 0x3ff) << 6" (parenthesized_expression "(uVar29 & 0x3ff)" ( (binary_expression "uVar29 & 0x3ff" identifier & number_literal) )) << number_literal) )))) ;) (expression_statement "uVar29 = 10;" (assignment_expression "uVar29 = 10" identifier = number_literal) ;) (do_statement "do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar29 <= uVar22) {\n            uVar18 = uVar29;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar29 = uVar29 - uVar18;\n          uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar29);" do (compound_statement "{\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar29 <= uVar22) {\n            uVar18 = uVar29;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar29 = uVar29 - uVar18;\n          uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        }" { (if_statement "if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }" if (parenthesized_expression "(uVar22 == 0)" ( (binary_expression "uVar22 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }" { (expression_statement "uVar19 = (uint)*(byte *)local_80;" (assignment_expression "uVar19 = (uint)*(byte *)local_80" identifier = (binary_expression "(uint)*(byte *)local_80" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)local_80" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_80 = (float *)((int)local_80 + 1);" (assignment_expression "local_80 = (float *)((int)local_80 + 1)" identifier = (cast_expression "(float *)((int)local_80 + 1)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + 1)" ( (binary_expression "(int)local_80 + 1" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar22 = 8;" (assignment_expression "uVar22 = 8" identifier = number_literal) ;) (expression_statement "param_2[0x13] = uVar19;" (assignment_expression "param_2[0x13] = uVar19" (subscript_expression "param_2[0x13]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            uVar19 = param_2[0x13];\n          }" else (compound_statement "{\n            uVar19 = param_2[0x13];\n          }" { (expression_statement "uVar19 = param_2[0x13];" (assignment_expression "uVar19 = param_2[0x13]" identifier = (subscript_expression "param_2[0x13]" identifier [ number_literal ])) ;) }))) (expression_statement "uVar18 = uVar22;" (assignment_expression "uVar18 = uVar22" identifier = identifier) ;) (if_statement "if (uVar29 <= uVar22) {\n            uVar18 = uVar29;\n          }" if (parenthesized_expression "(uVar29 <= uVar22)" ( (binary_expression "uVar29 <= uVar22" identifier <= identifier) )) (compound_statement "{\n            uVar18 = uVar29;\n          }" { (expression_statement "uVar18 = uVar29;" (assignment_expression "uVar18 = uVar29" identifier = identifier) ;) })) (expression_statement "uVar22 = uVar22 - uVar18;" (assignment_expression "uVar22 = uVar22 - uVar18" identifier = (binary_expression "uVar22 - uVar18" identifier - identifier)) ;) (expression_statement "uVar29 = uVar29 - uVar18;" (assignment_expression "uVar29 = uVar29 - uVar18" identifier = (binary_expression "uVar29 - uVar18" identifier - identifier)) ;) (expression_statement "uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);" (assignment_expression "uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f)" identifier = (binary_expression "uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f)" (binary_expression "uVar26 << ((byte)uVar18 & 0x1f)" identifier << (parenthesized_expression "((byte)uVar18 & 0x1f)" ( (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) | (binary_expression "~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f)" (unary_expression "~(-1 << ((byte)uVar18 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar18 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar18 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar18 & 0x1f)" ( (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & (binary_expression "uVar19 >> ((byte)uVar22 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar22 & 0x1f)" ( (binary_expression "(byte)uVar22 & 0x1f" (cast_expression "(byte)uVar22" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))))) ;) }) while (parenthesized_expression "(0 < (int)uVar29)" ( (binary_expression "0 < (int)uVar29" number_literal < (cast_expression "(int)uVar29" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "param_2[0x14] = uVar22;" (assignment_expression "param_2[0x14] = uVar22" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar7 != 0) {\n          *(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));\n        }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n          *(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));\n        }" { (expression_statement "*(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));" (assignment_expression "*(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6))" (pointer_expression "*(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8)" * (cast_expression "(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + *(int *)(iVar33 + 0x38) * 8)" ( (binary_expression "local_78 + *(int *)(iVar33 + 0x38) * 8" identifier + (binary_expression "*(int *)(iVar33 + 0x38) * 8" (pointer_expression "*(int *)(iVar33 + 0x38)" * (cast_expression "(int *)(iVar33 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x38)" ( (binary_expression "iVar33 + 0x38" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6))" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6))" ( (binary_expression "DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6)" identifier - (cast_expression "(float)((uVar26 & 0x3ff) << 6)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((uVar26 & 0x3ff) << 6)" ( (binary_expression "(uVar26 & 0x3ff) << 6" (parenthesized_expression "(uVar26 & 0x3ff)" ( (binary_expression "uVar26 & 0x3ff" identifier & number_literal) )) << number_literal) )))) )))) ;) })) (expression_statement "iVar20 = iVar20 + 1;" (assignment_expression "iVar20 = iVar20 + 1" identifier = (binary_expression "iVar20 + 1" identifier + number_literal)) ;) (expression_statement "local_78 = local_78 + iVar6 * 8;" (assignment_expression "local_78 = local_78 + iVar6 * 8" identifier = (binary_expression "local_78 + iVar6 * 8" identifier + (binary_expression "iVar6 * 8" identifier * number_literal))) ;) }) while (parenthesized_expression "(iVar20 != param_3)" ( (binary_expression "iVar20 != param_3" identifier != identifier) )) ;) })))) (break_statement "break;" break ;)) (case_statement "case 0x10:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        uVar22 = param_2[0x10];\n        do {\n          if (uVar22 == 1) {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          else {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          lVar34 = (longdouble)FUN_00159350();\n          if (*(int *)(iVar33 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n    }\n    else if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(iVar20 + 0x20);\n      iVar7 = *(int *)(iVar20 + 8);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        uVar3 = *(ushort *)(param_5 + 1);\n        uVar31 = *(ushort *)((int)param_5 + 6);\n        uVar4 = *(ushort *)param_5;\n        pdVar21 = (double *)(iVar24 * 8 + param_6);\n        uVar5 = *(ushort *)((int)param_5 + 2);\n        pdVar28 = (double *)(iVar6 * 8 + param_6);\n        pdVar30 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)uVar4;\n          *pdVar21 = (double)uVar5;\n          *pdVar28 = (double)uVar3;\n        }\n        else {\n          uVar31 = uVar31 << 8 | uVar31 >> 8;\n          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);\n          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);\n          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 8);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;" case number_literal : (if_statement "if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        uVar22 = param_2[0x10];\n        do {\n          if (uVar22 == 1) {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          else {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          lVar34 = (longdouble)FUN_00159350();\n          if (*(int *)(iVar33 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n    }\n    else if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(iVar20 + 0x20);\n      iVar7 = *(int *)(iVar20 + 8);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        uVar3 = *(ushort *)(param_5 + 1);\n        uVar31 = *(ushort *)((int)param_5 + 6);\n        uVar4 = *(ushort *)param_5;\n        pdVar21 = (double *)(iVar24 * 8 + param_6);\n        uVar5 = *(ushort *)((int)param_5 + 2);\n        pdVar28 = (double *)(iVar6 * 8 + param_6);\n        pdVar30 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)uVar4;\n          *pdVar21 = (double)uVar5;\n          *pdVar28 = (double)uVar3;\n        }\n        else {\n          uVar31 = uVar31 << 8 | uVar31 >> 8;\n          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);\n          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);\n          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 8);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }" if (parenthesized_expression "(param_2[2] == 1)" ( (binary_expression "param_2[2] == 1" (subscript_expression "param_2[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      if (0 < param_3) {\n        iVar20 = 0;\n        uVar22 = param_2[0x10];\n        do {\n          if (uVar22 == 1) {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          else {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          lVar34 = (longdouble)FUN_00159350();\n          if (*(int *)(iVar33 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n    }" { (if_statement "if (0 < param_3) {\n        iVar20 = 0;\n        uVar22 = param_2[0x10];\n        do {\n          if (uVar22 == 1) {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          else {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          lVar34 = (longdouble)FUN_00159350();\n          if (*(int *)(iVar33 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }" if (parenthesized_expression "(0 < param_3)" ( (binary_expression "0 < param_3" number_literal < identifier) )) (compound_statement "{\n        iVar20 = 0;\n        uVar22 = param_2[0x10];\n        do {\n          if (uVar22 == 1) {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          else {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          lVar34 = (longdouble)FUN_00159350();\n          if (*(int *)(iVar33 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }" { (expression_statement "iVar20 = 0;" (assignment_expression "iVar20 = 0" identifier = number_literal) ;) (expression_statement "uVar22 = param_2[0x10];" (assignment_expression "uVar22 = param_2[0x10]" identifier = (subscript_expression "param_2[0x10]" identifier [ number_literal ])) ;) (do_statement "do {\n          if (uVar22 == 1) {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          else {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          lVar34 = (longdouble)FUN_00159350();\n          if (*(int *)(iVar33 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);" do (compound_statement "{\n          if (uVar22 == 1) {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          else {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          lVar34 = (longdouble)FUN_00159350();\n          if (*(int *)(iVar33 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        }" { (if_statement "if (uVar22 == 1) {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          else {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }" if (parenthesized_expression "(uVar22 == 1)" ( (binary_expression "uVar22 == 1" identifier == number_literal) )) (compound_statement "{\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }" { (expression_statement "lVar34 = (longdouble)FUN_00159350();" (assignment_expression "lVar34 = (longdouble)FUN_00159350()" identifier = (cast_expression "(longdouble)FUN_00159350()" ( (type_descriptor "longdouble" type_identifier) ) (call_expression "FUN_00159350()" identifier (argument_list "()" ( ))))) ;) (expression_statement "fVar27 = DAT_0029f710;" (assignment_expression "fVar27 = DAT_0029f710" identifier = identifier) ;) (expression_statement "iVar33 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar33 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) (expression_statement "*(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);" (assignment_expression "*(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34)" (pointer_expression "*(double *)(param_6 + *(int *)(iVar33 + 8) * 8)" * (cast_expression "(double *)(param_6 + *(int *)(iVar33 + 8) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(iVar33 + 8) * 8)" ( (binary_expression "param_6 + *(int *)(iVar33 + 8) * 8" identifier + (binary_expression "*(int *)(iVar33 + 8) * 8" (pointer_expression "*(int *)(iVar33 + 8)" * (cast_expression "(int *)(iVar33 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 8)" ( (binary_expression "iVar33 + 8" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(double)((longdouble)DAT_0029f710 * lVar34)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((longdouble)DAT_0029f710 * lVar34)" ( (binary_expression "(longdouble)DAT_0029f710 * lVar34" (cast_expression "(longdouble)DAT_0029f710" ( (type_descriptor "longdouble" type_identifier) ) identifier) * identifier) )))) ;) (expression_statement "lVar34 = (longdouble)FUN_00159350();" (assignment_expression "lVar34 = (longdouble)FUN_00159350()" identifier = (cast_expression "(longdouble)FUN_00159350()" ( (type_descriptor "longdouble" type_identifier) ) (call_expression "FUN_00159350()" identifier (argument_list "()" ( ))))) ;) (expression_statement "*(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);" (assignment_expression "*(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27)" (pointer_expression "*(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8)" * (cast_expression "(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(iVar33 + 0x14) * 8)" ( (binary_expression "param_6 + *(int *)(iVar33 + 0x14) * 8" identifier + (binary_expression "*(int *)(iVar33 + 0x14) * 8" (pointer_expression "*(int *)(iVar33 + 0x14)" * (cast_expression "(int *)(iVar33 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x14)" ( (binary_expression "iVar33 + 0x14" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(double)(lVar34 * (longdouble)fVar27)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(lVar34 * (longdouble)fVar27)" ( (binary_expression "lVar34 * (longdouble)fVar27" identifier * (cast_expression "(longdouble)fVar27" ( (type_descriptor "longdouble" type_identifier) ) identifier)) )))) ;) (expression_statement "lVar34 = (longdouble)FUN_00159350();" (assignment_expression "lVar34 = (longdouble)FUN_00159350()" identifier = (cast_expression "(longdouble)FUN_00159350()" ( (type_descriptor "longdouble" type_identifier) ) (call_expression "FUN_00159350()" identifier (argument_list "()" ( ))))) ;) (expression_statement "*(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);" (assignment_expression "*(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27)" (pointer_expression "*(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8)" * (cast_expression "(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(iVar33 + 0x20) * 8)" ( (binary_expression "param_6 + *(int *)(iVar33 + 0x20) * 8" identifier + (binary_expression "*(int *)(iVar33 + 0x20) * 8" (pointer_expression "*(int *)(iVar33 + 0x20)" * (cast_expression "(int *)(iVar33 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x20)" ( (binary_expression "iVar33 + 0x20" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(double)(lVar34 * (longdouble)fVar27)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(lVar34 * (longdouble)fVar27)" ( (binary_expression "lVar34 * (longdouble)fVar27" identifier * (cast_expression "(longdouble)fVar27" ( (type_descriptor "longdouble" type_identifier) ) identifier)) )))) ;) }) (else_clause "else {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }" else (compound_statement "{\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }" { (expression_statement "lVar34 = (longdouble)FUN_00159350();" (assignment_expression "lVar34 = (longdouble)FUN_00159350()" identifier = (cast_expression "(longdouble)FUN_00159350()" ( (type_descriptor "longdouble" type_identifier) ) (call_expression "FUN_00159350()" identifier (argument_list "()" ( ))))) ;) (expression_statement "fVar27 = DAT_0029f710;" (assignment_expression "fVar27 = DAT_0029f710" identifier = identifier) ;) (expression_statement "iVar33 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar33 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) (expression_statement "*(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);" (assignment_expression "*(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34)" (pointer_expression "*(double *)(param_6 + *(int *)(iVar33 + 8) * 8)" * (cast_expression "(double *)(param_6 + *(int *)(iVar33 + 8) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(iVar33 + 8) * 8)" ( (binary_expression "param_6 + *(int *)(iVar33 + 8) * 8" identifier + (binary_expression "*(int *)(iVar33 + 8) * 8" (pointer_expression "*(int *)(iVar33 + 8)" * (cast_expression "(int *)(iVar33 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 8)" ( (binary_expression "iVar33 + 8" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(double)((longdouble)DAT_0029f710 * lVar34)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((longdouble)DAT_0029f710 * lVar34)" ( (binary_expression "(longdouble)DAT_0029f710 * lVar34" (cast_expression "(longdouble)DAT_0029f710" ( (type_descriptor "longdouble" type_identifier) ) identifier) * identifier) )))) ;) (expression_statement "lVar34 = (longdouble)FUN_00159350();" (assignment_expression "lVar34 = (longdouble)FUN_00159350()" identifier = (cast_expression "(longdouble)FUN_00159350()" ( (type_descriptor "longdouble" type_identifier) ) (call_expression "FUN_00159350()" identifier (argument_list "()" ( ))))) ;) (expression_statement "*(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);" (assignment_expression "*(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27)" (pointer_expression "*(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8)" * (cast_expression "(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(iVar33 + 0x14) * 8)" ( (binary_expression "param_6 + *(int *)(iVar33 + 0x14) * 8" identifier + (binary_expression "*(int *)(iVar33 + 0x14) * 8" (pointer_expression "*(int *)(iVar33 + 0x14)" * (cast_expression "(int *)(iVar33 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x14)" ( (binary_expression "iVar33 + 0x14" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(double)(lVar34 * (longdouble)fVar27)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(lVar34 * (longdouble)fVar27)" ( (binary_expression "lVar34 * (longdouble)fVar27" identifier * (cast_expression "(longdouble)fVar27" ( (type_descriptor "longdouble" type_identifier) ) identifier)) )))) ;) (expression_statement "lVar34 = (longdouble)FUN_00159350();" (assignment_expression "lVar34 = (longdouble)FUN_00159350()" identifier = (cast_expression "(longdouble)FUN_00159350()" ( (type_descriptor "longdouble" type_identifier) ) (call_expression "FUN_00159350()" identifier (argument_list "()" ( ))))) ;) (expression_statement "*(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);" (assignment_expression "*(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27)" (pointer_expression "*(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8)" * (cast_expression "(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(iVar33 + 0x20) * 8)" ( (binary_expression "param_6 + *(int *)(iVar33 + 0x20) * 8" identifier + (binary_expression "*(int *)(iVar33 + 0x20) * 8" (pointer_expression "*(int *)(iVar33 + 0x20)" * (cast_expression "(int *)(iVar33 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x20)" ( (binary_expression "iVar33 + 0x20" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(double)(lVar34 * (longdouble)fVar27)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(lVar34 * (longdouble)fVar27)" ( (binary_expression "lVar34 * (longdouble)fVar27" identifier * (cast_expression "(longdouble)fVar27" ( (type_descriptor "longdouble" type_identifier) ) identifier)) )))) ;) }))) (expression_statement "lVar34 = (longdouble)FUN_00159350();" (assignment_expression "lVar34 = (longdouble)FUN_00159350()" identifier = (cast_expression "(longdouble)FUN_00159350()" ( (type_descriptor "longdouble" type_identifier) ) (call_expression "FUN_00159350()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (*(int *)(iVar33 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);\n          }" if (parenthesized_expression "(*(int *)(iVar33 + 0x34) != 0)" ( (binary_expression "*(int *)(iVar33 + 0x34) != 0" (pointer_expression "*(int *)(iVar33 + 0x34)" * (cast_expression "(int *)(iVar33 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x34)" ( (binary_expression "iVar33 + 0x34" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n            *(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);\n          }" { (expression_statement "*(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);" (assignment_expression "*(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710)" (pointer_expression "*(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8)" * (cast_expression "(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(iVar33 + 0x38) * 8)" ( (binary_expression "param_6 + *(int *)(iVar33 + 0x38) * 8" identifier + (binary_expression "*(int *)(iVar33 + 0x38) * 8" (pointer_expression "*(int *)(iVar33 + 0x38)" * (cast_expression "(int *)(iVar33 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x38)" ( (binary_expression "iVar33 + 0x38" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710)" ( (binary_expression "(longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710" (cast_expression "(longdouble)DAT_0029f710" ( (type_descriptor "longdouble" type_identifier) ) identifier) - (binary_expression "lVar34 * (longdouble)DAT_0029f710" identifier * (cast_expression "(longdouble)DAT_0029f710" ( (type_descriptor "longdouble" type_identifier) ) identifier))) )))) ;) })) (expression_statement "iVar20 = iVar20 + 1;" (assignment_expression "iVar20 = iVar20 + 1" identifier = (binary_expression "iVar20 + 1" identifier + number_literal)) ;) (expression_statement "param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;" (assignment_expression "param_6 = param_6 + *(int *)(param_1 + 0x298) * 8" identifier = (binary_expression "param_6 + *(int *)(param_1 + 0x298) * 8" identifier + (binary_expression "*(int *)(param_1 + 0x298) * 8" (pointer_expression "*(int *)(param_1 + 0x298)" * (cast_expression "(int *)(param_1 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) )))) * number_literal))) ;) }) while (parenthesized_expression "(iVar20 != param_3)" ( (binary_expression "iVar20 != param_3" identifier != identifier) )) ;) })) }) (else_clause "else if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(iVar20 + 0x20);\n      iVar7 = *(int *)(iVar20 + 8);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        uVar3 = *(ushort *)(param_5 + 1);\n        uVar31 = *(ushort *)((int)param_5 + 6);\n        uVar4 = *(ushort *)param_5;\n        pdVar21 = (double *)(iVar24 * 8 + param_6);\n        uVar5 = *(ushort *)((int)param_5 + 2);\n        pdVar28 = (double *)(iVar6 * 8 + param_6);\n        pdVar30 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)uVar4;\n          *pdVar21 = (double)uVar5;\n          *pdVar28 = (double)uVar3;\n        }\n        else {\n          uVar31 = uVar31 << 8 | uVar31 >> 8;\n          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);\n          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);\n          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 8);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }" else (if_statement "if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(iVar20 + 0x20);\n      iVar7 = *(int *)(iVar20 + 8);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        uVar3 = *(ushort *)(param_5 + 1);\n        uVar31 = *(ushort *)((int)param_5 + 6);\n        uVar4 = *(ushort *)param_5;\n        pdVar21 = (double *)(iVar24 * 8 + param_6);\n        uVar5 = *(ushort *)((int)param_5 + 2);\n        pdVar28 = (double *)(iVar6 * 8 + param_6);\n        pdVar30 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)uVar4;\n          *pdVar21 = (double)uVar5;\n          *pdVar28 = (double)uVar3;\n        }\n        else {\n          uVar31 = uVar31 << 8 | uVar31 >> 8;\n          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);\n          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);\n          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 8);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }" if (parenthesized_expression "(0 < param_3)" ( (binary_expression "0 < param_3" number_literal < identifier) )) (compound_statement "{\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(iVar20 + 0x20);\n      iVar7 = *(int *)(iVar20 + 8);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        uVar3 = *(ushort *)(param_5 + 1);\n        uVar31 = *(ushort *)((int)param_5 + 6);\n        uVar4 = *(ushort *)param_5;\n        pdVar21 = (double *)(iVar24 * 8 + param_6);\n        uVar5 = *(ushort *)((int)param_5 + 2);\n        pdVar28 = (double *)(iVar6 * 8 + param_6);\n        pdVar30 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)uVar4;\n          *pdVar21 = (double)uVar5;\n          *pdVar28 = (double)uVar3;\n        }\n        else {\n          uVar31 = uVar31 << 8 | uVar31 >> 8;\n          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);\n          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);\n          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 8);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }" { (expression_statement "iVar20 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar20 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) (expression_statement "uVar22 = param_2[0x10];" (assignment_expression "uVar22 = param_2[0x10]" identifier = (subscript_expression "param_2[0x10]" identifier [ number_literal ])) ;) (expression_statement "uVar26 = param_2[9];" (assignment_expression "uVar26 = param_2[9]" identifier = (subscript_expression "param_2[9]" identifier [ number_literal ])) ;) (expression_statement "iVar33 = *(int *)(param_1 + 0x298);" (assignment_expression "iVar33 = *(int *)(param_1 + 0x298)" identifier = (pointer_expression "*(int *)(param_1 + 0x298)" * (cast_expression "(int *)(param_1 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) ))))) ;) (expression_statement "iVar24 = *(int *)(iVar20 + 0x14);" (assignment_expression "iVar24 = *(int *)(iVar20 + 0x14)" identifier = (pointer_expression "*(int *)(iVar20 + 0x14)" * (cast_expression "(int *)(iVar20 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x14)" ( (binary_expression "iVar20 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = *(int *)(iVar20 + 0x20);" (assignment_expression "iVar6 = *(int *)(iVar20 + 0x20)" identifier = (pointer_expression "*(int *)(iVar20 + 0x20)" * (cast_expression "(int *)(iVar20 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x20)" ( (binary_expression "iVar20 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = *(int *)(iVar20 + 8);" (assignment_expression "iVar7 = *(int *)(iVar20 + 8)" identifier = (pointer_expression "*(int *)(iVar20 + 8)" * (cast_expression "(int *)(iVar20 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 8)" ( (binary_expression "iVar20 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = *(int *)(iVar20 + 0x34);" (assignment_expression "iVar8 = *(int *)(iVar20 + 0x34)" identifier = (pointer_expression "*(int *)(iVar20 + 0x34)" * (cast_expression "(int *)(iVar20 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x34)" ( (binary_expression "iVar20 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "iVar32 = 0;" (assignment_expression "iVar32 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar3 = *(ushort *)(param_5 + 1);\n        uVar31 = *(ushort *)((int)param_5 + 6);\n        uVar4 = *(ushort *)param_5;\n        pdVar21 = (double *)(iVar24 * 8 + param_6);\n        uVar5 = *(ushort *)((int)param_5 + 2);\n        pdVar28 = (double *)(iVar6 * 8 + param_6);\n        pdVar30 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)uVar4;\n          *pdVar21 = (double)uVar5;\n          *pdVar28 = (double)uVar3;\n        }\n        else {\n          uVar31 = uVar31 << 8 | uVar31 >> 8;\n          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);\n          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);\n          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 8);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);" do (compound_statement "{\n        uVar3 = *(ushort *)(param_5 + 1);\n        uVar31 = *(ushort *)((int)param_5 + 6);\n        uVar4 = *(ushort *)param_5;\n        pdVar21 = (double *)(iVar24 * 8 + param_6);\n        uVar5 = *(ushort *)((int)param_5 + 2);\n        pdVar28 = (double *)(iVar6 * 8 + param_6);\n        pdVar30 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)uVar4;\n          *pdVar21 = (double)uVar5;\n          *pdVar28 = (double)uVar3;\n        }\n        else {\n          uVar31 = uVar31 << 8 | uVar31 >> 8;\n          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);\n          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);\n          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 8);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      }" { (expression_statement "uVar3 = *(ushort *)(param_5 + 1);" (assignment_expression "uVar3 = *(ushort *)(param_5 + 1)" identifier = (pointer_expression "*(ushort *)(param_5 + 1)" * (cast_expression "(ushort *)(param_5 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 1)" ( (binary_expression "param_5 + 1" identifier + number_literal) ))))) ;) (expression_statement "uVar31 = *(ushort *)((int)param_5 + 6);" (assignment_expression "uVar31 = *(ushort *)((int)param_5 + 6)" identifier = (pointer_expression "*(ushort *)((int)param_5 + 6)" * (cast_expression "(ushort *)((int)param_5 + 6)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 6)" ( (binary_expression "(int)param_5 + 6" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "uVar4 = *(ushort *)param_5;" (assignment_expression "uVar4 = *(ushort *)param_5" identifier = (pointer_expression "*(ushort *)param_5" * (cast_expression "(ushort *)param_5" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "pdVar21 = (double *)(iVar24 * 8 + param_6);" (assignment_expression "pdVar21 = (double *)(iVar24 * 8 + param_6)" identifier = (cast_expression "(double *)(iVar24 * 8 + param_6)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar24 * 8 + param_6)" ( (binary_expression "iVar24 * 8 + param_6" (binary_expression "iVar24 * 8" identifier * number_literal) + identifier) )))) ;) (expression_statement "uVar5 = *(ushort *)((int)param_5 + 2);" (assignment_expression "uVar5 = *(ushort *)((int)param_5 + 2)" identifier = (pointer_expression "*(ushort *)((int)param_5 + 2)" * (cast_expression "(ushort *)((int)param_5 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 2)" ( (binary_expression "(int)param_5 + 2" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "pdVar28 = (double *)(iVar6 * 8 + param_6);" (assignment_expression "pdVar28 = (double *)(iVar6 * 8 + param_6)" identifier = (cast_expression "(double *)(iVar6 * 8 + param_6)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 * 8 + param_6)" ( (binary_expression "iVar6 * 8 + param_6" (binary_expression "iVar6 * 8" identifier * number_literal) + identifier) )))) ;) (expression_statement "pdVar30 = (double *)(iVar7 * 8 + param_6);" (assignment_expression "pdVar30 = (double *)(iVar7 * 8 + param_6)" identifier = (cast_expression "(double *)(iVar7 * 8 + param_6)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 * 8 + param_6)" ( (binary_expression "iVar7 * 8 + param_6" (binary_expression "iVar7 * 8" identifier * number_literal) + identifier) )))) ;) (if_statement "if (uVar22 == 1) {\n          *pdVar30 = (double)uVar4;\n          *pdVar21 = (double)uVar5;\n          *pdVar28 = (double)uVar3;\n        }\n        else {\n          uVar31 = uVar31 << 8 | uVar31 >> 8;\n          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);\n          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);\n          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n        }" if (parenthesized_expression "(uVar22 == 1)" ( (binary_expression "uVar22 == 1" identifier == number_literal) )) (compound_statement "{\n          *pdVar30 = (double)uVar4;\n          *pdVar21 = (double)uVar5;\n          *pdVar28 = (double)uVar3;\n        }" { (expression_statement "*pdVar30 = (double)uVar4;" (assignment_expression "*pdVar30 = (double)uVar4" (pointer_expression "*pdVar30" * identifier) = (cast_expression "(double)uVar4" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "*pdVar21 = (double)uVar5;" (assignment_expression "*pdVar21 = (double)uVar5" (pointer_expression "*pdVar21" * identifier) = (cast_expression "(double)uVar5" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "*pdVar28 = (double)uVar3;" (assignment_expression "*pdVar28 = (double)uVar3" (pointer_expression "*pdVar28" * identifier) = (cast_expression "(double)uVar3" ( (type_descriptor "double" primitive_type) ) identifier)) ;) }) (else_clause "else {\n          uVar31 = uVar31 << 8 | uVar31 >> 8;\n          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);\n          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);\n          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n        }" else (compound_statement "{\n          uVar31 = uVar31 << 8 | uVar31 >> 8;\n          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);\n          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);\n          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n        }" { (expression_statement "uVar31 = uVar31 << 8 | uVar31 >> 8;" (assignment_expression "uVar31 = uVar31 << 8 | uVar31 >> 8" identifier = (binary_expression "uVar31 << 8 | uVar31 >> 8" (binary_expression "uVar31 << 8" identifier << number_literal) | (binary_expression "uVar31 >> 8" identifier >> number_literal))) ;) (expression_statement "*pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);" (assignment_expression "*pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8)" (pointer_expression "*pdVar30" * identifier) = (cast_expression "(double)(ushort)(uVar4 << 8 | uVar4 >> 8)" ( (type_descriptor "double" primitive_type) ) (call_expression "(ushort)(uVar4 << 8 | uVar4 >> 8)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(uVar4 << 8 | uVar4 >> 8)" ( (binary_expression "uVar4 << 8 | uVar4 >> 8" (binary_expression "uVar4 << 8" identifier << number_literal) | (binary_expression "uVar4 >> 8" identifier >> number_literal)) ))))) ;) (expression_statement "*pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);" (assignment_expression "*pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8)" (pointer_expression "*pdVar21" * identifier) = (cast_expression "(double)(ushort)(uVar5 << 8 | uVar5 >> 8)" ( (type_descriptor "double" primitive_type) ) (call_expression "(ushort)(uVar5 << 8 | uVar5 >> 8)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(uVar5 << 8 | uVar5 >> 8)" ( (binary_expression "uVar5 << 8 | uVar5 >> 8" (binary_expression "uVar5 << 8" identifier << number_literal) | (binary_expression "uVar5 >> 8" identifier >> number_literal)) ))))) ;) (expression_statement "*pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);" (assignment_expression "*pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8)" (pointer_expression "*pdVar28" * identifier) = (cast_expression "(double)(ushort)(uVar3 << 8 | uVar3 >> 8)" ( (type_descriptor "double" primitive_type) ) (call_expression "(ushort)(uVar3 << 8 | uVar3 >> 8)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(uVar3 << 8 | uVar3 >> 8)" ( (binary_expression "uVar3 << 8 | uVar3 >> 8" (binary_expression "uVar3 << 8" identifier << number_literal) | (binary_expression "uVar3 >> 8" identifier >> number_literal)) ))))) ;) }))) (if_statement "if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);\n        }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);\n        }" { (expression_statement "*(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);" (assignment_expression "*(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31)" (pointer_expression "*(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8)" * (cast_expression "(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(iVar20 + 0x38) * 8)" ( (binary_expression "param_6 + *(int *)(iVar20 + 0x38) * 8" identifier + (binary_expression "*(int *)(iVar20 + 0x38) * 8" (pointer_expression "*(int *)(iVar20 + 0x38)" * (cast_expression "(int *)(iVar20 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x38)" ( (binary_expression "iVar20 + 0x38" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(double)(fVar27 - (float)uVar31)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(fVar27 - (float)uVar31)" ( (binary_expression "fVar27 - (float)uVar31" identifier - (cast_expression "(float)uVar31" ( (type_descriptor "float" primitive_type) ) identifier)) )))) ;) })) (expression_statement "param_5 = (float *)((int)param_5 + uVar26 + 8);" (assignment_expression "param_5 = (float *)((int)param_5 + uVar26 + 8)" identifier = (cast_expression "(float *)((int)param_5 + uVar26 + 8)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + uVar26 + 8)" ( (binary_expression "(int)param_5 + uVar26 + 8" (binary_expression "(int)param_5 + uVar26" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ;) (expression_statement "iVar32 = iVar32 + 1;" (assignment_expression "iVar32 = iVar32 + 1" identifier = (binary_expression "iVar32 + 1" identifier + number_literal)) ;) (expression_statement "param_6 = param_6 + iVar33 * 8;" (assignment_expression "param_6 = param_6 + iVar33 * 8" identifier = (binary_expression "param_6 + iVar33 * 8" identifier + (binary_expression "iVar33 * 8" identifier * number_literal))) ;) }) while (parenthesized_expression "(iVar32 != param_3)" ( (binary_expression "iVar32 != param_3" identifier != identifier) )) ;) })))) (break_statement "break;" break ;)) (case_statement "case 0x18:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }\n    goto code_r0x001616dd;" case number_literal : (if_statement "if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }" if (parenthesized_expression "(param_2[2] == 1)" ( (binary_expression "param_2[2] == 1" (subscript_expression "param_2[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }" { (if_statement "if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }" if (parenthesized_expression "(0 < param_3)" ( (binary_expression "0 < param_3" number_literal < identifier) )) (compound_statement "{\n        iVar20 = 0;\n        do {\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }" { (expression_statement "iVar20 = 0;" (assignment_expression "iVar20 = 0" identifier = number_literal) ;) (do_statement "do {\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);" do (compound_statement "{\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        }" { (expression_statement "FUN_00159670();" (call_expression "FUN_00159670()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) = (double)fStack_2c;" (assignment_expression "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) = (double)fStack_2c" (pointer_expression "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" * (cast_expression "(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" ( (binary_expression "param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 8)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 8" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) = (cast_expression "(double)fStack_2c" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "FUN_00159670();" (call_expression "FUN_00159670()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) = (double)fStack_2c;" (assignment_expression "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) = (double)fStack_2c" (pointer_expression "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" * (cast_expression "(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" ( (binary_expression "param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x14)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x14" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) = (cast_expression "(double)fStack_2c" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "FUN_00159670();" (call_expression "FUN_00159670()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) = (double)fStack_2c;" (assignment_expression "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) = (double)fStack_2c" (pointer_expression "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" * (cast_expression "(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" ( (binary_expression "param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x20)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x20" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) = (cast_expression "(double)fStack_2c" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "FUN_00159670();" (call_expression "FUN_00159670()" identifier (argument_list "()" ( ))) ;) (if_statement "if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c);\n          }" if (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0)" ( (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x34)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x34" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c);\n          }" { (expression_statement "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c);" (assignment_expression "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c)" (pointer_expression "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" * (cast_expression "(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" ( (binary_expression "param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x38)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x38" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) = (cast_expression "(double)(DAT_0029f710 - fStack_2c)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(DAT_0029f710 - fStack_2c)" ( (binary_expression "DAT_0029f710 - fStack_2c" identifier - identifier) )))) ;) })) (expression_statement "iVar20 = iVar20 + 1;" (assignment_expression "iVar20 = iVar20 + 1" identifier = (binary_expression "iVar20 + 1" identifier + number_literal)) ;) (expression_statement "param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;" (assignment_expression "param_6 = param_6 + *(int *)(param_1 + 0x298) * 8" identifier = (binary_expression "param_6 + *(int *)(param_1 + 0x298) * 8" identifier + (binary_expression "*(int *)(param_1 + 0x298) * 8" (pointer_expression "*(int *)(param_1 + 0x298)" * (cast_expression "(int *)(param_1 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) )))) * number_literal))) ;) }) while (parenthesized_expression "(iVar20 != param_3)" ( (binary_expression "iVar20 != param_3" identifier != identifier) )) ;) })) (break_statement "break;" break ;) })) (goto_statement "goto code_r0x001616dd;" goto statement_identifier ;)) (case_statement "case 0x20:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        local_5c = (double *)0x0;\n        uVar22 = param_2[9];\n        uVar26 = param_2[0x10];\n        iVar33 = *(int *)(param_1 + 0x298);\n        do {\n          local_64 = *param_5;\n          if (uVar26 != 1) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3));\n          }\n          fVar13 = (local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar27 = fVar10;\n          if ((fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)) {\n            fVar27 = fVar13;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 8) * 8) = (double)fVar27;\n          if (uVar26 == 1) {\n            fVar27 = param_5[1];\n          }\n          else {\n            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));\n          }\n          fVar27 = (fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            local_60 = param_5[2];\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));\n          }\n          fVar27 = (local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            fVar27 = param_5[3];\n            local_6c = SUB41(fVar27,0);\n            bStack_6b = (byte)((uint)fVar27 >> 8);\n            uStack_6a = (ushort)((uint)fVar27 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);\n            bStack_6b = *(byte *)((int)param_5 + 0xe);\n            local_6c = *(byte *)((int)param_5 + 0xf);\n          }\n          fVar27 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          param_5 = (float *)((int)param_5 + uVar22 + 0x10);\n          param_6 = param_6 + iVar33 * 8;\n        } while (local_5c != (double *)param_3);\n      }\n      break;\n    }\ncode_r0x001616dd:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        fVar17 = DAT_002a7fec;\n        fVar27 = param_5[3];\n        fVar9 = param_5[1];\n        pdVar21 = (double *)(iVar6 * 8 + param_6);\n        fVar10 = param_5[2];\n        pdVar30 = (double *)(iVar24 * 8 + param_6);\n        fVar11 = *param_5;\n        pdVar28 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec);\n          *pdVar21 = (double)((float)(uint)fVar9 / fVar17);\n          *pdVar28 = (double)((float)(uint)fVar10 / fVar17);\n        }\n        else {\n          uVar3 = (ushort)((uint)fVar11 >> 8);\n          uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);\n          fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          *pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13);\n          *pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);\n          *pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 0x10);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;" case number_literal : (if_statement "if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        local_5c = (double *)0x0;\n        uVar22 = param_2[9];\n        uVar26 = param_2[0x10];\n        iVar33 = *(int *)(param_1 + 0x298);\n        do {\n          local_64 = *param_5;\n          if (uVar26 != 1) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3));\n          }\n          fVar13 = (local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar27 = fVar10;\n          if ((fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)) {\n            fVar27 = fVar13;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 8) * 8) = (double)fVar27;\n          if (uVar26 == 1) {\n            fVar27 = param_5[1];\n          }\n          else {\n            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));\n          }\n          fVar27 = (fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            local_60 = param_5[2];\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));\n          }\n          fVar27 = (local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            fVar27 = param_5[3];\n            local_6c = SUB41(fVar27,0);\n            bStack_6b = (byte)((uint)fVar27 >> 8);\n            uStack_6a = (ushort)((uint)fVar27 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);\n            bStack_6b = *(byte *)((int)param_5 + 0xe);\n            local_6c = *(byte *)((int)param_5 + 0xf);\n          }\n          fVar27 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          param_5 = (float *)((int)param_5 + uVar22 + 0x10);\n          param_6 = param_6 + iVar33 * 8;\n        } while (local_5c != (double *)param_3);\n      }\n      break;\n    }" if (parenthesized_expression "(param_2[2] == 1)" ( (binary_expression "param_2[2] == 1" (subscript_expression "param_2[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      if (0 < param_3) {\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        local_5c = (double *)0x0;\n        uVar22 = param_2[9];\n        uVar26 = param_2[0x10];\n        iVar33 = *(int *)(param_1 + 0x298);\n        do {\n          local_64 = *param_5;\n          if (uVar26 != 1) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3));\n          }\n          fVar13 = (local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar27 = fVar10;\n          if ((fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)) {\n            fVar27 = fVar13;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 8) * 8) = (double)fVar27;\n          if (uVar26 == 1) {\n            fVar27 = param_5[1];\n          }\n          else {\n            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));\n          }\n          fVar27 = (fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            local_60 = param_5[2];\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));\n          }\n          fVar27 = (local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            fVar27 = param_5[3];\n            local_6c = SUB41(fVar27,0);\n            bStack_6b = (byte)((uint)fVar27 >> 8);\n            uStack_6a = (ushort)((uint)fVar27 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);\n            bStack_6b = *(byte *)((int)param_5 + 0xe);\n            local_6c = *(byte *)((int)param_5 + 0xf);\n          }\n          fVar27 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          param_5 = (float *)((int)param_5 + uVar22 + 0x10);\n          param_6 = param_6 + iVar33 * 8;\n        } while (local_5c != (double *)param_3);\n      }\n      break;\n    }" { (if_statement "if (0 < param_3) {\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        local_5c = (double *)0x0;\n        uVar22 = param_2[9];\n        uVar26 = param_2[0x10];\n        iVar33 = *(int *)(param_1 + 0x298);\n        do {\n          local_64 = *param_5;\n          if (uVar26 != 1) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3));\n          }\n          fVar13 = (local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar27 = fVar10;\n          if ((fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)) {\n            fVar27 = fVar13;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 8) * 8) = (double)fVar27;\n          if (uVar26 == 1) {\n            fVar27 = param_5[1];\n          }\n          else {\n            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));\n          }\n          fVar27 = (fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            local_60 = param_5[2];\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));\n          }\n          fVar27 = (local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            fVar27 = param_5[3];\n            local_6c = SUB41(fVar27,0);\n            bStack_6b = (byte)((uint)fVar27 >> 8);\n            uStack_6a = (ushort)((uint)fVar27 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);\n            bStack_6b = *(byte *)((int)param_5 + 0xe);\n            local_6c = *(byte *)((int)param_5 + 0xf);\n          }\n          fVar27 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          param_5 = (float *)((int)param_5 + uVar22 + 0x10);\n          param_6 = param_6 + iVar33 * 8;\n        } while (local_5c != (double *)param_3);\n      }" if (parenthesized_expression "(0 < param_3)" ( (binary_expression "0 < param_3" number_literal < identifier) )) (compound_statement "{\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        local_5c = (double *)0x0;\n        uVar22 = param_2[9];\n        uVar26 = param_2[0x10];\n        iVar33 = *(int *)(param_1 + 0x298);\n        do {\n          local_64 = *param_5;\n          if (uVar26 != 1) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3));\n          }\n          fVar13 = (local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar27 = fVar10;\n          if ((fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)) {\n            fVar27 = fVar13;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 8) * 8) = (double)fVar27;\n          if (uVar26 == 1) {\n            fVar27 = param_5[1];\n          }\n          else {\n            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));\n          }\n          fVar27 = (fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            local_60 = param_5[2];\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));\n          }\n          fVar27 = (local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            fVar27 = param_5[3];\n            local_6c = SUB41(fVar27,0);\n            bStack_6b = (byte)((uint)fVar27 >> 8);\n            uStack_6a = (ushort)((uint)fVar27 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);\n            bStack_6b = *(byte *)((int)param_5 + 0xe);\n            local_6c = *(byte *)((int)param_5 + 0xf);\n          }\n          fVar27 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          param_5 = (float *)((int)param_5 + uVar22 + 0x10);\n          param_6 = param_6 + iVar33 * 8;\n        } while (local_5c != (double *)param_3);\n      }" { (expression_statement "iVar20 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar20 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) (expression_statement "local_5c = (double *)0x0;" (assignment_expression "local_5c = (double *)0x0" identifier = (cast_expression "(double *)0x0" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar22 = param_2[9];" (assignment_expression "uVar22 = param_2[9]" identifier = (subscript_expression "param_2[9]" identifier [ number_literal ])) ;) (expression_statement "uVar26 = param_2[0x10];" (assignment_expression "uVar26 = param_2[0x10]" identifier = (subscript_expression "param_2[0x10]" identifier [ number_literal ])) ;) (expression_statement "iVar33 = *(int *)(param_1 + 0x298);" (assignment_expression "iVar33 = *(int *)(param_1 + 0x298)" identifier = (pointer_expression "*(int *)(param_1 + 0x298)" * (cast_expression "(int *)(param_1 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) ))))) ;) (do_statement "do {\n          local_64 = *param_5;\n          if (uVar26 != 1) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3));\n          }\n          fVar13 = (local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar27 = fVar10;\n          if ((fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)) {\n            fVar27 = fVar13;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 8) * 8) = (double)fVar27;\n          if (uVar26 == 1) {\n            fVar27 = param_5[1];\n          }\n          else {\n            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));\n          }\n          fVar27 = (fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            local_60 = param_5[2];\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));\n          }\n          fVar27 = (local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            fVar27 = param_5[3];\n            local_6c = SUB41(fVar27,0);\n            bStack_6b = (byte)((uint)fVar27 >> 8);\n            uStack_6a = (ushort)((uint)fVar27 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);\n            bStack_6b = *(byte *)((int)param_5 + 0xe);\n            local_6c = *(byte *)((int)param_5 + 0xf);\n          }\n          fVar27 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          param_5 = (float *)((int)param_5 + uVar22 + 0x10);\n          param_6 = param_6 + iVar33 * 8;\n        } while (local_5c != (double *)param_3);" do (compound_statement "{\n          local_64 = *param_5;\n          if (uVar26 != 1) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3));\n          }\n          fVar13 = (local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar27 = fVar10;\n          if ((fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)) {\n            fVar27 = fVar13;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 8) * 8) = (double)fVar27;\n          if (uVar26 == 1) {\n            fVar27 = param_5[1];\n          }\n          else {\n            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));\n          }\n          fVar27 = (fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            local_60 = param_5[2];\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));\n          }\n          fVar27 = (local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            fVar27 = param_5[3];\n            local_6c = SUB41(fVar27,0);\n            bStack_6b = (byte)((uint)fVar27 >> 8);\n            uStack_6a = (ushort)((uint)fVar27 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);\n            bStack_6b = *(byte *)((int)param_5 + 0xe);\n            local_6c = *(byte *)((int)param_5 + 0xf);\n          }\n          fVar27 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          param_5 = (float *)((int)param_5 + uVar22 + 0x10);\n          param_6 = param_6 + iVar33 * 8;\n        }" { (expression_statement "local_64 = *param_5;" (assignment_expression "local_64 = *param_5" identifier = (pointer_expression "*param_5" * identifier)) ;) (if_statement "if (uVar26 != 1) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3));\n          }" if (parenthesized_expression "(uVar26 != 1)" ( (binary_expression "uVar26 != 1" identifier != number_literal) )) (compound_statement "{\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3));\n          }" { (expression_statement "local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3));" (assignment_expression "local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3))" identifier = (cast_expression "(float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3))" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3))" identifier (argument_list "(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3))" ( (call_expression "CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2))" identifier (argument_list "((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2))" ( (binary_expression "(ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1)" (call_expression "(ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(((uint)*(byte *)param_5 << 0x18) >> 0x10)" ( (binary_expression "((uint)*(byte *)param_5 << 0x18) >> 0x10" (parenthesized_expression "((uint)*(byte *)param_5 << 0x18)" ( (binary_expression "(uint)*(byte *)param_5 << 0x18" (binary_expression "(uint)*(byte *)param_5" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)param_5" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) << number_literal) )) >> number_literal) ))) | (binary_expression "(ushort)*(byte *)((int)param_5 + 1)" (parenthesized_expression "(ushort)" ( identifier )) * (cast_expression "(byte *)((int)param_5 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 1)" ( (binary_expression "(int)param_5 + 1" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) , (pointer_expression "*(byte *)((int)param_5 + 2)" * (cast_expression "(byte *)((int)param_5 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 2)" ( (binary_expression "(int)param_5 + 2" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) , (pointer_expression "*(byte *)((int)param_5 + 3)" * (cast_expression "(byte *)((int)param_5 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 3)" ( (binary_expression "(int)param_5 + 3" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))))) ;) })) (expression_statement "fVar13 = (local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);" (assignment_expression "fVar13 = (local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7)" identifier = (binary_expression "(local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7)" (parenthesized_expression "(local_64 - (float)*(double *)(param_2 + 3))" ( (binary_expression "local_64 - (float)*(double *)(param_2 + 3)" identifier - (cast_expression "(float)*(double *)(param_2 + 3)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_2 + 3)" * (cast_expression "(double *)(param_2 + 3)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 3)" ( (binary_expression "param_2 + 3" identifier + number_literal) )))))) )) * (cast_expression "(float)*(double *)(param_2 + 7)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_2 + 7)" * (cast_expression "(double *)(param_2 + 7)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 7)" ( (binary_expression "param_2 + 7" identifier + number_literal) ))))))) ;) (expression_statement "fVar27 = fVar10;" (assignment_expression "fVar27 = fVar10" identifier = identifier) ;) (if_statement "if ((fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)) {\n            fVar27 = fVar13;\n          }" if (parenthesized_expression "((fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828))" ( (binary_expression "(fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)" (parenthesized_expression "(fVar10 <= fVar13)" ( (binary_expression "fVar10 <= fVar13" identifier <= identifier) )) && (parenthesized_expression "(fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)" ( (comma_expression "fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828" (assignment_expression "fVar27 = DAT_002c5828" identifier = identifier) , (binary_expression "fVar13 <= DAT_002c5828" identifier <= identifier)) ))) )) (compound_statement "{\n            fVar27 = fVar13;\n          }" { (expression_statement "fVar27 = fVar13;" (assignment_expression "fVar27 = fVar13" identifier = identifier) ;) })) (expression_statement "*(double *)(param_6 + *(int *)(iVar20 + 8) * 8) = (double)fVar27;" (assignment_expression "*(double *)(param_6 + *(int *)(iVar20 + 8) * 8) = (double)fVar27" (pointer_expression "*(double *)(param_6 + *(int *)(iVar20 + 8) * 8)" * (cast_expression "(double *)(param_6 + *(int *)(iVar20 + 8) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(iVar20 + 8) * 8)" ( (binary_expression "param_6 + *(int *)(iVar20 + 8) * 8" identifier + (binary_expression "*(int *)(iVar20 + 8) * 8" (pointer_expression "*(int *)(iVar20 + 8)" * (cast_expression "(int *)(iVar20 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 8)" ( (binary_expression "iVar20 + 8" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(double)fVar27" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (if_statement "if (uVar26 == 1) {\n            fVar27 = param_5[1];\n          }\n          else {\n            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));\n          }" if (parenthesized_expression "(uVar26 == 1)" ( (binary_expression "uVar26 == 1" identifier == number_literal) )) (compound_statement "{\n            fVar27 = param_5[1];\n          }" { (expression_statement "fVar27 = param_5[1];" (assignment_expression "fVar27 = param_5[1]" identifier = (subscript_expression "param_5[1]" identifier [ number_literal ])) ;) }) (else_clause "else {\n            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));\n          }" else (compound_statement "{\n            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));\n          }" { (expression_statement "fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));" (assignment_expression "fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7))" identifier = (cast_expression "(float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7))" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7))" identifier (argument_list "(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7))" ( (call_expression "CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6))" identifier (argument_list "((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6))" ( (binary_expression "(ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5)" (call_expression "(ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10)" ( (binary_expression "((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10" (parenthesized_expression "((uint)*(byte *)(param_5 + 1) << 0x18)" ( (binary_expression "(uint)*(byte *)(param_5 + 1) << 0x18" (binary_expression "(uint)*(byte *)(param_5 + 1)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(param_5 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 1)" ( (binary_expression "param_5 + 1" identifier + number_literal) )))) << number_literal) )) >> number_literal) ))) | (binary_expression "(ushort)*(byte *)((int)param_5 + 5)" (parenthesized_expression "(ushort)" ( identifier )) * (cast_expression "(byte *)((int)param_5 + 5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 5)" ( (binary_expression "(int)param_5 + 5" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) , (pointer_expression "*(byte *)((int)param_5 + 6)" * (cast_expression "(byte *)((int)param_5 + 6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 6)" ( (binary_expression "(int)param_5 + 6" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) , (pointer_expression "*(byte *)((int)param_5 + 7)" * (cast_expression "(byte *)((int)param_5 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 7)" ( (binary_expression "(int)param_5 + 7" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))))) ;) }))) (expression_statement "fVar27 = (fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);" (assignment_expression "fVar27 = (fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7)" identifier = (binary_expression "(fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7)" (parenthesized_expression "(fVar27 - (float)*(double *)(param_2 + 3))" ( (binary_expression "fVar27 - (float)*(double *)(param_2 + 3)" identifier - (cast_expression "(float)*(double *)(param_2 + 3)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_2 + 3)" * (cast_expression "(double *)(param_2 + 3)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 3)" ( (binary_expression "param_2 + 3" identifier + number_literal) )))))) )) * (cast_expression "(float)*(double *)(param_2 + 7)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_2 + 7)" * (cast_expression "(double *)(param_2 + 7)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 7)" ( (binary_expression "param_2 + 7" identifier + number_literal) ))))))) ;) (expression_statement "fVar13 = DAT_002c5824;" (assignment_expression "fVar13 = DAT_002c5824" identifier = identifier) ;) (if_statement "if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }" if (parenthesized_expression "((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828))" ( (binary_expression "(DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)" (parenthesized_expression "(DAT_002c5824 <= fVar27)" ( (binary_expression "DAT_002c5824 <= fVar27" identifier <= identifier) )) && (parenthesized_expression "(fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)" ( (comma_expression "fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828" (assignment_expression "fVar13 = DAT_002c5828" identifier = identifier) , (binary_expression "fVar27 <= DAT_002c5828" identifier <= identifier)) ))) )) (compound_statement "{\n            fVar13 = fVar27;\n          }" { (expression_statement "fVar13 = fVar27;" (assignment_expression "fVar13 = fVar27" identifier = identifier) ;) })) (expression_statement "*(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8) = (double)fVar13;" (assignment_expression "*(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8) = (double)fVar13" (pointer_expression "*(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8)" * (cast_expression "(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(iVar20 + 0x14) * 8)" ( (binary_expression "param_6 + *(int *)(iVar20 + 0x14) * 8" identifier + (binary_expression "*(int *)(iVar20 + 0x14) * 8" (pointer_expression "*(int *)(iVar20 + 0x14)" * (cast_expression "(int *)(iVar20 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x14)" ( (binary_expression "iVar20 + 0x14" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(double)fVar13" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (if_statement "if (uVar26 == 1) {\n            local_60 = param_5[2];\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));\n          }" if (parenthesized_expression "(uVar26 == 1)" ( (binary_expression "uVar26 == 1" identifier == number_literal) )) (compound_statement "{\n            local_60 = param_5[2];\n          }" { (expression_statement "local_60 = param_5[2];" (assignment_expression "local_60 = param_5[2]" identifier = (subscript_expression "param_5[2]" identifier [ number_literal ])) ;) }) (else_clause "else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));\n          }" else (compound_statement "{\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));\n          }" { (expression_statement "local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));" (assignment_expression "local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb))" identifier = (cast_expression "(float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb))" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb))" identifier (argument_list "(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb))" ( (call_expression "CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10))" identifier (argument_list "((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10))" ( (binary_expression "(ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9)" (call_expression "(ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10)" ( (binary_expression "((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10" (parenthesized_expression "((uint)*(byte *)(param_5 + 2) << 0x18)" ( (binary_expression "(uint)*(byte *)(param_5 + 2) << 0x18" (binary_expression "(uint)*(byte *)(param_5 + 2)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(param_5 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 2)" ( (binary_expression "param_5 + 2" identifier + number_literal) )))) << number_literal) )) >> number_literal) ))) | (binary_expression "(ushort)*(byte *)((int)param_5 + 9)" (parenthesized_expression "(ushort)" ( identifier )) * (cast_expression "(byte *)((int)param_5 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 9)" ( (binary_expression "(int)param_5 + 9" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) , (pointer_expression "*(byte *)((int)param_5 + 10)" * (cast_expression "(byte *)((int)param_5 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 10)" ( (binary_expression "(int)param_5 + 10" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) , (pointer_expression "*(byte *)((int)param_5 + 0xb)" * (cast_expression "(byte *)((int)param_5 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 0xb)" ( (binary_expression "(int)param_5 + 0xb" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))))) ;) }))) (expression_statement "fVar27 = (local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);" (assignment_expression "fVar27 = (local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7)" identifier = (binary_expression "(local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7)" (parenthesized_expression "(local_60 - (float)*(double *)(param_2 + 3))" ( (binary_expression "local_60 - (float)*(double *)(param_2 + 3)" identifier - (cast_expression "(float)*(double *)(param_2 + 3)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_2 + 3)" * (cast_expression "(double *)(param_2 + 3)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 3)" ( (binary_expression "param_2 + 3" identifier + number_literal) )))))) )) * (cast_expression "(float)*(double *)(param_2 + 7)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_2 + 7)" * (cast_expression "(double *)(param_2 + 7)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 7)" ( (binary_expression "param_2 + 7" identifier + number_literal) ))))))) ;) (expression_statement "fVar13 = DAT_002c5824;" (assignment_expression "fVar13 = DAT_002c5824" identifier = identifier) ;) (if_statement "if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }" if (parenthesized_expression "((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828))" ( (binary_expression "(DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)" (parenthesized_expression "(DAT_002c5824 <= fVar27)" ( (binary_expression "DAT_002c5824 <= fVar27" identifier <= identifier) )) && (parenthesized_expression "(fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)" ( (comma_expression "fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828" (assignment_expression "fVar13 = DAT_002c5828" identifier = identifier) , (binary_expression "fVar27 <= DAT_002c5828" identifier <= identifier)) ))) )) (compound_statement "{\n            fVar13 = fVar27;\n          }" { (expression_statement "fVar13 = fVar27;" (assignment_expression "fVar13 = fVar27" identifier = identifier) ;) })) (expression_statement "*(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8) = (double)fVar13;" (assignment_expression "*(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8) = (double)fVar13" (pointer_expression "*(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8)" * (cast_expression "(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(iVar20 + 0x20) * 8)" ( (binary_expression "param_6 + *(int *)(iVar20 + 0x20) * 8" identifier + (binary_expression "*(int *)(iVar20 + 0x20) * 8" (pointer_expression "*(int *)(iVar20 + 0x20)" * (cast_expression "(int *)(iVar20 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x20)" ( (binary_expression "iVar20 + 0x20" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(double)fVar13" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (if_statement "if (uVar26 == 1) {\n            fVar27 = param_5[3];\n            local_6c = SUB41(fVar27,0);\n            bStack_6b = (byte)((uint)fVar27 >> 8);\n            uStack_6a = (ushort)((uint)fVar27 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);\n            bStack_6b = *(byte *)((int)param_5 + 0xe);\n            local_6c = *(byte *)((int)param_5 + 0xf);\n          }" if (parenthesized_expression "(uVar26 == 1)" ( (binary_expression "uVar26 == 1" identifier == number_literal) )) (compound_statement "{\n            fVar27 = param_5[3];\n            local_6c = SUB41(fVar27,0);\n            bStack_6b = (byte)((uint)fVar27 >> 8);\n            uStack_6a = (ushort)((uint)fVar27 >> 0x10);\n          }" { (expression_statement "fVar27 = param_5[3];" (assignment_expression "fVar27 = param_5[3]" identifier = (subscript_expression "param_5[3]" identifier [ number_literal ])) ;) (expression_statement "local_6c = SUB41(fVar27,0);" (assignment_expression "local_6c = SUB41(fVar27,0)" identifier = (call_expression "SUB41(fVar27,0)" identifier (argument_list "(fVar27,0)" ( identifier , number_literal )))) ;) (expression_statement "bStack_6b = (byte)((uint)fVar27 >> 8);" (assignment_expression "bStack_6b = (byte)((uint)fVar27 >> 8)" identifier = (call_expression "(byte)((uint)fVar27 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar27 >> 8)" ( (binary_expression "(uint)fVar27 >> 8" (cast_expression "(uint)fVar27" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uStack_6a = (ushort)((uint)fVar27 >> 0x10);" (assignment_expression "uStack_6a = (ushort)((uint)fVar27 >> 0x10)" identifier = (call_expression "(ushort)((uint)fVar27 >> 0x10)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "((uint)fVar27 >> 0x10)" ( (binary_expression "(uint)fVar27 >> 0x10" (cast_expression "(uint)fVar27" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) }) (else_clause "else {\n            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);\n            bStack_6b = *(byte *)((int)param_5 + 0xe);\n            local_6c = *(byte *)((int)param_5 + 0xf);\n          }" else (compound_statement "{\n            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);\n            bStack_6b = *(byte *)((int)param_5 + 0xe);\n            local_6c = *(byte *)((int)param_5 + 0xf);\n          }" { (expression_statement "uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);" (assignment_expression "uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd)" identifier = (binary_expression "(ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd)" (call_expression "(ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10)" ( (binary_expression "((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10" (parenthesized_expression "((uint)*(byte *)(param_5 + 3) << 0x18)" ( (binary_expression "(uint)*(byte *)(param_5 + 3) << 0x18" (binary_expression "(uint)*(byte *)(param_5 + 3)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(param_5 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 3)" ( (binary_expression "param_5 + 3" identifier + number_literal) )))) << number_literal) )) >> number_literal) ))) | (binary_expression "(ushort)*(byte *)((int)param_5 + 0xd)" (parenthesized_expression "(ushort)" ( identifier )) * (cast_expression "(byte *)((int)param_5 + 0xd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 0xd)" ( (binary_expression "(int)param_5 + 0xd" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ;) (expression_statement "bStack_6b = *(byte *)((int)param_5 + 0xe);" (assignment_expression "bStack_6b = *(byte *)((int)param_5 + 0xe)" identifier = (pointer_expression "*(byte *)((int)param_5 + 0xe)" * (cast_expression "(byte *)((int)param_5 + 0xe)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 0xe)" ( (binary_expression "(int)param_5 + 0xe" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "local_6c = *(byte *)((int)param_5 + 0xf);" (assignment_expression "local_6c = *(byte *)((int)param_5 + 0xf)" identifier = (pointer_expression "*(byte *)((int)param_5 + 0xf)" * (cast_expression "(byte *)((int)param_5 + 0xf)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 0xf)" ( (binary_expression "(int)param_5 + 0xf" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }))) (expression_statement "fVar27 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);" (assignment_expression "fVar27 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7)" identifier = (binary_expression "((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7)" (parenthesized_expression "((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3))" ( (binary_expression "(float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)" (cast_expression "(float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" identifier (argument_list "(uStack_6a,CONCAT11(bStack_6b,local_6c))" ( identifier , (call_expression "CONCAT11(bStack_6b,local_6c)" identifier (argument_list "(bStack_6b,local_6c)" ( identifier , identifier ))) )))) - (cast_expression "(float)*(double *)(param_2 + 3)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_2 + 3)" * (cast_expression "(double *)(param_2 + 3)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 3)" ( (binary_expression "param_2 + 3" identifier + number_literal) )))))) )) * (cast_expression "(float)*(double *)(param_2 + 7)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_2 + 7)" * (cast_expression "(double *)(param_2 + 7)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 7)" ( (binary_expression "param_2 + 7" identifier + number_literal) ))))))) ;) (expression_statement "fVar13 = DAT_002c5824;" (assignment_expression "fVar13 = DAT_002c5824" identifier = identifier) ;) (if_statement "if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }" if (parenthesized_expression "((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828))" ( (binary_expression "(DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)" (parenthesized_expression "(DAT_002c5824 <= fVar27)" ( (binary_expression "DAT_002c5824 <= fVar27" identifier <= identifier) )) && (parenthesized_expression "(fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)" ( (comma_expression "fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828" (assignment_expression "fVar13 = DAT_002c5828" identifier = identifier) , (binary_expression "fVar27 <= DAT_002c5828" identifier <= identifier)) ))) )) (compound_statement "{\n            fVar13 = fVar27;\n          }" { (expression_statement "fVar13 = fVar27;" (assignment_expression "fVar13 = fVar27" identifier = identifier) ;) })) (if_statement "if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);\n          }" if (parenthesized_expression "(*(int *)(iVar20 + 0x34) != 0)" ( (binary_expression "*(int *)(iVar20 + 0x34) != 0" (pointer_expression "*(int *)(iVar20 + 0x34)" * (cast_expression "(int *)(iVar20 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x34)" ( (binary_expression "iVar20 + 0x34" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n            *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);\n          }" { (expression_statement "*(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);" (assignment_expression "*(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13)" (pointer_expression "*(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8)" * (cast_expression "(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(iVar20 + 0x38) * 8)" ( (binary_expression "param_6 + *(int *)(iVar20 + 0x38) * 8" identifier + (binary_expression "*(int *)(iVar20 + 0x38) * 8" (pointer_expression "*(int *)(iVar20 + 0x38)" * (cast_expression "(int *)(iVar20 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x38)" ( (binary_expression "iVar20 + 0x38" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(double)(DAT_0029f710 - fVar13)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(DAT_0029f710 - fVar13)" ( (binary_expression "DAT_0029f710 - fVar13" identifier - identifier) )))) ;) })) (expression_statement "local_5c = (double *)((int)local_5c + 1);" (assignment_expression "local_5c = (double *)((int)local_5c + 1)" identifier = (cast_expression "(double *)((int)local_5c + 1)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_5c + 1)" ( (binary_expression "(int)local_5c + 1" (cast_expression "(int)local_5c" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "param_5 = (float *)((int)param_5 + uVar22 + 0x10);" (assignment_expression "param_5 = (float *)((int)param_5 + uVar22 + 0x10)" identifier = (cast_expression "(float *)((int)param_5 + uVar22 + 0x10)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + uVar22 + 0x10)" ( (binary_expression "(int)param_5 + uVar22 + 0x10" (binary_expression "(int)param_5 + uVar22" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ;) (expression_statement "param_6 = param_6 + iVar33 * 8;" (assignment_expression "param_6 = param_6 + iVar33 * 8" identifier = (binary_expression "param_6 + iVar33 * 8" identifier + (binary_expression "iVar33 * 8" identifier * number_literal))) ;) }) while (parenthesized_expression "(local_5c != (double *)param_3)" ( (binary_expression "local_5c != (double *)param_3" identifier != (cast_expression "(double *)param_3" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) )) ;) })) (break_statement "break;" break ;) })) (labeled_statement "code_r0x001616dd:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        fVar17 = DAT_002a7fec;\n        fVar27 = param_5[3];\n        fVar9 = param_5[1];\n        pdVar21 = (double *)(iVar6 * 8 + param_6);\n        fVar10 = param_5[2];\n        pdVar30 = (double *)(iVar24 * 8 + param_6);\n        fVar11 = *param_5;\n        pdVar28 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec);\n          *pdVar21 = (double)((float)(uint)fVar9 / fVar17);\n          *pdVar28 = (double)((float)(uint)fVar10 / fVar17);\n        }\n        else {\n          uVar3 = (ushort)((uint)fVar11 >> 8);\n          uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);\n          fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          *pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13);\n          *pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);\n          *pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 0x10);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }" statement_identifier : (if_statement "if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        fVar17 = DAT_002a7fec;\n        fVar27 = param_5[3];\n        fVar9 = param_5[1];\n        pdVar21 = (double *)(iVar6 * 8 + param_6);\n        fVar10 = param_5[2];\n        pdVar30 = (double *)(iVar24 * 8 + param_6);\n        fVar11 = *param_5;\n        pdVar28 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec);\n          *pdVar21 = (double)((float)(uint)fVar9 / fVar17);\n          *pdVar28 = (double)((float)(uint)fVar10 / fVar17);\n        }\n        else {\n          uVar3 = (ushort)((uint)fVar11 >> 8);\n          uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);\n          fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          *pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13);\n          *pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);\n          *pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 0x10);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }" if (parenthesized_expression "(0 < param_3)" ( (binary_expression "0 < param_3" number_literal < identifier) )) (compound_statement "{\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        fVar17 = DAT_002a7fec;\n        fVar27 = param_5[3];\n        fVar9 = param_5[1];\n        pdVar21 = (double *)(iVar6 * 8 + param_6);\n        fVar10 = param_5[2];\n        pdVar30 = (double *)(iVar24 * 8 + param_6);\n        fVar11 = *param_5;\n        pdVar28 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec);\n          *pdVar21 = (double)((float)(uint)fVar9 / fVar17);\n          *pdVar28 = (double)((float)(uint)fVar10 / fVar17);\n        }\n        else {\n          uVar3 = (ushort)((uint)fVar11 >> 8);\n          uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);\n          fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          *pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13);\n          *pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);\n          *pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 0x10);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }" { (expression_statement "iVar20 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar20 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) (expression_statement "uVar22 = param_2[0x10];" (assignment_expression "uVar22 = param_2[0x10]" identifier = (subscript_expression "param_2[0x10]" identifier [ number_literal ])) ;) (expression_statement "uVar26 = param_2[9];" (assignment_expression "uVar26 = param_2[9]" identifier = (subscript_expression "param_2[9]" identifier [ number_literal ])) ;) (expression_statement "iVar33 = *(int *)(param_1 + 0x298);" (assignment_expression "iVar33 = *(int *)(param_1 + 0x298)" identifier = (pointer_expression "*(int *)(param_1 + 0x298)" * (cast_expression "(int *)(param_1 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) ))))) ;) (expression_statement "iVar24 = *(int *)(iVar20 + 8);" (assignment_expression "iVar24 = *(int *)(iVar20 + 8)" identifier = (pointer_expression "*(int *)(iVar20 + 8)" * (cast_expression "(int *)(iVar20 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 8)" ( (binary_expression "iVar20 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = *(int *)(iVar20 + 0x14);" (assignment_expression "iVar6 = *(int *)(iVar20 + 0x14)" identifier = (pointer_expression "*(int *)(iVar20 + 0x14)" * (cast_expression "(int *)(iVar20 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x14)" ( (binary_expression "iVar20 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = *(int *)(iVar20 + 0x20);" (assignment_expression "iVar7 = *(int *)(iVar20 + 0x20)" identifier = (pointer_expression "*(int *)(iVar20 + 0x20)" * (cast_expression "(int *)(iVar20 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x20)" ( (binary_expression "iVar20 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = *(int *)(iVar20 + 0x34);" (assignment_expression "iVar8 = *(int *)(iVar20 + 0x34)" identifier = (pointer_expression "*(int *)(iVar20 + 0x34)" * (cast_expression "(int *)(iVar20 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x34)" ( (binary_expression "iVar20 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "iVar32 = 0;" (assignment_expression "iVar32 = 0" identifier = number_literal) ;) (do_statement "do {\n        fVar17 = DAT_002a7fec;\n        fVar27 = param_5[3];\n        fVar9 = param_5[1];\n        pdVar21 = (double *)(iVar6 * 8 + param_6);\n        fVar10 = param_5[2];\n        pdVar30 = (double *)(iVar24 * 8 + param_6);\n        fVar11 = *param_5;\n        pdVar28 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec);\n          *pdVar21 = (double)((float)(uint)fVar9 / fVar17);\n          *pdVar28 = (double)((float)(uint)fVar10 / fVar17);\n        }\n        else {\n          uVar3 = (ushort)((uint)fVar11 >> 8);\n          uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);\n          fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          *pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13);\n          *pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);\n          *pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 0x10);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);" do (compound_statement "{\n        fVar17 = DAT_002a7fec;\n        fVar27 = param_5[3];\n        fVar9 = param_5[1];\n        pdVar21 = (double *)(iVar6 * 8 + param_6);\n        fVar10 = param_5[2];\n        pdVar30 = (double *)(iVar24 * 8 + param_6);\n        fVar11 = *param_5;\n        pdVar28 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec);\n          *pdVar21 = (double)((float)(uint)fVar9 / fVar17);\n          *pdVar28 = (double)((float)(uint)fVar10 / fVar17);\n        }\n        else {\n          uVar3 = (ushort)((uint)fVar11 >> 8);\n          uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);\n          fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          *pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13);\n          *pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);\n          *pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 0x10);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      }" { (expression_statement "fVar17 = DAT_002a7fec;" (assignment_expression "fVar17 = DAT_002a7fec" identifier = identifier) ;) (expression_statement "fVar27 = param_5[3];" (assignment_expression "fVar27 = param_5[3]" identifier = (subscript_expression "param_5[3]" identifier [ number_literal ])) ;) (expression_statement "fVar9 = param_5[1];" (assignment_expression "fVar9 = param_5[1]" identifier = (subscript_expression "param_5[1]" identifier [ number_literal ])) ;) (expression_statement "pdVar21 = (double *)(iVar6 * 8 + param_6);" (assignment_expression "pdVar21 = (double *)(iVar6 * 8 + param_6)" identifier = (cast_expression "(double *)(iVar6 * 8 + param_6)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 * 8 + param_6)" ( (binary_expression "iVar6 * 8 + param_6" (binary_expression "iVar6 * 8" identifier * number_literal) + identifier) )))) ;) (expression_statement "fVar10 = param_5[2];" (assignment_expression "fVar10 = param_5[2]" identifier = (subscript_expression "param_5[2]" identifier [ number_literal ])) ;) (expression_statement "pdVar30 = (double *)(iVar24 * 8 + param_6);" (assignment_expression "pdVar30 = (double *)(iVar24 * 8 + param_6)" identifier = (cast_expression "(double *)(iVar24 * 8 + param_6)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar24 * 8 + param_6)" ( (binary_expression "iVar24 * 8 + param_6" (binary_expression "iVar24 * 8" identifier * number_literal) + identifier) )))) ;) (expression_statement "fVar11 = *param_5;" (assignment_expression "fVar11 = *param_5" identifier = (pointer_expression "*param_5" * identifier)) ;) (expression_statement "pdVar28 = (double *)(iVar7 * 8 + param_6);" (assignment_expression "pdVar28 = (double *)(iVar7 * 8 + param_6)" identifier = (cast_expression "(double *)(iVar7 * 8 + param_6)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 * 8 + param_6)" ( (binary_expression "iVar7 * 8 + param_6" (binary_expression "iVar7 * 8" identifier * number_literal) + identifier) )))) ;) (if_statement "if (uVar22 == 1) {\n          *pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec);\n          *pdVar21 = (double)((float)(uint)fVar9 / fVar17);\n          *pdVar28 = (double)((float)(uint)fVar10 / fVar17);\n        }\n        else {\n          uVar3 = (ushort)((uint)fVar11 >> 8);\n          uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);\n          fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          *pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13);\n          *pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);\n          *pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);\n        }" if (parenthesized_expression "(uVar22 == 1)" ( (binary_expression "uVar22 == 1" identifier == number_literal) )) (compound_statement "{\n          *pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec);\n          *pdVar21 = (double)((float)(uint)fVar9 / fVar17);\n          *pdVar28 = (double)((float)(uint)fVar10 / fVar17);\n        }" { (expression_statement "*pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec);" (assignment_expression "*pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec)" (pointer_expression "*pdVar30" * identifier) = (cast_expression "(double)((float)(uint)fVar11 / DAT_002a7fec)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((float)(uint)fVar11 / DAT_002a7fec)" ( (binary_expression "(float)(uint)fVar11 / DAT_002a7fec" (cast_expression "(float)(uint)fVar11" ( (type_descriptor "float" primitive_type) ) (cast_expression "(uint)fVar11" ( (type_descriptor "uint" type_identifier) ) identifier)) / identifier) )))) ;) (expression_statement "*pdVar21 = (double)((float)(uint)fVar9 / fVar17);" (assignment_expression "*pdVar21 = (double)((float)(uint)fVar9 / fVar17)" (pointer_expression "*pdVar21" * identifier) = (cast_expression "(double)((float)(uint)fVar9 / fVar17)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((float)(uint)fVar9 / fVar17)" ( (binary_expression "(float)(uint)fVar9 / fVar17" (cast_expression "(float)(uint)fVar9" ( (type_descriptor "float" primitive_type) ) (cast_expression "(uint)fVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) / identifier) )))) ;) (expression_statement "*pdVar28 = (double)((float)(uint)fVar10 / fVar17);" (assignment_expression "*pdVar28 = (double)((float)(uint)fVar10 / fVar17)" (pointer_expression "*pdVar28" * identifier) = (cast_expression "(double)((float)(uint)fVar10 / fVar17)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((float)(uint)fVar10 / fVar17)" ( (binary_expression "(float)(uint)fVar10 / fVar17" (cast_expression "(float)(uint)fVar10" ( (type_descriptor "float" primitive_type) ) (cast_expression "(uint)fVar10" ( (type_descriptor "uint" type_identifier) ) identifier)) / identifier) )))) ;) }) (else_clause "else {\n          uVar3 = (ushort)((uint)fVar11 >> 8);\n          uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);\n          fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          *pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13);\n          *pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);\n          *pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);\n        }" else (compound_statement "{\n          uVar3 = (ushort)((uint)fVar11 >> 8);\n          uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);\n          fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          *pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13);\n          *pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);\n          *pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);\n        }" { (expression_statement "uVar3 = (ushort)((uint)fVar11 >> 8);" (assignment_expression "uVar3 = (ushort)((uint)fVar11 >> 8)" identifier = (call_expression "(ushort)((uint)fVar11 >> 8)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "((uint)fVar11 >> 8)" ( (binary_expression "(uint)fVar11 >> 8" (cast_expression "(uint)fVar11" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);" (assignment_expression "uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10)" identifier = (binary_expression "uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10)" (binary_expression "uVar3 & 0xff" identifier & number_literal) | (call_expression "(ushort)((uint)((int)fVar11 << 0x18) >> 0x10)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "((uint)((int)fVar11 << 0x18) >> 0x10)" ( (binary_expression "(uint)((int)fVar11 << 0x18) >> 0x10" (call_expression "(uint)((int)fVar11 << 0x18)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)fVar11 << 0x18)" ( (binary_expression "(int)fVar11 << 0x18" (cast_expression "(int)fVar11" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) ))) >> number_literal) ))))) ;) (expression_statement "fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);" (assignment_expression "fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18)" identifier = (cast_expression "(float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18)" ( (binary_expression "(uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18" (binary_expression "(uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8" (binary_expression "(uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8" (binary_expression "(uint)fVar27 >> 0x18" (cast_expression "(uint)fVar27" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) | (binary_expression "((uint)fVar27 & 0xff0000) >> 8" (parenthesized_expression "((uint)fVar27 & 0xff0000)" ( (binary_expression "(uint)fVar27 & 0xff0000" (cast_expression "(uint)fVar27" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) >> number_literal)) | (binary_expression "((uint)fVar27 & 0xff00) << 8" (parenthesized_expression "((uint)fVar27 & 0xff00)" ( (binary_expression "(uint)fVar27 & 0xff00" (cast_expression "(uint)fVar27" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) << number_literal)) | (binary_expression "(int)fVar27 << 0x18" (cast_expression "(int)fVar27" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal)) )))) ;) (expression_statement "*pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13);" (assignment_expression "*pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13)" (pointer_expression "*pdVar30" * identifier) = (cast_expression "(double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13)" ( (binary_expression "(float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13" (cast_expression "(float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)" identifier (argument_list "(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)" ( identifier , (binary_expression "(ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00" (call_expression "(ushort)(byte)((uint)fVar11 >> 0x18)" (call_expression "(ushort)(byte)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "((uint)fVar11 >> 0x18)" ( (binary_expression "(uint)fVar11 >> 0x18" (cast_expression "(uint)fVar11" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) ))) | (binary_expression "uVar3 & 0xff00" identifier & number_literal)) )))) / identifier) )))) ;) (expression_statement "*pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);" (assignment_expression "*pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13)" (pointer_expression "*pdVar21" * identifier) = (cast_expression "(double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13)" ( (binary_expression "(float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13" (cast_expression "(float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18)" ( (binary_expression "(uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18" (binary_expression "(uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8" (binary_expression "(uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8" (binary_expression "(uint)fVar9 >> 0x18" (cast_expression "(uint)fVar9" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) | (binary_expression "((uint)fVar9 & 0xff0000) >> 8" (parenthesized_expression "((uint)fVar9 & 0xff0000)" ( (binary_expression "(uint)fVar9 & 0xff0000" (cast_expression "(uint)fVar9" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) >> number_literal)) | (binary_expression "((uint)fVar9 & 0xff00) << 8" (parenthesized_expression "((uint)fVar9 & 0xff00)" ( (binary_expression "(uint)fVar9 & 0xff00" (cast_expression "(uint)fVar9" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) << number_literal)) | (binary_expression "(int)fVar9 << 0x18" (cast_expression "(int)fVar9" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal)) ))) / identifier) )))) ;) (expression_statement "*pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);" (assignment_expression "*pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13)" (pointer_expression "*pdVar28" * identifier) = (cast_expression "(double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13)" ( (binary_expression "(float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13" (cast_expression "(float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18)" ( (binary_expression "(uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18" (binary_expression "(uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8" (binary_expression "(uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8" (binary_expression "(uint)fVar10 >> 0x18" (cast_expression "(uint)fVar10" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) | (binary_expression "((uint)fVar10 & 0xff0000) >> 8" (parenthesized_expression "((uint)fVar10 & 0xff0000)" ( (binary_expression "(uint)fVar10 & 0xff0000" (cast_expression "(uint)fVar10" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) >> number_literal)) | (binary_expression "((uint)fVar10 & 0xff00) << 8" (parenthesized_expression "((uint)fVar10 & 0xff00)" ( (binary_expression "(uint)fVar10 & 0xff00" (cast_expression "(uint)fVar10" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) << number_literal)) | (binary_expression "(int)fVar10 << 0x18" (cast_expression "(int)fVar10" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal)) ))) / identifier) )))) ;) }))) (if_statement "if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec);\n        }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec);\n        }" { (expression_statement "*(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec);" (assignment_expression "*(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec)" (pointer_expression "*(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8)" * (cast_expression "(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(iVar20 + 0x38) * 8)" ( (binary_expression "param_6 + *(int *)(iVar20 + 0x38) * 8" identifier + (binary_expression "*(int *)(iVar20 + 0x38) * 8" (pointer_expression "*(int *)(iVar20 + 0x38)" * (cast_expression "(int *)(iVar20 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x38)" ( (binary_expression "iVar20 + 0x38" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec)" ( (binary_expression "DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec" identifier - (binary_expression "(float)(uint)fVar27 / DAT_002a7fec" (cast_expression "(float)(uint)fVar27" ( (type_descriptor "float" primitive_type) ) (cast_expression "(uint)fVar27" ( (type_descriptor "uint" type_identifier) ) identifier)) / identifier)) )))) ;) })) (expression_statement "param_5 = (float *)((int)param_5 + uVar26 + 0x10);" (assignment_expression "param_5 = (float *)((int)param_5 + uVar26 + 0x10)" identifier = (cast_expression "(float *)((int)param_5 + uVar26 + 0x10)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + uVar26 + 0x10)" ( (binary_expression "(int)param_5 + uVar26 + 0x10" (binary_expression "(int)param_5 + uVar26" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ;) (expression_statement "iVar32 = iVar32 + 1;" (assignment_expression "iVar32 = iVar32 + 1" identifier = (binary_expression "iVar32 + 1" identifier + number_literal)) ;) (expression_statement "param_6 = param_6 + iVar33 * 8;" (assignment_expression "param_6 = param_6 + iVar33 * 8" identifier = (binary_expression "param_6 + iVar33 * 8" identifier + (binary_expression "iVar33 * 8" identifier * number_literal))) ;) }) while (parenthesized_expression "(iVar32 != param_3)" ( (binary_expression "iVar32 != param_3" identifier != identifier) )) ;) }))) (break_statement "break;" break ;)) (case_statement "case 0x40:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }\nLAB_00161285:\n    uVar26 = 0;\n    if (uVar22 < 0x41) {\n      uVar26 = uVar22;\n    }\n    bVar23 = (byte)(uVar26 - 1);\n    bVar12 = bVar23 & 0x1f;\n    uVar18 = 2 << (bVar23 & 0x1f);\n    uVar19 = uVar18;\n    uVar29 = 0 << bVar12 | 2U >> 0x20 - bVar12;\n    if ((uVar26 - 1 & 0x20) != 0) {\n      uVar19 = 0;\n      uVar29 = uVar18;\n    }\n    iVar20 = uVar19 - 1;\n    local_68 = (uVar29 - 1) + (uint)(uVar19 != 0);\n    local_6c = (byte)iVar20;\n    bStack_6b = (byte)((uint)iVar20 >> 8);\n    uStack_6a = (ushort)((uint)iVar20 >> 0x10);\nLAB_001612bc:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      local_64 = 0.0;\n      iVar33 = *(int *)(iVar20 + 8);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(param_1 + 0x298);\n      do {\n        pdVar28 = (double *)(iVar33 * 8 + local_78);\n        pdVar21 = (double *)(local_78 + iVar24 * 8);\n        if ((int)uVar22 < 1) {\n          fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (local_68 < 0) {\n            fVar27 = fVar27 + DAT_0029f714;\n          }\n          local_3c = (double)fVar27;\n          if (local_3c < dVar16) {\n            *pdVar28 = 0.0;\n          }\n          else {\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }\n          dVar15 = 0.0;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\nLAB_00161a0c:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          *pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710;\n          if (0 < (int)uVar22) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar15 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar15 = 0.0;\nLAB_00161c0a:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar15 = dVar14 * dVar15 * (double)DAT_0029f710;\n        }\n        else {\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {\n            *pdVar28 = (double)DAT_0029f710;\n          }\n          else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }\n          *pdVar21 = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }\n          dVar15 = (double)DAT_0029f710;\n        }\n        if (*(int *)(iVar20 + 0x34) != 0) {\n          *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15;\n        }\n        local_64 = (float)((int)local_64 + 1);\n        local_78 = local_78 + iVar6 * 8;\n      } while (local_64 != (float)param_3);\n    }" case number_literal : (if_statement "if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }" if (parenthesized_expression "(param_2[2] == 1)" ( (binary_expression "param_2[2] == 1" (subscript_expression "param_2[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }" { (if_statement "if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }" if (parenthesized_expression "(0 < param_3)" ( (binary_expression "0 < param_3" number_literal < identifier) )) (compound_statement "{\n        iVar20 = 0;\n        do {\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }" { (expression_statement "iVar20 = 0;" (assignment_expression "iVar20 = 0" identifier = number_literal) ;) (do_statement "do {\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);" do (compound_statement "{\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        }" { (expression_statement "FUN_00159410();" (call_expression "FUN_00159410()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) =\n               CONCAT44(uStack_28,fStack_2c);" (assignment_expression "*(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) =\n               CONCAT44(uStack_28,fStack_2c)" (pointer_expression "*(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" * (cast_expression "(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" ( (type_descriptor "ulonglong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" ( (binary_expression "param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 8)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 8" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) = (call_expression "CONCAT44(uStack_28,fStack_2c)" identifier (argument_list "(uStack_28,fStack_2c)" ( identifier , identifier )))) ;) (expression_statement "FUN_00159410();" (call_expression "FUN_00159410()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) =\n               CONCAT44(uStack_28,fStack_2c);" (assignment_expression "*(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) =\n               CONCAT44(uStack_28,fStack_2c)" (pointer_expression "*(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" * (cast_expression "(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" ( (type_descriptor "ulonglong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" ( (binary_expression "param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x14)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x14" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) = (call_expression "CONCAT44(uStack_28,fStack_2c)" identifier (argument_list "(uStack_28,fStack_2c)" ( identifier , identifier )))) ;) (expression_statement "FUN_00159410();" (call_expression "FUN_00159410()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) =\n               CONCAT44(uStack_28,fStack_2c);" (assignment_expression "*(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) =\n               CONCAT44(uStack_28,fStack_2c)" (pointer_expression "*(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" * (cast_expression "(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" ( (type_descriptor "ulonglong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" ( (binary_expression "param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x20)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x20" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) = (call_expression "CONCAT44(uStack_28,fStack_2c)" identifier (argument_list "(uStack_28,fStack_2c)" ( identifier , identifier )))) ;) (expression_statement "FUN_00159410();" (call_expression "FUN_00159410()" identifier (argument_list "()" ( ))) ;) (if_statement "if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));\n          }" if (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0)" ( (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x34)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x34" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));\n          }" { (expression_statement "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));" (assignment_expression "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c))" (pointer_expression "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" * (cast_expression "(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" ( (binary_expression "param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x38)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x38" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) = (cast_expression "(double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c))" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c))" ( (binary_expression "DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c)" identifier - (cast_expression "(float)(double)CONCAT44(uStack_28,fStack_2c)" ( (type_descriptor "float" primitive_type) ) (cast_expression "(double)CONCAT44(uStack_28,fStack_2c)" ( (type_descriptor "double" primitive_type) ) (call_expression "CONCAT44(uStack_28,fStack_2c)" identifier (argument_list "(uStack_28,fStack_2c)" ( identifier , identifier )))))) )))) ;) })) (expression_statement "iVar20 = iVar20 + 1;" (assignment_expression "iVar20 = iVar20 + 1" identifier = (binary_expression "iVar20 + 1" identifier + number_literal)) ;) (expression_statement "param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;" (assignment_expression "param_6 = param_6 + *(int *)(param_1 + 0x298) * 8" identifier = (binary_expression "param_6 + *(int *)(param_1 + 0x298) * 8" identifier + (binary_expression "*(int *)(param_1 + 0x298) * 8" (pointer_expression "*(int *)(param_1 + 0x298)" * (cast_expression "(int *)(param_1 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) )))) * number_literal))) ;) }) while (parenthesized_expression "(iVar20 != param_3)" ( (binary_expression "iVar20 != param_3" identifier != identifier) )) ;) })) (break_statement "break;" break ;) })) (labeled_statement "LAB_00161285:\n    uVar26 = 0;" statement_identifier : (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" identifier = number_literal) ;)) (if_statement "if (uVar22 < 0x41) {\n      uVar26 = uVar22;\n    }" if (parenthesized_expression "(uVar22 < 0x41)" ( (binary_expression "uVar22 < 0x41" identifier < number_literal) )) (compound_statement "{\n      uVar26 = uVar22;\n    }" { (expression_statement "uVar26 = uVar22;" (assignment_expression "uVar26 = uVar22" identifier = identifier) ;) })) (expression_statement "bVar23 = (byte)(uVar26 - 1);" (assignment_expression "bVar23 = (byte)(uVar26 - 1)" identifier = (call_expression "(byte)(uVar26 - 1)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar26 - 1)" ( (binary_expression "uVar26 - 1" identifier - number_literal) )))) ;) (expression_statement "bVar12 = bVar23 & 0x1f;" (assignment_expression "bVar12 = bVar23 & 0x1f" identifier = (binary_expression "bVar23 & 0x1f" identifier & number_literal)) ;) (expression_statement "uVar18 = 2 << (bVar23 & 0x1f);" (assignment_expression "uVar18 = 2 << (bVar23 & 0x1f)" identifier = (binary_expression "2 << (bVar23 & 0x1f)" number_literal << (parenthesized_expression "(bVar23 & 0x1f)" ( (binary_expression "bVar23 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar19 = uVar18;" (assignment_expression "uVar19 = uVar18" identifier = identifier) ;) (expression_statement "uVar29 = 0 << bVar12 | 2U >> 0x20 - bVar12;" (assignment_expression "uVar29 = 0 << bVar12 | 2U >> 0x20 - bVar12" identifier = (binary_expression "0 << bVar12 | 2U >> 0x20 - bVar12" (binary_expression "0 << bVar12" number_literal << identifier) | (binary_expression "2U >> 0x20 - bVar12" number_literal >> (binary_expression "0x20 - bVar12" number_literal - identifier)))) ;) (if_statement "if ((uVar26 - 1 & 0x20) != 0) {\n      uVar19 = 0;\n      uVar29 = uVar18;\n    }" if (parenthesized_expression "((uVar26 - 1 & 0x20) != 0)" ( (binary_expression "(uVar26 - 1 & 0x20) != 0" (parenthesized_expression "(uVar26 - 1 & 0x20)" ( (binary_expression "uVar26 - 1 & 0x20" (binary_expression "uVar26 - 1" identifier - number_literal) & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar19 = 0;\n      uVar29 = uVar18;\n    }" { (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) (expression_statement "uVar29 = uVar18;" (assignment_expression "uVar29 = uVar18" identifier = identifier) ;) })) (expression_statement "iVar20 = uVar19 - 1;" (assignment_expression "iVar20 = uVar19 - 1" identifier = (binary_expression "uVar19 - 1" identifier - number_literal)) ;) (expression_statement "local_68 = (uVar29 - 1) + (uint)(uVar19 != 0);" (assignment_expression "local_68 = (uVar29 - 1) + (uint)(uVar19 != 0)" identifier = (binary_expression "(uVar29 - 1) + (uint)(uVar19 != 0)" (parenthesized_expression "(uVar29 - 1)" ( (binary_expression "uVar29 - 1" identifier - number_literal) )) + (call_expression "(uint)(uVar19 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar19 != 0)" ( (binary_expression "uVar19 != 0" identifier != number_literal) ))))) ;) (expression_statement "local_6c = (byte)iVar20;" (assignment_expression "local_6c = (byte)iVar20" identifier = (cast_expression "(byte)iVar20" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "bStack_6b = (byte)((uint)iVar20 >> 8);" (assignment_expression "bStack_6b = (byte)((uint)iVar20 >> 8)" identifier = (call_expression "(byte)((uint)iVar20 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)iVar20 >> 8)" ( (binary_expression "(uint)iVar20 >> 8" (cast_expression "(uint)iVar20" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uStack_6a = (ushort)((uint)iVar20 >> 0x10);" (assignment_expression "uStack_6a = (ushort)((uint)iVar20 >> 0x10)" identifier = (call_expression "(ushort)((uint)iVar20 >> 0x10)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "((uint)iVar20 >> 0x10)" ( (binary_expression "(uint)iVar20 >> 0x10" (cast_expression "(uint)iVar20" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (labeled_statement "LAB_001612bc:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      local_64 = 0.0;\n      iVar33 = *(int *)(iVar20 + 8);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(param_1 + 0x298);\n      do {\n        pdVar28 = (double *)(iVar33 * 8 + local_78);\n        pdVar21 = (double *)(local_78 + iVar24 * 8);\n        if ((int)uVar22 < 1) {\n          fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (local_68 < 0) {\n            fVar27 = fVar27 + DAT_0029f714;\n          }\n          local_3c = (double)fVar27;\n          if (local_3c < dVar16) {\n            *pdVar28 = 0.0;\n          }\n          else {\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }\n          dVar15 = 0.0;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\nLAB_00161a0c:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          *pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710;\n          if (0 < (int)uVar22) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar15 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar15 = 0.0;\nLAB_00161c0a:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar15 = dVar14 * dVar15 * (double)DAT_0029f710;\n        }\n        else {\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {\n            *pdVar28 = (double)DAT_0029f710;\n          }\n          else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }\n          *pdVar21 = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }\n          dVar15 = (double)DAT_0029f710;\n        }\n        if (*(int *)(iVar20 + 0x34) != 0) {\n          *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15;\n        }\n        local_64 = (float)((int)local_64 + 1);\n        local_78 = local_78 + iVar6 * 8;\n      } while (local_64 != (float)param_3);\n    }" statement_identifier : (if_statement "if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      local_64 = 0.0;\n      iVar33 = *(int *)(iVar20 + 8);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(param_1 + 0x298);\n      do {\n        pdVar28 = (double *)(iVar33 * 8 + local_78);\n        pdVar21 = (double *)(local_78 + iVar24 * 8);\n        if ((int)uVar22 < 1) {\n          fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (local_68 < 0) {\n            fVar27 = fVar27 + DAT_0029f714;\n          }\n          local_3c = (double)fVar27;\n          if (local_3c < dVar16) {\n            *pdVar28 = 0.0;\n          }\n          else {\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }\n          dVar15 = 0.0;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\nLAB_00161a0c:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          *pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710;\n          if (0 < (int)uVar22) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar15 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar15 = 0.0;\nLAB_00161c0a:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar15 = dVar14 * dVar15 * (double)DAT_0029f710;\n        }\n        else {\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {\n            *pdVar28 = (double)DAT_0029f710;\n          }\n          else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }\n          *pdVar21 = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }\n          dVar15 = (double)DAT_0029f710;\n        }\n        if (*(int *)(iVar20 + 0x34) != 0) {\n          *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15;\n        }\n        local_64 = (float)((int)local_64 + 1);\n        local_78 = local_78 + iVar6 * 8;\n      } while (local_64 != (float)param_3);\n    }" if (parenthesized_expression "(0 < param_3)" ( (binary_expression "0 < param_3" number_literal < identifier) )) (compound_statement "{\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      local_64 = 0.0;\n      iVar33 = *(int *)(iVar20 + 8);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(param_1 + 0x298);\n      do {\n        pdVar28 = (double *)(iVar33 * 8 + local_78);\n        pdVar21 = (double *)(local_78 + iVar24 * 8);\n        if ((int)uVar22 < 1) {\n          fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (local_68 < 0) {\n            fVar27 = fVar27 + DAT_0029f714;\n          }\n          local_3c = (double)fVar27;\n          if (local_3c < dVar16) {\n            *pdVar28 = 0.0;\n          }\n          else {\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }\n          dVar15 = 0.0;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\nLAB_00161a0c:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          *pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710;\n          if (0 < (int)uVar22) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar15 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar15 = 0.0;\nLAB_00161c0a:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar15 = dVar14 * dVar15 * (double)DAT_0029f710;\n        }\n        else {\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {\n            *pdVar28 = (double)DAT_0029f710;\n          }\n          else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }\n          *pdVar21 = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }\n          dVar15 = (double)DAT_0029f710;\n        }\n        if (*(int *)(iVar20 + 0x34) != 0) {\n          *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15;\n        }\n        local_64 = (float)((int)local_64 + 1);\n        local_78 = local_78 + iVar6 * 8;\n      } while (local_64 != (float)param_3);\n    }" { (expression_statement "iVar20 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar20 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) (expression_statement "local_64 = 0.0;" (assignment_expression "local_64 = 0.0" identifier = number_literal) ;) (expression_statement "iVar33 = *(int *)(iVar20 + 8);" (assignment_expression "iVar33 = *(int *)(iVar20 + 8)" identifier = (pointer_expression "*(int *)(iVar20 + 8)" * (cast_expression "(int *)(iVar20 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 8)" ( (binary_expression "iVar20 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar24 = *(int *)(iVar20 + 0x14);" (assignment_expression "iVar24 = *(int *)(iVar20 + 0x14)" identifier = (pointer_expression "*(int *)(iVar20 + 0x14)" * (cast_expression "(int *)(iVar20 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x14)" ( (binary_expression "iVar20 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = *(int *)(param_1 + 0x298);" (assignment_expression "iVar6 = *(int *)(param_1 + 0x298)" identifier = (pointer_expression "*(int *)(param_1 + 0x298)" * (cast_expression "(int *)(param_1 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) ))))) ;) (do_statement "do {\n        pdVar28 = (double *)(iVar33 * 8 + local_78);\n        pdVar21 = (double *)(local_78 + iVar24 * 8);\n        if ((int)uVar22 < 1) {\n          fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (local_68 < 0) {\n            fVar27 = fVar27 + DAT_0029f714;\n          }\n          local_3c = (double)fVar27;\n          if (local_3c < dVar16) {\n            *pdVar28 = 0.0;\n          }\n          else {\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }\n          dVar15 = 0.0;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\nLAB_00161a0c:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          *pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710;\n          if (0 < (int)uVar22) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar15 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar15 = 0.0;\nLAB_00161c0a:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar15 = dVar14 * dVar15 * (double)DAT_0029f710;\n        }\n        else {\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {\n            *pdVar28 = (double)DAT_0029f710;\n          }\n          else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }\n          *pdVar21 = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }\n          dVar15 = (double)DAT_0029f710;\n        }\n        if (*(int *)(iVar20 + 0x34) != 0) {\n          *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15;\n        }\n        local_64 = (float)((int)local_64 + 1);\n        local_78 = local_78 + iVar6 * 8;\n      } while (local_64 != (float)param_3);" do (compound_statement "{\n        pdVar28 = (double *)(iVar33 * 8 + local_78);\n        pdVar21 = (double *)(local_78 + iVar24 * 8);\n        if ((int)uVar22 < 1) {\n          fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (local_68 < 0) {\n            fVar27 = fVar27 + DAT_0029f714;\n          }\n          local_3c = (double)fVar27;\n          if (local_3c < dVar16) {\n            *pdVar28 = 0.0;\n          }\n          else {\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }\n          dVar15 = 0.0;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\nLAB_00161a0c:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          *pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710;\n          if (0 < (int)uVar22) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar15 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar15 = 0.0;\nLAB_00161c0a:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar15 = dVar14 * dVar15 * (double)DAT_0029f710;\n        }\n        else {\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {\n            *pdVar28 = (double)DAT_0029f710;\n          }\n          else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }\n          *pdVar21 = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }\n          dVar15 = (double)DAT_0029f710;\n        }\n        if (*(int *)(iVar20 + 0x34) != 0) {\n          *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15;\n        }\n        local_64 = (float)((int)local_64 + 1);\n        local_78 = local_78 + iVar6 * 8;\n      }" { (expression_statement "pdVar28 = (double *)(iVar33 * 8 + local_78);" (assignment_expression "pdVar28 = (double *)(iVar33 * 8 + local_78)" identifier = (cast_expression "(double *)(iVar33 * 8 + local_78)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 * 8 + local_78)" ( (binary_expression "iVar33 * 8 + local_78" (binary_expression "iVar33 * 8" identifier * number_literal) + identifier) )))) ;) (expression_statement "pdVar21 = (double *)(local_78 + iVar24 * 8);" (assignment_expression "pdVar21 = (double *)(local_78 + iVar24 * 8)" identifier = (cast_expression "(double *)(local_78 + iVar24 * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + iVar24 * 8)" ( (binary_expression "local_78 + iVar24 * 8" identifier + (binary_expression "iVar24 * 8" identifier * number_literal)) )))) ;) (if_statement "if ((int)uVar22 < 1) {\n          fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (local_68 < 0) {\n            fVar27 = fVar27 + DAT_0029f714;\n          }\n          local_3c = (double)fVar27;\n          if (local_3c < dVar16) {\n            *pdVar28 = 0.0;\n          }\n          else {\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }\n          dVar15 = 0.0;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\nLAB_00161a0c:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          *pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710;\n          if (0 < (int)uVar22) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar15 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar15 = 0.0;\nLAB_00161c0a:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar15 = dVar14 * dVar15 * (double)DAT_0029f710;\n        }\n        else {\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {\n            *pdVar28 = (double)DAT_0029f710;\n          }\n          else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }\n          *pdVar21 = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }\n          dVar15 = (double)DAT_0029f710;\n        }" if (parenthesized_expression "((int)uVar22 < 1)" ( (binary_expression "(int)uVar22 < 1" (cast_expression "(int)uVar22" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (local_68 < 0) {\n            fVar27 = fVar27 + DAT_0029f714;\n          }\n          local_3c = (double)fVar27;\n          if (local_3c < dVar16) {\n            *pdVar28 = 0.0;\n          }\n          else {\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }\n          dVar15 = 0.0;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\nLAB_00161a0c:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          *pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710;\n          if (0 < (int)uVar22) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar15 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar15 = 0.0;\nLAB_00161c0a:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar15 = dVar14 * dVar15 * (double)DAT_0029f710;\n        }" { (expression_statement "fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));" (assignment_expression "fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" identifier = (cast_expression "(float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" identifier (argument_list "(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" ( identifier , (call_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" identifier (argument_list "(uStack_6a,CONCAT11(bStack_6b,local_6c))" ( identifier , (call_expression "CONCAT11(bStack_6b,local_6c)" identifier (argument_list "(bStack_6b,local_6c)" ( identifier , identifier ))) ))) ))))) ;) (if_statement "if (local_68 < 0) {\n            fVar27 = fVar27 + DAT_0029f714;\n          }" if (parenthesized_expression "(local_68 < 0)" ( (binary_expression "local_68 < 0" identifier < number_literal) )) (compound_statement "{\n            fVar27 = fVar27 + DAT_0029f714;\n          }" { (expression_statement "fVar27 = fVar27 + DAT_0029f714;" (assignment_expression "fVar27 = fVar27 + DAT_0029f714" identifier = (binary_expression "fVar27 + DAT_0029f714" identifier + identifier)) ;) })) (expression_statement "local_3c = (double)fVar27;" (assignment_expression "local_3c = (double)fVar27" identifier = (cast_expression "(double)fVar27" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (if_statement "if (local_3c < dVar16) {\n            *pdVar28 = 0.0;\n          }\n          else {\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }" if (parenthesized_expression "(local_3c < dVar16)" ( (binary_expression "local_3c < dVar16" identifier < identifier) )) (compound_statement "{\n            *pdVar28 = 0.0;\n          }" { (expression_statement "*pdVar28 = 0.0;" (assignment_expression "*pdVar28 = 0.0" (pointer_expression "*pdVar28" * identifier) = number_literal) ;) }) (else_clause "else {\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }" else (compound_statement "{\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }" { (expression_statement "dVar15 = 0.0;" (assignment_expression "dVar15 = 0.0" identifier = number_literal) ;) (labeled_statement "LAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;" statement_identifier : (expression_statement "*pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;" (assignment_expression "*pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710" (pointer_expression "*pdVar28" * identifier) = (binary_expression "((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710" (binary_expression "((double)DAT_0029f718 / local_3c) * dVar15" (parenthesized_expression "((double)DAT_0029f718 / local_3c)" ( (binary_expression "(double)DAT_0029f718 / local_3c" (cast_expression "(double)DAT_0029f718" ( (type_descriptor "double" primitive_type) ) identifier) / identifier) )) * identifier) * (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;)) (if_statement "if (0 < (int)uVar22) goto LAB_00161938;" if (parenthesized_expression "(0 < (int)uVar22)" ( (binary_expression "0 < (int)uVar22" number_literal < (cast_expression "(int)uVar22" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_00161938;" goto statement_identifier ;)) }))) (expression_statement "dVar15 = 0.0;" (assignment_expression "dVar15 = 0.0" identifier = number_literal) ;) (expression_statement "local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);" (assignment_expression "local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8)" identifier = (cast_expression "(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + *(int *)(iVar20 + 0x20) * 8)" ( (binary_expression "local_78 + *(int *)(iVar20 + 0x20) * 8" identifier + (binary_expression "*(int *)(iVar20 + 0x20) * 8" (pointer_expression "*(int *)(iVar20 + 0x20)" * (cast_expression "(int *)(iVar20 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x20)" ( (binary_expression "iVar20 + 0x20" identifier + number_literal) )))) * number_literal)) )))) ;) (labeled_statement "LAB_00161a0c:\n          dVar14 = DAT_0029f738;" statement_identifier : (expression_statement "dVar14 = DAT_0029f738;" (assignment_expression "dVar14 = DAT_0029f738" identifier = identifier) ;)) (if_statement "if (DAT_0029f138 <= local_3c) {\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }" if (parenthesized_expression "(DAT_0029f138 <= local_3c)" ( (binary_expression "DAT_0029f138 <= local_3c" identifier <= identifier) )) (compound_statement "{\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }" { (expression_statement "dVar14 = (double)DAT_0029f718 / local_3c;" (assignment_expression "dVar14 = (double)DAT_0029f718 / local_3c" identifier = (binary_expression "(double)DAT_0029f718 / local_3c" (cast_expression "(double)DAT_0029f718" ( (type_descriptor "double" primitive_type) ) identifier) / identifier)) ;) })) (expression_statement "*pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710;" (assignment_expression "*pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710" (pointer_expression "*pdVar21" * identifier) = (binary_expression "dVar14 * dVar15 * (double)DAT_0029f710" (binary_expression "dVar14 * dVar15" identifier * identifier) * (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (0 < (int)uVar22) goto LAB_00161a4a;" if (parenthesized_expression "(0 < (int)uVar22)" ( (binary_expression "0 < (int)uVar22" number_literal < (cast_expression "(int)uVar22" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_00161a4a;" goto statement_identifier ;)) (if_statement "if (DAT_0029f138 <= local_3c) {\n            dVar15 = 0.0;\n            goto LAB_00161ed0;\n          }" if (parenthesized_expression "(DAT_0029f138 <= local_3c)" ( (binary_expression "DAT_0029f138 <= local_3c" identifier <= identifier) )) (compound_statement "{\n            dVar15 = 0.0;\n            goto LAB_00161ed0;\n          }" { (expression_statement "dVar15 = 0.0;" (assignment_expression "dVar15 = 0.0" identifier = number_literal) ;) (goto_statement "goto LAB_00161ed0;" goto statement_identifier ;) })) (expression_statement "*local_5c = 0.0;" (assignment_expression "*local_5c = 0.0" (pointer_expression "*local_5c" * identifier) = number_literal) ;) (expression_statement "dVar15 = 0.0;" (assignment_expression "dVar15 = 0.0" identifier = number_literal) ;) (labeled_statement "LAB_00161c0a:\n          dVar14 = DAT_0029f738;" statement_identifier : (expression_statement "dVar14 = DAT_0029f738;" (assignment_expression "dVar14 = DAT_0029f738" identifier = identifier) ;)) (if_statement "if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }" if (parenthesized_expression "(DAT_0029f138 <= local_3c)" ( (binary_expression "DAT_0029f138 <= local_3c" identifier <= identifier) )) (compound_statement "{\nLAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }" { (labeled_statement "LAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;" statement_identifier : (expression_statement "dVar14 = (double)DAT_0029f718 / local_3c;" (assignment_expression "dVar14 = (double)DAT_0029f718 / local_3c" identifier = (binary_expression "(double)DAT_0029f718 / local_3c" (cast_expression "(double)DAT_0029f718" ( (type_descriptor "double" primitive_type) ) identifier) / identifier)) ;)) })) (expression_statement "dVar15 = dVar14 * dVar15 * (double)DAT_0029f710;" (assignment_expression "dVar15 = dVar14 * dVar15 * (double)DAT_0029f710" identifier = (binary_expression "dVar14 * dVar15 * (double)DAT_0029f710" (binary_expression "dVar14 * dVar15" identifier * identifier) * (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) }) (else_clause "else {\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {\n            *pdVar28 = (double)DAT_0029f710;\n          }\n          else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }\n          *pdVar21 = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }\n          dVar15 = (double)DAT_0029f710;\n        }" else (compound_statement "{\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {\n            *pdVar28 = (double)DAT_0029f710;\n          }\n          else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }\n          *pdVar21 = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }\n          dVar15 = (double)DAT_0029f710;\n        }" { (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) (expression_statement "uVar26 = param_2[0x14];" (assignment_expression "uVar26 = param_2[0x14]" identifier = (subscript_expression "param_2[0x14]" identifier [ number_literal ])) ;) (expression_statement "uVar29 = uVar22;" (assignment_expression "uVar29 = uVar22" identifier = identifier) ;) (do_statement "do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);" do (compound_statement "{\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          }" { (if_statement "if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }" if (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) (compound_statement "{\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }" { (expression_statement "uVar18 = (uint)*(byte *)local_80;" (assignment_expression "uVar18 = (uint)*(byte *)local_80" identifier = (binary_expression "(uint)*(byte *)local_80" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)local_80" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_80 = (float *)((int)local_80 + 1);" (assignment_expression "local_80 = (float *)((int)local_80 + 1)" identifier = (cast_expression "(float *)((int)local_80 + 1)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + 1)" ( (binary_expression "(int)local_80 + 1" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "param_2[0x13] = uVar18;" (assignment_expression "param_2[0x13] = uVar18" (subscript_expression "param_2[0x13]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar26 = 8;" (assignment_expression "uVar26 = 8" identifier = number_literal) ;) }) (else_clause "else {\n              uVar18 = param_2[0x13];\n            }" else (compound_statement "{\n              uVar18 = param_2[0x13];\n            }" { (expression_statement "uVar18 = param_2[0x13];" (assignment_expression "uVar18 = param_2[0x13]" identifier = (subscript_expression "param_2[0x13]" identifier [ number_literal ])) ;) }))) (expression_statement "uVar25 = uVar26;" (assignment_expression "uVar25 = uVar26" identifier = identifier) ;) (if_statement "if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }" if (parenthesized_expression "(uVar29 <= uVar26)" ( (binary_expression "uVar29 <= uVar26" identifier <= identifier) )) (compound_statement "{\n              uVar25 = uVar29;\n            }" { (expression_statement "uVar25 = uVar29;" (assignment_expression "uVar25 = uVar29" identifier = identifier) ;) })) (expression_statement "uVar26 = uVar26 - uVar25;" (assignment_expression "uVar26 = uVar26 - uVar25" identifier = (binary_expression "uVar26 - uVar25" identifier - identifier)) ;) (expression_statement "uVar29 = uVar29 - uVar25;" (assignment_expression "uVar29 = uVar29 - uVar25" identifier = (binary_expression "uVar29 - uVar25" identifier - identifier)) ;) (expression_statement "uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);" (assignment_expression "uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f)" identifier = (binary_expression "uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f)" (binary_expression "uVar19 << ((byte)uVar25 & 0x1f)" identifier << (parenthesized_expression "((byte)uVar25 & 0x1f)" ( (binary_expression "(byte)uVar25 & 0x1f" (cast_expression "(byte)uVar25" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) | (binary_expression "~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f)" (unary_expression "~(-1 << ((byte)uVar25 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar25 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar25 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar25 & 0x1f)" ( (binary_expression "(byte)uVar25 & 0x1f" (cast_expression "(byte)uVar25" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & (binary_expression "uVar18 >> ((byte)uVar26 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar26 & 0x1f)" ( (binary_expression "(byte)uVar26 & 0x1f" (cast_expression "(byte)uVar26" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))))) ;) }) while (parenthesized_expression "(0 < (int)uVar29)" ( (binary_expression "0 < (int)uVar29" number_literal < (cast_expression "(int)uVar29" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "param_2[0x14] = uVar26;" (assignment_expression "param_2[0x14] = uVar26" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {\n            *pdVar28 = (double)DAT_0029f710;\n          }\n          else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }" if (parenthesized_expression "((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19))" ( (binary_expression "(local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)" (parenthesized_expression "(local_68 == 0)" ( (binary_expression "local_68 == 0" identifier == number_literal) )) && (parenthesized_expression "(CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)" ( (binary_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19" (call_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" identifier (argument_list "(uStack_6a,CONCAT11(bStack_6b,local_6c))" ( identifier , (call_expression "CONCAT11(bStack_6b,local_6c)" identifier (argument_list "(bStack_6b,local_6c)" ( identifier , identifier ))) ))) < identifier) ))) )) (compound_statement "{\n            *pdVar28 = (double)DAT_0029f710;\n          }" { (expression_statement "*pdVar28 = (double)DAT_0029f710;" (assignment_expression "*pdVar28 = (double)DAT_0029f710" (pointer_expression "*pdVar28" * identifier) = (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier)) ;) }) (else_clause "else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }" else (compound_statement "{\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }" { (expression_statement "dVar15 = (double)uVar19;" (assignment_expression "dVar15 = (double)uVar19" identifier = (cast_expression "(double)uVar19" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));" (assignment_expression "fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" identifier = (cast_expression "(float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" identifier (argument_list "(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" ( identifier , (call_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" identifier (argument_list "(uStack_6a,CONCAT11(bStack_6b,local_6c))" ( identifier , (call_expression "CONCAT11(bStack_6b,local_6c)" identifier (argument_list "(bStack_6b,local_6c)" ( identifier , identifier ))) ))) ))))) ;) (if_statement "if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }" if (parenthesized_expression "(local_68 < 0)" ( (binary_expression "local_68 < 0" identifier < number_literal) )) (compound_statement "{\n              fVar27 = fVar27 + DAT_0029f714;\n            }" { (expression_statement "fVar27 = fVar27 + DAT_0029f714;" (assignment_expression "fVar27 = fVar27 + DAT_0029f714" identifier = (binary_expression "fVar27 + DAT_0029f714" identifier + identifier)) ;) })) (expression_statement "local_3c = (double)fVar27;" (assignment_expression "local_3c = (double)fVar27" identifier = (cast_expression "(double)fVar27" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (if_statement "if (DAT_0029f138 <= local_3c) goto LAB_00161f72;" if (parenthesized_expression "(DAT_0029f138 <= local_3c)" ( (binary_expression "DAT_0029f138 <= local_3c" identifier <= identifier) )) (goto_statement "goto LAB_00161f72;" goto statement_identifier ;)) (expression_statement "*pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;" (assignment_expression "*pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710" (pointer_expression "*pdVar28" * identifier) = (binary_expression "dVar15 * DAT_0029f738 * (double)DAT_0029f710" (binary_expression "dVar15 * DAT_0029f738" identifier * identifier) * (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) }))) (labeled_statement "LAB_00161938:\n          uVar19 = 0;" statement_identifier : (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;)) (expression_statement "uVar26 = param_2[0x14];" (assignment_expression "uVar26 = param_2[0x14]" identifier = (subscript_expression "param_2[0x14]" identifier [ number_literal ])) ;) (expression_statement "uVar29 = uVar22;" (assignment_expression "uVar29 = uVar22" identifier = identifier) ;) (do_statement "do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);" do (compound_statement "{\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          }" { (if_statement "if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }" if (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) (compound_statement "{\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }" { (expression_statement "uVar18 = (uint)*(byte *)local_80;" (assignment_expression "uVar18 = (uint)*(byte *)local_80" identifier = (binary_expression "(uint)*(byte *)local_80" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)local_80" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_80 = (float *)((int)local_80 + 1);" (assignment_expression "local_80 = (float *)((int)local_80 + 1)" identifier = (cast_expression "(float *)((int)local_80 + 1)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + 1)" ( (binary_expression "(int)local_80 + 1" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar26 = 8;" (assignment_expression "uVar26 = 8" identifier = number_literal) ;) (expression_statement "param_2[0x13] = uVar18;" (assignment_expression "param_2[0x13] = uVar18" (subscript_expression "param_2[0x13]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n              uVar18 = param_2[0x13];\n            }" else (compound_statement "{\n              uVar18 = param_2[0x13];\n            }" { (expression_statement "uVar18 = param_2[0x13];" (assignment_expression "uVar18 = param_2[0x13]" identifier = (subscript_expression "param_2[0x13]" identifier [ number_literal ])) ;) }))) (expression_statement "uVar25 = uVar26;" (assignment_expression "uVar25 = uVar26" identifier = identifier) ;) (if_statement "if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }" if (parenthesized_expression "(uVar29 <= uVar26)" ( (binary_expression "uVar29 <= uVar26" identifier <= identifier) )) (compound_statement "{\n              uVar25 = uVar29;\n            }" { (expression_statement "uVar25 = uVar29;" (assignment_expression "uVar25 = uVar29" identifier = identifier) ;) })) (expression_statement "uVar26 = uVar26 - uVar25;" (assignment_expression "uVar26 = uVar26 - uVar25" identifier = (binary_expression "uVar26 - uVar25" identifier - identifier)) ;) (expression_statement "uVar29 = uVar29 - uVar25;" (assignment_expression "uVar29 = uVar29 - uVar25" identifier = (binary_expression "uVar29 - uVar25" identifier - identifier)) ;) (expression_statement "uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);" (assignment_expression "uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f)" identifier = (binary_expression "uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f)" (binary_expression "uVar19 << ((byte)uVar25 & 0x1f)" identifier << (parenthesized_expression "((byte)uVar25 & 0x1f)" ( (binary_expression "(byte)uVar25 & 0x1f" (cast_expression "(byte)uVar25" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) | (binary_expression "~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f)" (unary_expression "~(-1 << ((byte)uVar25 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar25 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar25 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar25 & 0x1f)" ( (binary_expression "(byte)uVar25 & 0x1f" (cast_expression "(byte)uVar25" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & (binary_expression "uVar18 >> ((byte)uVar26 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar26 & 0x1f)" ( (binary_expression "(byte)uVar26 & 0x1f" (cast_expression "(byte)uVar26" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))))) ;) }) while (parenthesized_expression "(0 < (int)uVar29)" ( (binary_expression "0 < (int)uVar29" number_literal < (cast_expression "(int)uVar29" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "param_2[0x14] = uVar26;" (assignment_expression "param_2[0x14] = uVar26" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);" (assignment_expression "local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8)" identifier = (cast_expression "(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + *(int *)(iVar20 + 0x20) * 8)" ( (binary_expression "local_78 + *(int *)(iVar20 + 0x20) * 8" identifier + (binary_expression "*(int *)(iVar20 + 0x20) * 8" (pointer_expression "*(int *)(iVar20 + 0x20)" * (cast_expression "(int *)(iVar20 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x20)" ( (binary_expression "iVar20 + 0x20" identifier + number_literal) )))) * number_literal)) )))) ;) (if_statement "if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }" if (parenthesized_expression "((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))))" ( (binary_expression "(local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" (parenthesized_expression "(local_68 != 0)" ( (binary_expression "local_68 != 0" identifier != number_literal) )) || (parenthesized_expression "(uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" ( (binary_expression "uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" identifier <= (call_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" identifier (argument_list "(uStack_6a,CONCAT11(bStack_6b,local_6c))" ( identifier , (call_expression "CONCAT11(bStack_6b,local_6c)" identifier (argument_list "(bStack_6b,local_6c)" ( identifier , identifier ))) )))) ))) )) (compound_statement "{\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }" { (expression_statement "fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));" (assignment_expression "fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" identifier = (cast_expression "(float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" identifier (argument_list "(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" ( identifier , (call_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" identifier (argument_list "(uStack_6a,CONCAT11(bStack_6b,local_6c))" ( identifier , (call_expression "CONCAT11(bStack_6b,local_6c)" identifier (argument_list "(bStack_6b,local_6c)" ( identifier , identifier ))) ))) ))))) ;) (if_statement "if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }" if (parenthesized_expression "(local_68 < 0)" ( (binary_expression "local_68 < 0" identifier < number_literal) )) (compound_statement "{\n              fVar27 = fVar27 + DAT_0029f714;\n            }" { (expression_statement "fVar27 = fVar27 + DAT_0029f714;" (assignment_expression "fVar27 = fVar27 + DAT_0029f714" identifier = (binary_expression "fVar27 + DAT_0029f714" identifier + identifier)) ;) })) (expression_statement "local_3c = (double)fVar27;" (assignment_expression "local_3c = (double)fVar27" identifier = (cast_expression "(double)fVar27" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "dVar15 = (double)uVar19;" (assignment_expression "dVar15 = (double)uVar19" identifier = (cast_expression "(double)uVar19" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (goto_statement "goto LAB_00161a0c;" goto statement_identifier ;) })) (expression_statement "*pdVar21 = (double)DAT_0029f710;" (assignment_expression "*pdVar21 = (double)DAT_0029f710" (pointer_expression "*pdVar21" * identifier) = (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (labeled_statement "LAB_00161a4a:\n          uVar19 = 0;" statement_identifier : (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;)) (expression_statement "uVar26 = param_2[0x14];" (assignment_expression "uVar26 = param_2[0x14]" identifier = (subscript_expression "param_2[0x14]" identifier [ number_literal ])) ;) (expression_statement "uVar29 = uVar22;" (assignment_expression "uVar29 = uVar22" identifier = identifier) ;) (do_statement "do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);" do (compound_statement "{\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          }" { (if_statement "if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }" if (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) (compound_statement "{\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }" { (expression_statement "uVar18 = (uint)*(byte *)local_80;" (assignment_expression "uVar18 = (uint)*(byte *)local_80" identifier = (binary_expression "(uint)*(byte *)local_80" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)local_80" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_80 = (float *)((int)local_80 + 1);" (assignment_expression "local_80 = (float *)((int)local_80 + 1)" identifier = (cast_expression "(float *)((int)local_80 + 1)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + 1)" ( (binary_expression "(int)local_80 + 1" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "param_2[0x13] = uVar18;" (assignment_expression "param_2[0x13] = uVar18" (subscript_expression "param_2[0x13]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar26 = 8;" (assignment_expression "uVar26 = 8" identifier = number_literal) ;) }) (else_clause "else {\n              uVar18 = param_2[0x13];\n            }" else (compound_statement "{\n              uVar18 = param_2[0x13];\n            }" { (expression_statement "uVar18 = param_2[0x13];" (assignment_expression "uVar18 = param_2[0x13]" identifier = (subscript_expression "param_2[0x13]" identifier [ number_literal ])) ;) }))) (expression_statement "uVar25 = uVar29;" (assignment_expression "uVar25 = uVar29" identifier = identifier) ;) (if_statement "if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }" if (parenthesized_expression "(uVar26 <= uVar29)" ( (binary_expression "uVar26 <= uVar29" identifier <= identifier) )) (compound_statement "{\n              uVar25 = uVar26;\n            }" { (expression_statement "uVar25 = uVar26;" (assignment_expression "uVar25 = uVar26" identifier = identifier) ;) })) (expression_statement "uVar26 = uVar26 - uVar25;" (assignment_expression "uVar26 = uVar26 - uVar25" identifier = (binary_expression "uVar26 - uVar25" identifier - identifier)) ;) (expression_statement "uVar29 = uVar29 - uVar25;" (assignment_expression "uVar29 = uVar29 - uVar25" identifier = (binary_expression "uVar29 - uVar25" identifier - identifier)) ;) (expression_statement "uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);" (assignment_expression "uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f)" identifier = (binary_expression "uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f)" (binary_expression "uVar19 << ((byte)uVar25 & 0x1f)" identifier << (parenthesized_expression "((byte)uVar25 & 0x1f)" ( (binary_expression "(byte)uVar25 & 0x1f" (cast_expression "(byte)uVar25" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) | (binary_expression "~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f)" (unary_expression "~(-1 << ((byte)uVar25 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar25 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar25 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar25 & 0x1f)" ( (binary_expression "(byte)uVar25 & 0x1f" (cast_expression "(byte)uVar25" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & (binary_expression "uVar18 >> ((byte)uVar26 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar26 & 0x1f)" ( (binary_expression "(byte)uVar26 & 0x1f" (cast_expression "(byte)uVar26" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))))) ;) }) while (parenthesized_expression "(0 < (int)uVar29)" ( (binary_expression "0 < (int)uVar29" number_literal < (cast_expression "(int)uVar29" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "param_2[0x14] = uVar26;" (assignment_expression "param_2[0x14] = uVar26" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }" if (parenthesized_expression "((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))))" ( (binary_expression "(local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" (parenthesized_expression "(local_68 != 0)" ( (binary_expression "local_68 != 0" identifier != number_literal) )) || (parenthesized_expression "(uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" ( (binary_expression "uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" identifier <= (call_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" identifier (argument_list "(uStack_6a,CONCAT11(bStack_6b,local_6c))" ( identifier , (call_expression "CONCAT11(bStack_6b,local_6c)" identifier (argument_list "(bStack_6b,local_6c)" ( identifier , identifier ))) )))) ))) )) (compound_statement "{\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }" { (expression_statement "fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));" (assignment_expression "fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" identifier = (cast_expression "(float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" identifier (argument_list "(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" ( identifier , (call_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" identifier (argument_list "(uStack_6a,CONCAT11(bStack_6b,local_6c))" ( identifier , (call_expression "CONCAT11(bStack_6b,local_6c)" identifier (argument_list "(bStack_6b,local_6c)" ( identifier , identifier ))) ))) ))))) ;) (if_statement "if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }" if (parenthesized_expression "(local_68 < 0)" ( (binary_expression "local_68 < 0" identifier < number_literal) )) (compound_statement "{\n              fVar27 = fVar27 + DAT_0029f714;\n            }" { (expression_statement "fVar27 = fVar27 + DAT_0029f714;" (assignment_expression "fVar27 = fVar27 + DAT_0029f714" identifier = (binary_expression "fVar27 + DAT_0029f714" identifier + identifier)) ;) })) (expression_statement "local_3c = (double)fVar27;" (assignment_expression "local_3c = (double)fVar27" identifier = (cast_expression "(double)fVar27" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "dVar15 = (double)uVar19;" (assignment_expression "dVar15 = (double)uVar19" identifier = (cast_expression "(double)uVar19" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (if_statement "if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }" if (parenthesized_expression "(local_3c < DAT_0029f138)" ( (binary_expression "local_3c < DAT_0029f138" identifier < identifier) )) (compound_statement "{\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }" { (expression_statement "*local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;" (assignment_expression "*local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710" (pointer_expression "*local_5c" * identifier) = (binary_expression "dVar15 * DAT_0029f738 * (double)DAT_0029f710" (binary_expression "dVar15 * DAT_0029f738" identifier * identifier) * (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }" if (parenthesized_expression "((int)uVar22 < 1)" ( (binary_expression "(int)uVar22 < 1" (cast_expression "(int)uVar22" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }" { (expression_statement "dVar15 = 0.0;" (assignment_expression "dVar15 = 0.0" identifier = number_literal) ;) (goto_statement "goto LAB_00161c0a;" goto statement_identifier ;) })) (goto_statement "goto LAB_00161b52;" goto statement_identifier ;) })) (labeled_statement "LAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;" statement_identifier : (expression_statement "*local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;" (assignment_expression "*local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710" (pointer_expression "*local_5c" * identifier) = (binary_expression "((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710" (binary_expression "((double)DAT_0029f718 / local_3c) * dVar15" (parenthesized_expression "((double)DAT_0029f718 / local_3c)" ( (binary_expression "(double)DAT_0029f718 / local_3c" (cast_expression "(double)DAT_0029f718" ( (type_descriptor "double" primitive_type) ) identifier) / identifier) )) * identifier) * (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;)) (if_statement "if (0 < (int)uVar22) goto LAB_00161b52;" if (parenthesized_expression "(0 < (int)uVar22)" ( (binary_expression "0 < (int)uVar22" number_literal < (cast_expression "(int)uVar22" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_00161b52;" goto statement_identifier ;)) (expression_statement "dVar15 = 0.0;" (assignment_expression "dVar15 = 0.0" identifier = number_literal) ;) (goto_statement "goto LAB_00161f00;" goto statement_identifier ;) })) (expression_statement "*local_5c = (double)DAT_0029f710;" (assignment_expression "*local_5c = (double)DAT_0029f710" (pointer_expression "*local_5c" * identifier) = (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (labeled_statement "LAB_00161b52:\n          uVar19 = 0;" statement_identifier : (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;)) (expression_statement "uVar26 = param_2[0x14];" (assignment_expression "uVar26 = param_2[0x14]" identifier = (subscript_expression "param_2[0x14]" identifier [ number_literal ])) ;) (expression_statement "uVar29 = uVar22;" (assignment_expression "uVar29 = uVar22" identifier = identifier) ;) (do_statement "do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);" do (compound_statement "{\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          }" { (if_statement "if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }" if (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) (compound_statement "{\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }" { (expression_statement "uVar18 = (uint)*(byte *)local_80;" (assignment_expression "uVar18 = (uint)*(byte *)local_80" identifier = (binary_expression "(uint)*(byte *)local_80" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)local_80" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_80 = (float *)((int)local_80 + 1);" (assignment_expression "local_80 = (float *)((int)local_80 + 1)" identifier = (cast_expression "(float *)((int)local_80 + 1)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + 1)" ( (binary_expression "(int)local_80 + 1" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar26 = 8;" (assignment_expression "uVar26 = 8" identifier = number_literal) ;) (expression_statement "param_2[0x13] = uVar18;" (assignment_expression "param_2[0x13] = uVar18" (subscript_expression "param_2[0x13]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n              uVar18 = param_2[0x13];\n            }" else (compound_statement "{\n              uVar18 = param_2[0x13];\n            }" { (expression_statement "uVar18 = param_2[0x13];" (assignment_expression "uVar18 = param_2[0x13]" identifier = (subscript_expression "param_2[0x13]" identifier [ number_literal ])) ;) }))) (expression_statement "uVar25 = uVar29;" (assignment_expression "uVar25 = uVar29" identifier = identifier) ;) (if_statement "if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }" if (parenthesized_expression "(uVar26 <= uVar29)" ( (binary_expression "uVar26 <= uVar29" identifier <= identifier) )) (compound_statement "{\n              uVar25 = uVar26;\n            }" { (expression_statement "uVar25 = uVar26;" (assignment_expression "uVar25 = uVar26" identifier = identifier) ;) })) (expression_statement "uVar26 = uVar26 - uVar25;" (assignment_expression "uVar26 = uVar26 - uVar25" identifier = (binary_expression "uVar26 - uVar25" identifier - identifier)) ;) (expression_statement "uVar29 = uVar29 - uVar25;" (assignment_expression "uVar29 = uVar29 - uVar25" identifier = (binary_expression "uVar29 - uVar25" identifier - identifier)) ;) (expression_statement "uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);" (assignment_expression "uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f)" identifier = (binary_expression "uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f)" (binary_expression "uVar19 << ((byte)uVar25 & 0x1f)" identifier << (parenthesized_expression "((byte)uVar25 & 0x1f)" ( (binary_expression "(byte)uVar25 & 0x1f" (cast_expression "(byte)uVar25" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) | (binary_expression "~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f)" (unary_expression "~(-1 << ((byte)uVar25 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar25 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar25 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar25 & 0x1f)" ( (binary_expression "(byte)uVar25 & 0x1f" (cast_expression "(byte)uVar25" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & (binary_expression "uVar18 >> ((byte)uVar26 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar26 & 0x1f)" ( (binary_expression "(byte)uVar26 & 0x1f" (cast_expression "(byte)uVar26" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))))) ;) }) while (parenthesized_expression "(0 < (int)uVar29)" ( (binary_expression "0 < (int)uVar29" number_literal < (cast_expression "(int)uVar29" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "param_2[0x14] = uVar26;" (assignment_expression "param_2[0x14] = uVar26" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }" if (parenthesized_expression "((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))))" ( (binary_expression "(local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" (parenthesized_expression "(local_68 != 0)" ( (binary_expression "local_68 != 0" identifier != number_literal) )) || (parenthesized_expression "(uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" ( (binary_expression "uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" identifier <= (call_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" identifier (argument_list "(uStack_6a,CONCAT11(bStack_6b,local_6c))" ( identifier , (call_expression "CONCAT11(bStack_6b,local_6c)" identifier (argument_list "(bStack_6b,local_6c)" ( identifier , identifier ))) )))) ))) )) (compound_statement "{\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }" { (expression_statement "fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));" (assignment_expression "fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" identifier = (cast_expression "(float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" identifier (argument_list "(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" ( identifier , (call_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" identifier (argument_list "(uStack_6a,CONCAT11(bStack_6b,local_6c))" ( identifier , (call_expression "CONCAT11(bStack_6b,local_6c)" identifier (argument_list "(bStack_6b,local_6c)" ( identifier , identifier ))) ))) ))))) ;) (if_statement "if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }" if (parenthesized_expression "(local_68 < 0)" ( (binary_expression "local_68 < 0" identifier < number_literal) )) (compound_statement "{\n              fVar27 = fVar27 + DAT_0029f714;\n            }" { (expression_statement "fVar27 = fVar27 + DAT_0029f714;" (assignment_expression "fVar27 = fVar27 + DAT_0029f714" identifier = (binary_expression "fVar27 + DAT_0029f714" identifier + identifier)) ;) })) (expression_statement "local_3c = (double)fVar27;" (assignment_expression "local_3c = (double)fVar27" identifier = (cast_expression "(double)fVar27" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "dVar15 = (double)uVar19;" (assignment_expression "dVar15 = (double)uVar19" identifier = (cast_expression "(double)uVar19" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (goto_statement "goto LAB_00161c0a;" goto statement_identifier ;) })) (expression_statement "dVar15 = (double)DAT_0029f710;" (assignment_expression "dVar15 = (double)DAT_0029f710" identifier = (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier)) ;) }))) (if_statement "if (*(int *)(iVar20 + 0x34) != 0) {\n          *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15;\n        }" if (parenthesized_expression "(*(int *)(iVar20 + 0x34) != 0)" ( (binary_expression "*(int *)(iVar20 + 0x34) != 0" (pointer_expression "*(int *)(iVar20 + 0x34)" * (cast_expression "(int *)(iVar20 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x34)" ( (binary_expression "iVar20 + 0x34" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15;\n        }" { (expression_statement "*(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15;" (assignment_expression "*(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15" (pointer_expression "*(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8)" * (cast_expression "(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + *(int *)(iVar20 + 0x38) * 8)" ( (binary_expression "local_78 + *(int *)(iVar20 + 0x38) * 8" identifier + (binary_expression "*(int *)(iVar20 + 0x38) * 8" (pointer_expression "*(int *)(iVar20 + 0x38)" * (cast_expression "(int *)(iVar20 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x38)" ( (binary_expression "iVar20 + 0x38" identifier + number_literal) )))) * number_literal)) )))) = (binary_expression "(double)DAT_0029f710 - dVar15" (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier) - identifier)) ;) })) (expression_statement "local_64 = (float)((int)local_64 + 1);" (assignment_expression "local_64 = (float)((int)local_64 + 1)" identifier = (cast_expression "(float)((int)local_64 + 1)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((int)local_64 + 1)" ( (binary_expression "(int)local_64 + 1" (cast_expression "(int)local_64" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "local_78 = local_78 + iVar6 * 8;" (assignment_expression "local_78 = local_78 + iVar6 * 8" identifier = (binary_expression "local_78 + iVar6 * 8" identifier + (binary_expression "iVar6 * 8" identifier * number_literal))) ;) }) while (parenthesized_expression "(local_64 != (float)param_3)" ( (binary_expression "local_64 != (float)param_3" identifier != (cast_expression "(float)param_3" ( (type_descriptor "float" primitive_type) ) identifier)) )) ;) })))) })) (if_statement "if (iVar2 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0029eab0();\n  }" if (parenthesized_expression "(iVar2 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar2 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0029eab0();\n  }" { comment (expression_statement "FUN_0029eab0();" (call_expression "FUN_0029eab0()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.cx replaced with injection: get_pc_thunk_cx */\n/* 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 __regparm2\nImportRGBOQuantum(Image *image,QuantumInfo *quantum_info,MagickSizeType number_pixels,uchar *p,\n                 Quantum *q)\n\n{\n  uint *puVar1;\n  ushort uVar2;\n  ushort uVar3;\n  EndianType EVar4;\n  int iVar5;\n  size_t sVar6;\n  int iVar7;\n  PixelTrait PVar8;\n  byte bVar9;\n  double dVar10;\n  double dVar11;\n  double dVar12;\n  float fVar13;\n  float fVar14;\n  ushort uVar15;\n  uint uVar16;\n  uint uVar17;\n  int iVar18;\n  uchar *puVar19;\n  byte bVar20;\n  size_t sVar21;\n  uint uVar22;\n  uint uVar23;\n  uint quantum;\n  double *pdVar24;\n  uint uVar25;\n  ushort uVar26;\n  int iVar27;\n  PixelChannelMap *pPVar28;\n  int in_GS_OFFSET;\n  float fVar29;\n  float fVar30;\n  uint *local_80;\n  Quantum *local_78;\n  byte local_6c;\n  byte bStack_6b;\n  ushort uStack_6a;\n  int iStack_68;\n  float local_64;\n  float local_60;\n  double *local_5c;\n  double local_3c;\n  float pixel;\n  undefined4 uStack_28;\n  int local_20;\n  \n  fVar14 = DAT_002c5824;\n  fVar13 = DAT_002a7ff0;\n  fVar30 = DAT_002a7fec;\n  fVar29 = DAT_0029f710;\n  dVar12 = DAT_0029f138;\n  local_80 = (uint *)p;\n  local_78 = q;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (image == (Image *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image != (Image *) NULL","MagickCore/quantum-import.c",0x1123,"ImportRGBOQuantum"\n                 );\n  }\n  if (image->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image->signature == MagickCoreSignature","MagickCore/quantum-import.c",0x1124,\n                  "ImportRGBOQuantum");\n  }\n  uVar23 = quantum_info->depth;\n  switch(uVar23) {\n  case 8:\n    if (0 < (int)number_pixels) {\n      pPVar28 = image->channel_map;\n      sVar6 = image->number_channels;\n      iVar18 = pPVar28->offset;\n      iVar27 = 0;\n      iVar5 = pPVar28[1].offset;\n      iVar7 = pPVar28[2].offset;\n      PVar8 = pPVar28[4].traits;\n      sVar21 = quantum_info->pad;\n      do {\n        bVar9 = p[1];\n        bVar20 = p[2];\n        q[iVar18] = (double)((float)*p * fVar13);\n        q[iVar5] = (double)((float)bVar9 * fVar13);\n        q[iVar7] = (double)((float)bVar20 * fVar13);\n        if (PVar8 != UndefinedPixelTrait) {\n          q[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)p[3] * fVar13);\n        }\n        p = p + sVar21 + 4;\n        iVar27 = iVar27 + 1;\n        q = q + sVar6;\n      } while (iVar27 != (int)number_pixels);\n    }\n    break;\n  default:\n    local_6c = 0;\n    bStack_6b = 0;\n    uStack_6a = 0;\n    iStack_68 = 0;\n    if (uVar23 != 0) goto LAB_00161285;\n    goto LAB_001612bc;\n  case 10:\n    if (quantum_info->pack == MagickFalse) {\n      if (0 < (int)number_pixels) {\n        uVar23 = 0;\n        local_6c = 0;\n        bStack_6b = 0;\n        uStack_6a = 0;\n        pPVar28 = image->channel_map;\n        sVar6 = quantum_info->pad;\n        sVar21 = image->number_channels;\n        uVar25 = 0;\n        do {\n          iVar18 = 0;\n          uVar22 = uVar25;\nLAB_001620a2:\n          if (uVar22 % 3 == 1) {\n            uVar25 = uVar23 >> 6 & 0xffc0;\nLAB_001620cb:\n            dVar12 = (double)uVar25;\n            if (iVar18 != 2) goto LAB_001620d7;\nLAB_00162130:\n            local_78[pPVar28[2].offset] = dVar12;\nLAB_001620f8:\n            uVar22 = uVar22 + 1;\n            iVar18 = iVar18 + 1;\n            goto LAB_001620a2;\n          }\n          if (uVar22 % 3 == 2) {\n            uVar25 = (uVar23 & 0xffc) << 4;\n            goto LAB_001620cb;\n          }\n          puVar1 = local_80 + 1;\n          uVar23 = *local_80;\n          if (quantum_info->endian != LSBEndian) {\n            uVar23 = uVar23 >> 0x18 | (uVar23 & 0xff0000) >> 8 | (uVar23 & 0xff00) << 8 |\n                     uVar23 << 0x18;\n          }\n          dVar12 = (double)((uVar23 >> 0x16) << 6);\n          local_80 = puVar1;\n          if (iVar18 == 2) goto LAB_00162130;\nLAB_001620d7:\n          uVar25 = uVar22 + 1;\n          if (iVar18 != 3) {\n            if (iVar18 == 1) {\n              local_78[pPVar28[1].offset] = dVar12;\n            }\n            else {\n              local_78[pPVar28->offset] = dVar12;\n              if (iVar18 == 3) goto LAB_0016217a;\n            }\n            goto LAB_001620f8;\n          }\n          if (pPVar28[4].traits != UndefinedPixelTrait) {\n            local_78[pPVar28[4].offset] = (double)DAT_0029f710 - dVar12;\n          }\nLAB_0016217a:\n          iVar18 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar18;\n          bStack_6b = (byte)((uint)iVar18 >> 8);\n          uStack_6a = (ushort)((uint)iVar18 >> 0x10);\n          local_80 = (uint *)((int)local_80 + sVar6);\n          local_78 = local_78 + sVar21;\n        } while (iVar18 != (int)number_pixels);\n      }\n    }\n    else if (0 < (int)number_pixels) {\n      pPVar28 = image->channel_map;\n      iVar18 = 0;\n      iVar5 = pPVar28->offset;\n      sVar6 = image->number_channels;\n      PVar8 = pPVar28[4].traits;\n      iVar7 = pPVar28[2].offset;\n      iVar27 = pPVar28[1].offset;\n      do {\n        uVar22 = 0;\n        uVar25 = 10;\n        uVar23 = (quantum_info->state).bits;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar23;\n          if (uVar25 <= uVar23) {\n            uVar16 = uVar25;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar25 = uVar25 - uVar16;\n          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar25);\n        (quantum_info->state).bits = uVar23;\n        local_78[iVar5] = (double)((uVar22 & 0x3ff) << 6);\n        uVar22 = 0;\n        uVar25 = 10;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar25;\n          if (uVar23 <= uVar25) {\n            uVar16 = uVar23;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar25 = uVar25 - uVar16;\n          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar25);\n        (quantum_info->state).bits = uVar23;\n        local_78[iVar27] = (double)((uVar22 & 0x3ff) << 6);\n        uVar22 = 0;\n        uVar25 = 10;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar25;\n          if (uVar23 <= uVar25) {\n            uVar16 = uVar23;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar25 = uVar25 - uVar16;\n          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar25);\n        uVar25 = 0;\n        (quantum_info->state).bits = uVar23;\n        local_78[iVar7] = (double)((uVar22 & 0x3ff) << 6);\n        uVar22 = 10;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar23;\n          if (uVar22 <= uVar23) {\n            uVar16 = uVar22;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar22 = uVar22 - uVar16;\n          uVar25 = uVar25 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar22);\n        (quantum_info->state).bits = uVar23;\n        if (PVar8 != UndefinedPixelTrait) {\n          local_78[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)((uVar25 & 0x3ff) << 6));\n        }\n        iVar18 = iVar18 + 1;\n        local_78 = local_78 + sVar6;\n      } while (iVar18 != (int)number_pixels);\n    }\n    break;\n  case 0x10:\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if (0 < (int)number_pixels) {\n        iVar18 = 0;\n        EVar4 = quantum_info->endian;\n        do {\n          uVar15 = *(ushort *)p;\n          if (EVar4 == LSBEndian) {\n            fVar30 = HalfToSinglePrecision(uVar15);\n            fVar29 = DAT_0029f710;\n            pPVar28 = image->channel_map;\n            q[pPVar28->offset] = (double)(DAT_0029f710 * fVar30);\n            fVar30 = HalfToSinglePrecision(*(ushort *)((int)p + 2));\n            q[pPVar28[1].offset] = (double)(fVar30 * fVar29);\n            fVar30 = HalfToSinglePrecision(*(ushort *)((int)p + 4));\n            q[pPVar28[2].offset] = (double)(fVar30 * fVar29);\n            uVar15 = *(ushort *)((int)p + 6);\n          }\n          else {\n            fVar30 = HalfToSinglePrecision(uVar15 << 8 | uVar15 >> 8);\n            fVar29 = DAT_0029f710;\n            pPVar28 = image->channel_map;\n            q[pPVar28->offset] = (double)(DAT_0029f710 * fVar30);\n            fVar30 = HalfToSinglePrecision\n                               (*(ushort *)((int)p + 2) << 8 | *(ushort *)((int)p + 2) >> 8);\n            q[pPVar28[1].offset] = (double)(fVar30 * fVar29);\n            fVar30 = HalfToSinglePrecision\n                               (*(ushort *)((int)p + 4) << 8 | *(ushort *)((int)p + 4) >> 8);\n            q[pPVar28[2].offset] = (double)(fVar30 * fVar29);\n            uVar15 = *(ushort *)((int)p + 6) << 8 | *(ushort *)((int)p + 6) >> 8;\n          }\n          fVar29 = HalfToSinglePrecision(uVar15);\n          if (pPVar28[4].traits != UndefinedPixelTrait) {\n            q[pPVar28[4].offset] = (double)(DAT_0029f710 - fVar29 * DAT_0029f710);\n          }\n          iVar18 = iVar18 + 1;\n          p = (uchar *)((int)p + quantum_info->pad + 8);\n          q = q + image->number_channels;\n        } while (iVar18 != (int)number_pixels);\n      }\n    }\n    else if (0 < (int)number_pixels) {\n      pPVar28 = image->channel_map;\n      EVar4 = quantum_info->endian;\n      sVar6 = quantum_info->pad;\n      sVar21 = image->number_channels;\n      iVar18 = pPVar28[1].offset;\n      iVar5 = pPVar28[2].offset;\n      iVar7 = pPVar28->offset;\n      PVar8 = pPVar28[4].traits;\n      iVar27 = 0;\n      do {\n        uVar15 = *(ushort *)((int)p + 4);\n        uVar26 = *(ushort *)((int)p + 6);\n        uVar2 = *(ushort *)p;\n        uVar3 = *(ushort *)((int)p + 2);\n        if (EVar4 == LSBEndian) {\n          q[iVar7] = (double)uVar2;\n          q[iVar18] = (double)uVar3;\n          q[iVar5] = (double)uVar15;\n        }\n        else {\n          uVar26 = uVar26 << 8 | uVar26 >> 8;\n          q[iVar7] = (double)(ushort)(uVar2 << 8 | uVar2 >> 8);\n          q[iVar18] = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n          q[iVar5] = (double)(ushort)(uVar15 << 8 | uVar15 >> 8);\n        }\n        if (PVar8 != UndefinedPixelTrait) {\n          q[pPVar28[4].offset] = (double)(fVar29 - (float)uVar26);\n        }\n        p = (uchar *)((int)p + sVar6 + 8);\n        iVar27 = iVar27 + 1;\n        q = q + sVar21;\n      } while (iVar27 != (int)number_pixels);\n    }\n    break;\n  case 0x18:\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if (0 < (int)number_pixels) {\n        iVar18 = 0;\n        do {\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,p,&pixel);\n          q[image->channel_map->offset] = (double)pixel;\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel);\n          q[image->channel_map[1].offset] = (double)pixel;\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel);\n          q[image->channel_map[2].offset] = (double)pixel;\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel);\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            q[image->channel_map[4].offset] = (double)(DAT_0029f710 - pixel);\n          }\n          p = puVar19 + quantum_info->pad;\n          iVar18 = iVar18 + 1;\n          q = q + image->number_channels;\n        } while (iVar18 != (int)number_pixels);\n      }\n      break;\n    }\n    goto LAB_001616dd;\n  case 0x20:\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if (0 < (int)number_pixels) {\n        pPVar28 = image->channel_map;\n        local_5c = (double *)0x0;\n        sVar6 = quantum_info->pad;\n        EVar4 = quantum_info->endian;\n        sVar21 = image->number_channels;\n        do {\n          local_64 = *(float *)p;\n          if (EVar4 != LSBEndian) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)p + 1),*(byte *)((int)p + 2))\n                                       ,*(byte *)((int)p + 3));\n          }\n          fVar30 = (local_64 - (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar29 = fVar14;\n          if ((fVar14 <= fVar30) && (fVar29 = DAT_002c5828, fVar30 <= DAT_002c5828)) {\n            fVar29 = fVar30;\n          }\n          q[pPVar28->offset] = (double)fVar29;\n          if (EVar4 == LSBEndian) {\n            fVar29 = *(float *)((int)p + 4);\n          }\n          else {\n            fVar29 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)((int)p + 4) << 0x18) >> 0x10\n                                                      ) | (ushort)*(byte *)((int)p + 5),\n                                              *(byte *)((int)p + 6)),*(byte *)((int)p + 7));\n          }\n          fVar29 = (fVar29 - (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar30 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)) {\n            fVar30 = fVar29;\n          }\n          q[pPVar28[1].offset] = (double)fVar30;\n          if (EVar4 == LSBEndian) {\n            local_60 = *(float *)((int)p + 8);\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)((int)p + 8) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)p + 9),\n                                                *(byte *)((int)p + 10)),*(byte *)((int)p + 0xb));\n          }\n          fVar29 = (local_60 - (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar30 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)) {\n            fVar30 = fVar29;\n          }\n          q[pPVar28[2].offset] = (double)fVar30;\n          if (EVar4 == LSBEndian) {\n            fVar29 = *(float *)((int)p + 0xc);\n            local_6c = SUB41(fVar29,0);\n            bStack_6b = (byte)((uint)fVar29 >> 8);\n            uStack_6a = (ushort)((uint)fVar29 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)((int)p + 0xc) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)p + 0xd);\n            bStack_6b = *(byte *)((int)p + 0xe);\n            local_6c = *(byte *)((int)p + 0xf);\n          }\n          fVar29 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar30 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)) {\n            fVar30 = fVar29;\n          }\n          if (pPVar28[4].traits != UndefinedPixelTrait) {\n            q[pPVar28[4].offset] = (double)(DAT_0029f710 - fVar30);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          p = (uchar *)((int)p + sVar6 + 0x10);\n          q = q + sVar21;\n        } while (local_5c != (double *)(int)number_pixels);\n      }\n      break;\n    }\nLAB_001616dd:\n    if (0 < (int)number_pixels) {\n      pPVar28 = image->channel_map;\n      EVar4 = quantum_info->endian;\n      sVar6 = quantum_info->pad;\n      sVar21 = image->number_channels;\n      iVar18 = pPVar28->offset;\n      iVar5 = pPVar28[1].offset;\n      iVar7 = pPVar28[2].offset;\n      PVar8 = pPVar28[4].traits;\n      iVar27 = 0;\n      do {\n        fVar29 = DAT_002a7fec;\n        uVar23 = *(uint *)((int)p + 0xc);\n        uVar25 = *(uint *)((int)p + 4);\n        uVar22 = *(uint *)((int)p + 8);\n        uVar17 = *(uint *)p;\n        if (EVar4 == LSBEndian) {\n          q[iVar18] = (double)((float)uVar17 / DAT_002a7fec);\n          q[iVar5] = (double)((float)uVar25 / fVar29);\n          q[iVar7] = (double)((float)uVar22 / fVar29);\n        }\n        else {\n          uVar15 = (ushort)(uVar17 >> 8);\n          uStack_6a = uVar15 & 0xff | (ushort)((uVar17 << 0x18) >> 0x10);\n          uVar23 = uVar23 >> 0x18 | (uVar23 & 0xff0000) >> 8 | (uVar23 & 0xff00) << 8 |\n                   uVar23 << 0x18;\n          q[iVar18] = (double)((float)CONCAT22(uStack_6a,\n                                               (ushort)(byte)(uVar17 >> 0x18) | uVar15 & 0xff00) /\n                              fVar30);\n          q[iVar5] = (double)((float)(uVar25 >> 0x18 | (uVar25 & 0xff0000) >> 8 |\n                                      (uVar25 & 0xff00) << 8 | uVar25 << 0x18) / fVar30);\n          q[iVar7] = (double)((float)(uVar22 >> 0x18 | (uVar22 & 0xff0000) >> 8 |\n                                      (uVar22 & 0xff00) << 8 | uVar22 << 0x18) / fVar30);\n        }\n        if (PVar8 != UndefinedPixelTrait) {\n          q[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)uVar23 / DAT_002a7fec);\n        }\n        p = (uchar *)((int)p + sVar6 + 0x10);\n        iVar27 = iVar27 + 1;\n        q = q + sVar21;\n      } while (iVar27 != (int)number_pixels);\n    }\n    break;\n  case 0x40:\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if (0 < (int)number_pixels) {\n        iVar18 = 0;\n        do {\n          puVar19 = PushDoublePixel(quantum_info,p,(double *)&pixel);\n          q[image->channel_map->offset] = (Quantum)CONCAT44(uStack_28,pixel);\n          puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel);\n          q[image->channel_map[1].offset] = (Quantum)CONCAT44(uStack_28,pixel);\n          puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel);\n          q[image->channel_map[2].offset] = (Quantum)CONCAT44(uStack_28,pixel);\n          puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel);\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            q[image->channel_map[4].offset] =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,pixel));\n          }\n          p = puVar19 + quantum_info->pad;\n          iVar18 = iVar18 + 1;\n          q = q + image->number_channels;\n        } while (iVar18 != (int)number_pixels);\n      }\n      break;\n    }\nLAB_00161285:\n    uVar25 = 0;\n    if (uVar23 < 0x41) {\n      uVar25 = uVar23;\n    }\n    bVar20 = (byte)(uVar25 - 1);\n    bVar9 = bVar20 & 0x1f;\n    uVar16 = 2 << (bVar20 & 0x1f);\n    uVar17 = uVar16;\n    uVar22 = 0 << bVar9 | 2U >> 0x20 - bVar9;\n    if ((uVar25 - 1 & 0x20) != 0) {\n      uVar17 = 0;\n      uVar22 = uVar16;\n    }\n    iVar18 = uVar17 - 1;\n    iStack_68 = (uVar22 - 1) + (uint)(uVar17 != 0);\n    local_6c = (byte)iVar18;\n    bStack_6b = (byte)((uint)iVar18 >> 8);\n    uStack_6a = (ushort)((uint)iVar18 >> 0x10);\nLAB_001612bc:\n    if (0 < (int)number_pixels) {\n      pPVar28 = image->channel_map;\n      local_64 = 0.0;\n      iVar18 = pPVar28->offset;\n      iVar5 = pPVar28[1].offset;\n      sVar6 = image->number_channels;\n      do {\n        pdVar24 = local_78 + iVar18;\n        if ((int)uVar23 < 1) {\n          fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (iStack_68 < 0) {\n            fVar29 = fVar29 + DAT_0029f714;\n          }\n          local_3c = (double)fVar29;\n          if (local_3c < dVar12) {\n            *pdVar24 = 0.0;\n          }\n          else {\n            dVar11 = 0.0;\nLAB_00161f72:\n            *pdVar24 = ((double)DAT_0029f718 / local_3c) * dVar11 * (double)DAT_0029f710;\n            if (0 < (int)uVar23) goto LAB_00161938;\n          }\n          dVar11 = 0.0;\n          local_5c = local_78 + pPVar28[2].offset;\nLAB_00161a0c:\n          dVar10 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar10 = (double)DAT_0029f718 / local_3c;\n          }\n          local_78[iVar5] = dVar10 * dVar11 * (double)DAT_0029f710;\n          if (0 < (int)uVar23) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar11 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar11 = 0.0;\nLAB_00161c0a:\n          dVar10 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar10 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar11 = dVar10 * dVar11 * (double)DAT_0029f710;\n        }\n        else {\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              (quantum_info->state).pixel = uVar17;\n              sVar21 = 8;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = sVar21;\n            if (uVar25 <= sVar21) {\n              uVar16 = uVar25;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          if ((iStack_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar22)) {\n            *pdVar24 = (double)DAT_0029f710;\n          }\n          else {\n            dVar11 = (double)uVar22;\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar24 = dVar11 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              sVar21 = 8;\n              (quantum_info->state).pixel = uVar17;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = sVar21;\n            if (uVar25 <= sVar21) {\n              uVar16 = uVar25;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          local_5c = local_78 + pPVar28[2].offset;\n          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            goto LAB_00161a0c;\n          }\n          local_78[iVar5] = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              (quantum_info->state).pixel = uVar17;\n              sVar21 = 8;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = uVar25;\n            if (sVar21 <= uVar25) {\n              uVar16 = sVar21;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar11 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar23 < 1) {\n                dVar11 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar11 * (double)DAT_0029f710;\n            if (0 < (int)uVar23) goto LAB_00161b52;\n            dVar11 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              sVar21 = 8;\n              (quantum_info->state).pixel = uVar17;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = uVar25;\n            if (sVar21 <= uVar25) {\n              uVar16 = sVar21;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            goto LAB_00161c0a;\n          }\n          dVar11 = (double)DAT_0029f710;\n        }\n        if (pPVar28[4].traits != UndefinedPixelTrait) {\n          local_78[pPVar28[4].offset] = (double)DAT_0029f710 - dVar11;\n        }\n        local_64 = (float)((int)local_64 + 1);\n        local_78 = local_78 + sVar6;\n      } while (local_64 != (float)(int)number_pixels);\n    }\n  }\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return;\n}\n\n" comment comment comment comment comment (function_definition "void __regparm2\nImportRGBOQuantum(Image *image,QuantumInfo *quantum_info,MagickSizeType number_pixels,uchar *p,\n                 Quantum *q)\n\n{\n  uint *puVar1;\n  ushort uVar2;\n  ushort uVar3;\n  EndianType EVar4;\n  int iVar5;\n  size_t sVar6;\n  int iVar7;\n  PixelTrait PVar8;\n  byte bVar9;\n  double dVar10;\n  double dVar11;\n  double dVar12;\n  float fVar13;\n  float fVar14;\n  ushort uVar15;\n  uint uVar16;\n  uint uVar17;\n  int iVar18;\n  uchar *puVar19;\n  byte bVar20;\n  size_t sVar21;\n  uint uVar22;\n  uint uVar23;\n  uint quantum;\n  double *pdVar24;\n  uint uVar25;\n  ushort uVar26;\n  int iVar27;\n  PixelChannelMap *pPVar28;\n  int in_GS_OFFSET;\n  float fVar29;\n  float fVar30;\n  uint *local_80;\n  Quantum *local_78;\n  byte local_6c;\n  byte bStack_6b;\n  ushort uStack_6a;\n  int iStack_68;\n  float local_64;\n  float local_60;\n  double *local_5c;\n  double local_3c;\n  float pixel;\n  undefined4 uStack_28;\n  int local_20;\n  \n  fVar14 = DAT_002c5824;\n  fVar13 = DAT_002a7ff0;\n  fVar30 = DAT_002a7fec;\n  fVar29 = DAT_0029f710;\n  dVar12 = DAT_0029f138;\n  local_80 = (uint *)p;\n  local_78 = q;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (image == (Image *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image != (Image *) NULL","MagickCore/quantum-import.c",0x1123,"ImportRGBOQuantum"\n                 );\n  }\n  if (image->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image->signature == MagickCoreSignature","MagickCore/quantum-import.c",0x1124,\n                  "ImportRGBOQuantum");\n  }\n  uVar23 = quantum_info->depth;\n  switch(uVar23) {\n  case 8:\n    if (0 < (int)number_pixels) {\n      pPVar28 = image->channel_map;\n      sVar6 = image->number_channels;\n      iVar18 = pPVar28->offset;\n      iVar27 = 0;\n      iVar5 = pPVar28[1].offset;\n      iVar7 = pPVar28[2].offset;\n      PVar8 = pPVar28[4].traits;\n      sVar21 = quantum_info->pad;\n      do {\n        bVar9 = p[1];\n        bVar20 = p[2];\n        q[iVar18] = (double)((float)*p * fVar13);\n        q[iVar5] = (double)((float)bVar9 * fVar13);\n        q[iVar7] = (double)((float)bVar20 * fVar13);\n        if (PVar8 != UndefinedPixelTrait) {\n          q[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)p[3] * fVar13);\n        }\n        p = p + sVar21 + 4;\n        iVar27 = iVar27 + 1;\n        q = q + sVar6;\n      } while (iVar27 != (int)number_pixels);\n    }\n    break;\n  default:\n    local_6c = 0;\n    bStack_6b = 0;\n    uStack_6a = 0;\n    iStack_68 = 0;\n    if (uVar23 != 0) goto LAB_00161285;\n    goto LAB_001612bc;\n  case 10:\n    if (quantum_info->pack == MagickFalse) {\n      if (0 < (int)number_pixels) {\n        uVar23 = 0;\n        local_6c = 0;\n        bStack_6b = 0;\n        uStack_6a = 0;\n        pPVar28 = image->channel_map;\n        sVar6 = quantum_info->pad;\n        sVar21 = image->number_channels;\n        uVar25 = 0;\n        do {\n          iVar18 = 0;\n          uVar22 = uVar25;\nLAB_001620a2:\n          if (uVar22 % 3 == 1) {\n            uVar25 = uVar23 >> 6 & 0xffc0;\nLAB_001620cb:\n            dVar12 = (double)uVar25;\n            if (iVar18 != 2) goto LAB_001620d7;\nLAB_00162130:\n            local_78[pPVar28[2].offset] = dVar12;\nLAB_001620f8:\n            uVar22 = uVar22 + 1;\n            iVar18 = iVar18 + 1;\n            goto LAB_001620a2;\n          }\n          if (uVar22 % 3 == 2) {\n            uVar25 = (uVar23 & 0xffc) << 4;\n            goto LAB_001620cb;\n          }\n          puVar1 = local_80 + 1;\n          uVar23 = *local_80;\n          if (quantum_info->endian != LSBEndian) {\n            uVar23 = uVar23 >> 0x18 | (uVar23 & 0xff0000) >> 8 | (uVar23 & 0xff00) << 8 |\n                     uVar23 << 0x18;\n          }\n          dVar12 = (double)((uVar23 >> 0x16) << 6);\n          local_80 = puVar1;\n          if (iVar18 == 2) goto LAB_00162130;\nLAB_001620d7:\n          uVar25 = uVar22 + 1;\n          if (iVar18 != 3) {\n            if (iVar18 == 1) {\n              local_78[pPVar28[1].offset] = dVar12;\n            }\n            else {\n              local_78[pPVar28->offset] = dVar12;\n              if (iVar18 == 3) goto LAB_0016217a;\n            }\n            goto LAB_001620f8;\n          }\n          if (pPVar28[4].traits != UndefinedPixelTrait) {\n            local_78[pPVar28[4].offset] = (double)DAT_0029f710 - dVar12;\n          }\nLAB_0016217a:\n          iVar18 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar18;\n          bStack_6b = (byte)((uint)iVar18 >> 8);\n          uStack_6a = (ushort)((uint)iVar18 >> 0x10);\n          local_80 = (uint *)((int)local_80 + sVar6);\n          local_78 = local_78 + sVar21;\n        } while (iVar18 != (int)number_pixels);\n      }\n    }\n    else if (0 < (int)number_pixels) {\n      pPVar28 = image->channel_map;\n      iVar18 = 0;\n      iVar5 = pPVar28->offset;\n      sVar6 = image->number_channels;\n      PVar8 = pPVar28[4].traits;\n      iVar7 = pPVar28[2].offset;\n      iVar27 = pPVar28[1].offset;\n      do {\n        uVar22 = 0;\n        uVar25 = 10;\n        uVar23 = (quantum_info->state).bits;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar23;\n          if (uVar25 <= uVar23) {\n            uVar16 = uVar25;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar25 = uVar25 - uVar16;\n          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar25);\n        (quantum_info->state).bits = uVar23;\n        local_78[iVar5] = (double)((uVar22 & 0x3ff) << 6);\n        uVar22 = 0;\n        uVar25 = 10;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar25;\n          if (uVar23 <= uVar25) {\n            uVar16 = uVar23;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar25 = uVar25 - uVar16;\n          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar25);\n        (quantum_info->state).bits = uVar23;\n        local_78[iVar27] = (double)((uVar22 & 0x3ff) << 6);\n        uVar22 = 0;\n        uVar25 = 10;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar25;\n          if (uVar23 <= uVar25) {\n            uVar16 = uVar23;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar25 = uVar25 - uVar16;\n          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar25);\n        uVar25 = 0;\n        (quantum_info->state).bits = uVar23;\n        local_78[iVar7] = (double)((uVar22 & 0x3ff) << 6);\n        uVar22 = 10;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar23;\n          if (uVar22 <= uVar23) {\n            uVar16 = uVar22;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar22 = uVar22 - uVar16;\n          uVar25 = uVar25 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar22);\n        (quantum_info->state).bits = uVar23;\n        if (PVar8 != UndefinedPixelTrait) {\n          local_78[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)((uVar25 & 0x3ff) << 6));\n        }\n        iVar18 = iVar18 + 1;\n        local_78 = local_78 + sVar6;\n      } while (iVar18 != (int)number_pixels);\n    }\n    break;\n  case 0x10:\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if (0 < (int)number_pixels) {\n        iVar18 = 0;\n        EVar4 = quantum_info->endian;\n        do {\n          uVar15 = *(ushort *)p;\n          if (EVar4 == LSBEndian) {\n            fVar30 = HalfToSinglePrecision(uVar15);\n            fVar29 = DAT_0029f710;\n            pPVar28 = image->channel_map;\n            q[pPVar28->offset] = (double)(DAT_0029f710 * fVar30);\n            fVar30 = HalfToSinglePrecision(*(ushort *)((int)p + 2));\n            q[pPVar28[1].offset] = (double)(fVar30 * fVar29);\n            fVar30 = HalfToSinglePrecision(*(ushort *)((int)p + 4));\n            q[pPVar28[2].offset] = (double)(fVar30 * fVar29);\n            uVar15 = *(ushort *)((int)p + 6);\n          }\n          else {\n            fVar30 = HalfToSinglePrecision(uVar15 << 8 | uVar15 >> 8);\n            fVar29 = DAT_0029f710;\n            pPVar28 = image->channel_map;\n            q[pPVar28->offset] = (double)(DAT_0029f710 * fVar30);\n            fVar30 = HalfToSinglePrecision\n                               (*(ushort *)((int)p + 2) << 8 | *(ushort *)((int)p + 2) >> 8);\n            q[pPVar28[1].offset] = (double)(fVar30 * fVar29);\n            fVar30 = HalfToSinglePrecision\n                               (*(ushort *)((int)p + 4) << 8 | *(ushort *)((int)p + 4) >> 8);\n            q[pPVar28[2].offset] = (double)(fVar30 * fVar29);\n            uVar15 = *(ushort *)((int)p + 6) << 8 | *(ushort *)((int)p + 6) >> 8;\n          }\n          fVar29 = HalfToSinglePrecision(uVar15);\n          if (pPVar28[4].traits != UndefinedPixelTrait) {\n            q[pPVar28[4].offset] = (double)(DAT_0029f710 - fVar29 * DAT_0029f710);\n          }\n          iVar18 = iVar18 + 1;\n          p = (uchar *)((int)p + quantum_info->pad + 8);\n          q = q + image->number_channels;\n        } while (iVar18 != (int)number_pixels);\n      }\n    }\n    else if (0 < (int)number_pixels) {\n      pPVar28 = image->channel_map;\n      EVar4 = quantum_info->endian;\n      sVar6 = quantum_info->pad;\n      sVar21 = image->number_channels;\n      iVar18 = pPVar28[1].offset;\n      iVar5 = pPVar28[2].offset;\n      iVar7 = pPVar28->offset;\n      PVar8 = pPVar28[4].traits;\n      iVar27 = 0;\n      do {\n        uVar15 = *(ushort *)((int)p + 4);\n        uVar26 = *(ushort *)((int)p + 6);\n        uVar2 = *(ushort *)p;\n        uVar3 = *(ushort *)((int)p + 2);\n        if (EVar4 == LSBEndian) {\n          q[iVar7] = (double)uVar2;\n          q[iVar18] = (double)uVar3;\n          q[iVar5] = (double)uVar15;\n        }\n        else {\n          uVar26 = uVar26 << 8 | uVar26 >> 8;\n          q[iVar7] = (double)(ushort)(uVar2 << 8 | uVar2 >> 8);\n          q[iVar18] = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n          q[iVar5] = (double)(ushort)(uVar15 << 8 | uVar15 >> 8);\n        }\n        if (PVar8 != UndefinedPixelTrait) {\n          q[pPVar28[4].offset] = (double)(fVar29 - (float)uVar26);\n        }\n        p = (uchar *)((int)p + sVar6 + 8);\n        iVar27 = iVar27 + 1;\n        q = q + sVar21;\n      } while (iVar27 != (int)number_pixels);\n    }\n    break;\n  case 0x18:\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if (0 < (int)number_pixels) {\n        iVar18 = 0;\n        do {\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,p,&pixel);\n          q[image->channel_map->offset] = (double)pixel;\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel);\n          q[image->channel_map[1].offset] = (double)pixel;\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel);\n          q[image->channel_map[2].offset] = (double)pixel;\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel);\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            q[image->channel_map[4].offset] = (double)(DAT_0029f710 - pixel);\n          }\n          p = puVar19 + quantum_info->pad;\n          iVar18 = iVar18 + 1;\n          q = q + image->number_channels;\n        } while (iVar18 != (int)number_pixels);\n      }\n      break;\n    }\n    goto LAB_001616dd;\n  case 0x20:\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if (0 < (int)number_pixels) {\n        pPVar28 = image->channel_map;\n        local_5c = (double *)0x0;\n        sVar6 = quantum_info->pad;\n        EVar4 = quantum_info->endian;\n        sVar21 = image->number_channels;\n        do {\n          local_64 = *(float *)p;\n          if (EVar4 != LSBEndian) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)p + 1),*(byte *)((int)p + 2))\n                                       ,*(byte *)((int)p + 3));\n          }\n          fVar30 = (local_64 - (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar29 = fVar14;\n          if ((fVar14 <= fVar30) && (fVar29 = DAT_002c5828, fVar30 <= DAT_002c5828)) {\n            fVar29 = fVar30;\n          }\n          q[pPVar28->offset] = (double)fVar29;\n          if (EVar4 == LSBEndian) {\n            fVar29 = *(float *)((int)p + 4);\n          }\n          else {\n            fVar29 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)((int)p + 4) << 0x18) >> 0x10\n                                                      ) | (ushort)*(byte *)((int)p + 5),\n                                              *(byte *)((int)p + 6)),*(byte *)((int)p + 7));\n          }\n          fVar29 = (fVar29 - (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar30 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)) {\n            fVar30 = fVar29;\n          }\n          q[pPVar28[1].offset] = (double)fVar30;\n          if (EVar4 == LSBEndian) {\n            local_60 = *(float *)((int)p + 8);\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)((int)p + 8) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)p + 9),\n                                                *(byte *)((int)p + 10)),*(byte *)((int)p + 0xb));\n          }\n          fVar29 = (local_60 - (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar30 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)) {\n            fVar30 = fVar29;\n          }\n          q[pPVar28[2].offset] = (double)fVar30;\n          if (EVar4 == LSBEndian) {\n            fVar29 = *(float *)((int)p + 0xc);\n            local_6c = SUB41(fVar29,0);\n            bStack_6b = (byte)((uint)fVar29 >> 8);\n            uStack_6a = (ushort)((uint)fVar29 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)((int)p + 0xc) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)p + 0xd);\n            bStack_6b = *(byte *)((int)p + 0xe);\n            local_6c = *(byte *)((int)p + 0xf);\n          }\n          fVar29 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar30 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)) {\n            fVar30 = fVar29;\n          }\n          if (pPVar28[4].traits != UndefinedPixelTrait) {\n            q[pPVar28[4].offset] = (double)(DAT_0029f710 - fVar30);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          p = (uchar *)((int)p + sVar6 + 0x10);\n          q = q + sVar21;\n        } while (local_5c != (double *)(int)number_pixels);\n      }\n      break;\n    }\nLAB_001616dd:\n    if (0 < (int)number_pixels) {\n      pPVar28 = image->channel_map;\n      EVar4 = quantum_info->endian;\n      sVar6 = quantum_info->pad;\n      sVar21 = image->number_channels;\n      iVar18 = pPVar28->offset;\n      iVar5 = pPVar28[1].offset;\n      iVar7 = pPVar28[2].offset;\n      PVar8 = pPVar28[4].traits;\n      iVar27 = 0;\n      do {\n        fVar29 = DAT_002a7fec;\n        uVar23 = *(uint *)((int)p + 0xc);\n        uVar25 = *(uint *)((int)p + 4);\n        uVar22 = *(uint *)((int)p + 8);\n        uVar17 = *(uint *)p;\n        if (EVar4 == LSBEndian) {\n          q[iVar18] = (double)((float)uVar17 / DAT_002a7fec);\n          q[iVar5] = (double)((float)uVar25 / fVar29);\n          q[iVar7] = (double)((float)uVar22 / fVar29);\n        }\n        else {\n          uVar15 = (ushort)(uVar17 >> 8);\n          uStack_6a = uVar15 & 0xff | (ushort)((uVar17 << 0x18) >> 0x10);\n          uVar23 = uVar23 >> 0x18 | (uVar23 & 0xff0000) >> 8 | (uVar23 & 0xff00) << 8 |\n                   uVar23 << 0x18;\n          q[iVar18] = (double)((float)CONCAT22(uStack_6a,\n                                               (ushort)(byte)(uVar17 >> 0x18) | uVar15 & 0xff00) /\n                              fVar30);\n          q[iVar5] = (double)((float)(uVar25 >> 0x18 | (uVar25 & 0xff0000) >> 8 |\n                                      (uVar25 & 0xff00) << 8 | uVar25 << 0x18) / fVar30);\n          q[iVar7] = (double)((float)(uVar22 >> 0x18 | (uVar22 & 0xff0000) >> 8 |\n                                      (uVar22 & 0xff00) << 8 | uVar22 << 0x18) / fVar30);\n        }\n        if (PVar8 != UndefinedPixelTrait) {\n          q[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)uVar23 / DAT_002a7fec);\n        }\n        p = (uchar *)((int)p + sVar6 + 0x10);\n        iVar27 = iVar27 + 1;\n        q = q + sVar21;\n      } while (iVar27 != (int)number_pixels);\n    }\n    break;\n  case 0x40:\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if (0 < (int)number_pixels) {\n        iVar18 = 0;\n        do {\n          puVar19 = PushDoublePixel(quantum_info,p,(double *)&pixel);\n          q[image->channel_map->offset] = (Quantum)CONCAT44(uStack_28,pixel);\n          puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel);\n          q[image->channel_map[1].offset] = (Quantum)CONCAT44(uStack_28,pixel);\n          puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel);\n          q[image->channel_map[2].offset] = (Quantum)CONCAT44(uStack_28,pixel);\n          puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel);\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            q[image->channel_map[4].offset] =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,pixel));\n          }\n          p = puVar19 + quantum_info->pad;\n          iVar18 = iVar18 + 1;\n          q = q + image->number_channels;\n        } while (iVar18 != (int)number_pixels);\n      }\n      break;\n    }\nLAB_00161285:\n    uVar25 = 0;\n    if (uVar23 < 0x41) {\n      uVar25 = uVar23;\n    }\n    bVar20 = (byte)(uVar25 - 1);\n    bVar9 = bVar20 & 0x1f;\n    uVar16 = 2 << (bVar20 & 0x1f);\n    uVar17 = uVar16;\n    uVar22 = 0 << bVar9 | 2U >> 0x20 - bVar9;\n    if ((uVar25 - 1 & 0x20) != 0) {\n      uVar17 = 0;\n      uVar22 = uVar16;\n    }\n    iVar18 = uVar17 - 1;\n    iStack_68 = (uVar22 - 1) + (uint)(uVar17 != 0);\n    local_6c = (byte)iVar18;\n    bStack_6b = (byte)((uint)iVar18 >> 8);\n    uStack_6a = (ushort)((uint)iVar18 >> 0x10);\nLAB_001612bc:\n    if (0 < (int)number_pixels) {\n      pPVar28 = image->channel_map;\n      local_64 = 0.0;\n      iVar18 = pPVar28->offset;\n      iVar5 = pPVar28[1].offset;\n      sVar6 = image->number_channels;\n      do {\n        pdVar24 = local_78 + iVar18;\n        if ((int)uVar23 < 1) {\n          fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (iStack_68 < 0) {\n            fVar29 = fVar29 + DAT_0029f714;\n          }\n          local_3c = (double)fVar29;\n          if (local_3c < dVar12) {\n            *pdVar24 = 0.0;\n          }\n          else {\n            dVar11 = 0.0;\nLAB_00161f72:\n            *pdVar24 = ((double)DAT_0029f718 / local_3c) * dVar11 * (double)DAT_0029f710;\n            if (0 < (int)uVar23) goto LAB_00161938;\n          }\n          dVar11 = 0.0;\n          local_5c = local_78 + pPVar28[2].offset;\nLAB_00161a0c:\n          dVar10 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar10 = (double)DAT_0029f718 / local_3c;\n          }\n          local_78[iVar5] = dVar10 * dVar11 * (double)DAT_0029f710;\n          if (0 < (int)uVar23) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar11 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar11 = 0.0;\nLAB_00161c0a:\n          dVar10 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar10 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar11 = dVar10 * dVar11 * (double)DAT_0029f710;\n        }\n        else {\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              (quantum_info->state).pixel = uVar17;\n              sVar21 = 8;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = sVar21;\n            if (uVar25 <= sVar21) {\n              uVar16 = uVar25;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          if ((iStack_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar22)) {\n            *pdVar24 = (double)DAT_0029f710;\n          }\n          else {\n            dVar11 = (double)uVar22;\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar24 = dVar11 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              sVar21 = 8;\n              (quantum_info->state).pixel = uVar17;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = sVar21;\n            if (uVar25 <= sVar21) {\n              uVar16 = uVar25;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          local_5c = local_78 + pPVar28[2].offset;\n          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            goto LAB_00161a0c;\n          }\n          local_78[iVar5] = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              (quantum_info->state).pixel = uVar17;\n              sVar21 = 8;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = uVar25;\n            if (sVar21 <= uVar25) {\n              uVar16 = sVar21;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar11 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar23 < 1) {\n                dVar11 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar11 * (double)DAT_0029f710;\n            if (0 < (int)uVar23) goto LAB_00161b52;\n            dVar11 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              sVar21 = 8;\n              (quantum_info->state).pixel = uVar17;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = uVar25;\n            if (sVar21 <= uVar25) {\n              uVar16 = sVar21;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            goto LAB_00161c0a;\n          }\n          dVar11 = (double)DAT_0029f710;\n        }\n        if (pPVar28[4].traits != UndefinedPixelTrait) {\n          local_78[pPVar28[4].offset] = (double)DAT_0029f710 - dVar11;\n        }\n        local_64 = (float)((int)local_64 + 1);\n        local_78 = local_78 + sVar6;\n      } while (local_64 != (float)(int)number_pixels);\n    }\n  }\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return;\n}" primitive_type (ERROR "__regparm2" identifier) (function_declarator "ImportRGBOQuantum(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  uint *puVar1;\n  ushort uVar2;\n  ushort uVar3;\n  EndianType EVar4;\n  int iVar5;\n  size_t sVar6;\n  int iVar7;\n  PixelTrait PVar8;\n  byte bVar9;\n  double dVar10;\n  double dVar11;\n  double dVar12;\n  float fVar13;\n  float fVar14;\n  ushort uVar15;\n  uint uVar16;\n  uint uVar17;\n  int iVar18;\n  uchar *puVar19;\n  byte bVar20;\n  size_t sVar21;\n  uint uVar22;\n  uint uVar23;\n  uint quantum;\n  double *pdVar24;\n  uint uVar25;\n  ushort uVar26;\n  int iVar27;\n  PixelChannelMap *pPVar28;\n  int in_GS_OFFSET;\n  float fVar29;\n  float fVar30;\n  uint *local_80;\n  Quantum *local_78;\n  byte local_6c;\n  byte bStack_6b;\n  ushort uStack_6a;\n  int iStack_68;\n  float local_64;\n  float local_60;\n  double *local_5c;\n  double local_3c;\n  float pixel;\n  undefined4 uStack_28;\n  int local_20;\n  \n  fVar14 = DAT_002c5824;\n  fVar13 = DAT_002a7ff0;\n  fVar30 = DAT_002a7fec;\n  fVar29 = DAT_0029f710;\n  dVar12 = DAT_0029f138;\n  local_80 = (uint *)p;\n  local_78 = q;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (image == (Image *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image != (Image *) NULL","MagickCore/quantum-import.c",0x1123,"ImportRGBOQuantum"\n                 );\n  }\n  if (image->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image->signature == MagickCoreSignature","MagickCore/quantum-import.c",0x1124,\n                  "ImportRGBOQuantum");\n  }\n  uVar23 = quantum_info->depth;\n  switch(uVar23) {\n  case 8:\n    if (0 < (int)number_pixels) {\n      pPVar28 = image->channel_map;\n      sVar6 = image->number_channels;\n      iVar18 = pPVar28->offset;\n      iVar27 = 0;\n      iVar5 = pPVar28[1].offset;\n      iVar7 = pPVar28[2].offset;\n      PVar8 = pPVar28[4].traits;\n      sVar21 = quantum_info->pad;\n      do {\n        bVar9 = p[1];\n        bVar20 = p[2];\n        q[iVar18] = (double)((float)*p * fVar13);\n        q[iVar5] = (double)((float)bVar9 * fVar13);\n        q[iVar7] = (double)((float)bVar20 * fVar13);\n        if (PVar8 != UndefinedPixelTrait) {\n          q[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)p[3] * fVar13);\n        }\n        p = p + sVar21 + 4;\n        iVar27 = iVar27 + 1;\n        q = q + sVar6;\n      } while (iVar27 != (int)number_pixels);\n    }\n    break;\n  default:\n    local_6c = 0;\n    bStack_6b = 0;\n    uStack_6a = 0;\n    iStack_68 = 0;\n    if (uVar23 != 0) goto LAB_00161285;\n    goto LAB_001612bc;\n  case 10:\n    if (quantum_info->pack == MagickFalse) {\n      if (0 < (int)number_pixels) {\n        uVar23 = 0;\n        local_6c = 0;\n        bStack_6b = 0;\n        uStack_6a = 0;\n        pPVar28 = image->channel_map;\n        sVar6 = quantum_info->pad;\n        sVar21 = image->number_channels;\n        uVar25 = 0;\n        do {\n          iVar18 = 0;\n          uVar22 = uVar25;\nLAB_001620a2:\n          if (uVar22 % 3 == 1) {\n            uVar25 = uVar23 >> 6 & 0xffc0;\nLAB_001620cb:\n            dVar12 = (double)uVar25;\n            if (iVar18 != 2) goto LAB_001620d7;\nLAB_00162130:\n            local_78[pPVar28[2].offset] = dVar12;\nLAB_001620f8:\n            uVar22 = uVar22 + 1;\n            iVar18 = iVar18 + 1;\n            goto LAB_001620a2;\n          }\n          if (uVar22 % 3 == 2) {\n            uVar25 = (uVar23 & 0xffc) << 4;\n            goto LAB_001620cb;\n          }\n          puVar1 = local_80 + 1;\n          uVar23 = *local_80;\n          if (quantum_info->endian != LSBEndian) {\n            uVar23 = uVar23 >> 0x18 | (uVar23 & 0xff0000) >> 8 | (uVar23 & 0xff00) << 8 |\n                     uVar23 << 0x18;\n          }\n          dVar12 = (double)((uVar23 >> 0x16) << 6);\n          local_80 = puVar1;\n          if (iVar18 == 2) goto LAB_00162130;\nLAB_001620d7:\n          uVar25 = uVar22 + 1;\n          if (iVar18 != 3) {\n            if (iVar18 == 1) {\n              local_78[pPVar28[1].offset] = dVar12;\n            }\n            else {\n              local_78[pPVar28->offset] = dVar12;\n              if (iVar18 == 3) goto LAB_0016217a;\n            }\n            goto LAB_001620f8;\n          }\n          if (pPVar28[4].traits != UndefinedPixelTrait) {\n            local_78[pPVar28[4].offset] = (double)DAT_0029f710 - dVar12;\n          }\nLAB_0016217a:\n          iVar18 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar18;\n          bStack_6b = (byte)((uint)iVar18 >> 8);\n          uStack_6a = (ushort)((uint)iVar18 >> 0x10);\n          local_80 = (uint *)((int)local_80 + sVar6);\n          local_78 = local_78 + sVar21;\n        } while (iVar18 != (int)number_pixels);\n      }\n    }\n    else if (0 < (int)number_pixels) {\n      pPVar28 = image->channel_map;\n      iVar18 = 0;\n      iVar5 = pPVar28->offset;\n      sVar6 = image->number_channels;\n      PVar8 = pPVar28[4].traits;\n      iVar7 = pPVar28[2].offset;\n      iVar27 = pPVar28[1].offset;\n      do {\n        uVar22 = 0;\n        uVar25 = 10;\n        uVar23 = (quantum_info->state).bits;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar23;\n          if (uVar25 <= uVar23) {\n            uVar16 = uVar25;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar25 = uVar25 - uVar16;\n          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar25);\n        (quantum_info->state).bits = uVar23;\n        local_78[iVar5] = (double)((uVar22 & 0x3ff) << 6);\n        uVar22 = 0;\n        uVar25 = 10;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar25;\n          if (uVar23 <= uVar25) {\n            uVar16 = uVar23;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar25 = uVar25 - uVar16;\n          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar25);\n        (quantum_info->state).bits = uVar23;\n        local_78[iVar27] = (double)((uVar22 & 0x3ff) << 6);\n        uVar22 = 0;\n        uVar25 = 10;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar25;\n          if (uVar23 <= uVar25) {\n            uVar16 = uVar23;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar25 = uVar25 - uVar16;\n          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar25);\n        uVar25 = 0;\n        (quantum_info->state).bits = uVar23;\n        local_78[iVar7] = (double)((uVar22 & 0x3ff) << 6);\n        uVar22 = 10;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar23;\n          if (uVar22 <= uVar23) {\n            uVar16 = uVar22;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar22 = uVar22 - uVar16;\n          uVar25 = uVar25 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar22);\n        (quantum_info->state).bits = uVar23;\n        if (PVar8 != UndefinedPixelTrait) {\n          local_78[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)((uVar25 & 0x3ff) << 6));\n        }\n        iVar18 = iVar18 + 1;\n        local_78 = local_78 + sVar6;\n      } while (iVar18 != (int)number_pixels);\n    }\n    break;\n  case 0x10:\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if (0 < (int)number_pixels) {\n        iVar18 = 0;\n        EVar4 = quantum_info->endian;\n        do {\n          uVar15 = *(ushort *)p;\n          if (EVar4 == LSBEndian) {\n            fVar30 = HalfToSinglePrecision(uVar15);\n            fVar29 = DAT_0029f710;\n            pPVar28 = image->channel_map;\n            q[pPVar28->offset] = (double)(DAT_0029f710 * fVar30);\n            fVar30 = HalfToSinglePrecision(*(ushort *)((int)p + 2));\n            q[pPVar28[1].offset] = (double)(fVar30 * fVar29);\n            fVar30 = HalfToSinglePrecision(*(ushort *)((int)p + 4));\n            q[pPVar28[2].offset] = (double)(fVar30 * fVar29);\n            uVar15 = *(ushort *)((int)p + 6);\n          }\n          else {\n            fVar30 = HalfToSinglePrecision(uVar15 << 8 | uVar15 >> 8);\n            fVar29 = DAT_0029f710;\n            pPVar28 = image->channel_map;\n            q[pPVar28->offset] = (double)(DAT_0029f710 * fVar30);\n            fVar30 = HalfToSinglePrecision\n                               (*(ushort *)((int)p + 2) << 8 | *(ushort *)((int)p + 2) >> 8);\n            q[pPVar28[1].offset] = (double)(fVar30 * fVar29);\n            fVar30 = HalfToSinglePrecision\n                               (*(ushort *)((int)p + 4) << 8 | *(ushort *)((int)p + 4) >> 8);\n            q[pPVar28[2].offset] = (double)(fVar30 * fVar29);\n            uVar15 = *(ushort *)((int)p + 6) << 8 | *(ushort *)((int)p + 6) >> 8;\n          }\n          fVar29 = HalfToSinglePrecision(uVar15);\n          if (pPVar28[4].traits != UndefinedPixelTrait) {\n            q[pPVar28[4].offset] = (double)(DAT_0029f710 - fVar29 * DAT_0029f710);\n          }\n          iVar18 = iVar18 + 1;\n          p = (uchar *)((int)p + quantum_info->pad + 8);\n          q = q + image->number_channels;\n        } while (iVar18 != (int)number_pixels);\n      }\n    }\n    else if (0 < (int)number_pixels) {\n      pPVar28 = image->channel_map;\n      EVar4 = quantum_info->endian;\n      sVar6 = quantum_info->pad;\n      sVar21 = image->number_channels;\n      iVar18 = pPVar28[1].offset;\n      iVar5 = pPVar28[2].offset;\n      iVar7 = pPVar28->offset;\n      PVar8 = pPVar28[4].traits;\n      iVar27 = 0;\n      do {\n        uVar15 = *(ushort *)((int)p + 4);\n        uVar26 = *(ushort *)((int)p + 6);\n        uVar2 = *(ushort *)p;\n        uVar3 = *(ushort *)((int)p + 2);\n        if (EVar4 == LSBEndian) {\n          q[iVar7] = (double)uVar2;\n          q[iVar18] = (double)uVar3;\n          q[iVar5] = (double)uVar15;\n        }\n        else {\n          uVar26 = uVar26 << 8 | uVar26 >> 8;\n          q[iVar7] = (double)(ushort)(uVar2 << 8 | uVar2 >> 8);\n          q[iVar18] = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n          q[iVar5] = (double)(ushort)(uVar15 << 8 | uVar15 >> 8);\n        }\n        if (PVar8 != UndefinedPixelTrait) {\n          q[pPVar28[4].offset] = (double)(fVar29 - (float)uVar26);\n        }\n        p = (uchar *)((int)p + sVar6 + 8);\n        iVar27 = iVar27 + 1;\n        q = q + sVar21;\n      } while (iVar27 != (int)number_pixels);\n    }\n    break;\n  case 0x18:\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if (0 < (int)number_pixels) {\n        iVar18 = 0;\n        do {\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,p,&pixel);\n          q[image->channel_map->offset] = (double)pixel;\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel);\n          q[image->channel_map[1].offset] = (double)pixel;\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel);\n          q[image->channel_map[2].offset] = (double)pixel;\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel);\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            q[image->channel_map[4].offset] = (double)(DAT_0029f710 - pixel);\n          }\n          p = puVar19 + quantum_info->pad;\n          iVar18 = iVar18 + 1;\n          q = q + image->number_channels;\n        } while (iVar18 != (int)number_pixels);\n      }\n      break;\n    }\n    goto LAB_001616dd;\n  case 0x20:\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if (0 < (int)number_pixels) {\n        pPVar28 = image->channel_map;\n        local_5c = (double *)0x0;\n        sVar6 = quantum_info->pad;\n        EVar4 = quantum_info->endian;\n        sVar21 = image->number_channels;\n        do {\n          local_64 = *(float *)p;\n          if (EVar4 != LSBEndian) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)p + 1),*(byte *)((int)p + 2))\n                                       ,*(byte *)((int)p + 3));\n          }\n          fVar30 = (local_64 - (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar29 = fVar14;\n          if ((fVar14 <= fVar30) && (fVar29 = DAT_002c5828, fVar30 <= DAT_002c5828)) {\n            fVar29 = fVar30;\n          }\n          q[pPVar28->offset] = (double)fVar29;\n          if (EVar4 == LSBEndian) {\n            fVar29 = *(float *)((int)p + 4);\n          }\n          else {\n            fVar29 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)((int)p + 4) << 0x18) >> 0x10\n                                                      ) | (ushort)*(byte *)((int)p + 5),\n                                              *(byte *)((int)p + 6)),*(byte *)((int)p + 7));\n          }\n          fVar29 = (fVar29 - (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar30 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)) {\n            fVar30 = fVar29;\n          }\n          q[pPVar28[1].offset] = (double)fVar30;\n          if (EVar4 == LSBEndian) {\n            local_60 = *(float *)((int)p + 8);\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)((int)p + 8) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)p + 9),\n                                                *(byte *)((int)p + 10)),*(byte *)((int)p + 0xb));\n          }\n          fVar29 = (local_60 - (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar30 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)) {\n            fVar30 = fVar29;\n          }\n          q[pPVar28[2].offset] = (double)fVar30;\n          if (EVar4 == LSBEndian) {\n            fVar29 = *(float *)((int)p + 0xc);\n            local_6c = SUB41(fVar29,0);\n            bStack_6b = (byte)((uint)fVar29 >> 8);\n            uStack_6a = (ushort)((uint)fVar29 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)((int)p + 0xc) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)p + 0xd);\n            bStack_6b = *(byte *)((int)p + 0xe);\n            local_6c = *(byte *)((int)p + 0xf);\n          }\n          fVar29 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar30 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)) {\n            fVar30 = fVar29;\n          }\n          if (pPVar28[4].traits != UndefinedPixelTrait) {\n            q[pPVar28[4].offset] = (double)(DAT_0029f710 - fVar30);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          p = (uchar *)((int)p + sVar6 + 0x10);\n          q = q + sVar21;\n        } while (local_5c != (double *)(int)number_pixels);\n      }\n      break;\n    }\nLAB_001616dd:\n    if (0 < (int)number_pixels) {\n      pPVar28 = image->channel_map;\n      EVar4 = quantum_info->endian;\n      sVar6 = quantum_info->pad;\n      sVar21 = image->number_channels;\n      iVar18 = pPVar28->offset;\n      iVar5 = pPVar28[1].offset;\n      iVar7 = pPVar28[2].offset;\n      PVar8 = pPVar28[4].traits;\n      iVar27 = 0;\n      do {\n        fVar29 = DAT_002a7fec;\n        uVar23 = *(uint *)((int)p + 0xc);\n        uVar25 = *(uint *)((int)p + 4);\n        uVar22 = *(uint *)((int)p + 8);\n        uVar17 = *(uint *)p;\n        if (EVar4 == LSBEndian) {\n          q[iVar18] = (double)((float)uVar17 / DAT_002a7fec);\n          q[iVar5] = (double)((float)uVar25 / fVar29);\n          q[iVar7] = (double)((float)uVar22 / fVar29);\n        }\n        else {\n          uVar15 = (ushort)(uVar17 >> 8);\n          uStack_6a = uVar15 & 0xff | (ushort)((uVar17 << 0x18) >> 0x10);\n          uVar23 = uVar23 >> 0x18 | (uVar23 & 0xff0000) >> 8 | (uVar23 & 0xff00) << 8 |\n                   uVar23 << 0x18;\n          q[iVar18] = (double)((float)CONCAT22(uStack_6a,\n                                               (ushort)(byte)(uVar17 >> 0x18) | uVar15 & 0xff00) /\n                              fVar30);\n          q[iVar5] = (double)((float)(uVar25 >> 0x18 | (uVar25 & 0xff0000) >> 8 |\n                                      (uVar25 & 0xff00) << 8 | uVar25 << 0x18) / fVar30);\n          q[iVar7] = (double)((float)(uVar22 >> 0x18 | (uVar22 & 0xff0000) >> 8 |\n                                      (uVar22 & 0xff00) << 8 | uVar22 << 0x18) / fVar30);\n        }\n        if (PVar8 != UndefinedPixelTrait) {\n          q[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)uVar23 / DAT_002a7fec);\n        }\n        p = (uchar *)((int)p + sVar6 + 0x10);\n        iVar27 = iVar27 + 1;\n        q = q + sVar21;\n      } while (iVar27 != (int)number_pixels);\n    }\n    break;\n  case 0x40:\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if (0 < (int)number_pixels) {\n        iVar18 = 0;\n        do {\n          puVar19 = PushDoublePixel(quantum_info,p,(double *)&pixel);\n          q[image->channel_map->offset] = (Quantum)CONCAT44(uStack_28,pixel);\n          puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel);\n          q[image->channel_map[1].offset] = (Quantum)CONCAT44(uStack_28,pixel);\n          puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel);\n          q[image->channel_map[2].offset] = (Quantum)CONCAT44(uStack_28,pixel);\n          puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel);\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            q[image->channel_map[4].offset] =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,pixel));\n          }\n          p = puVar19 + quantum_info->pad;\n          iVar18 = iVar18 + 1;\n          q = q + image->number_channels;\n        } while (iVar18 != (int)number_pixels);\n      }\n      break;\n    }\nLAB_00161285:\n    uVar25 = 0;\n    if (uVar23 < 0x41) {\n      uVar25 = uVar23;\n    }\n    bVar20 = (byte)(uVar25 - 1);\n    bVar9 = bVar20 & 0x1f;\n    uVar16 = 2 << (bVar20 & 0x1f);\n    uVar17 = uVar16;\n    uVar22 = 0 << bVar9 | 2U >> 0x20 - bVar9;\n    if ((uVar25 - 1 & 0x20) != 0) {\n      uVar17 = 0;\n      uVar22 = uVar16;\n    }\n    iVar18 = uVar17 - 1;\n    iStack_68 = (uVar22 - 1) + (uint)(uVar17 != 0);\n    local_6c = (byte)iVar18;\n    bStack_6b = (byte)((uint)iVar18 >> 8);\n    uStack_6a = (ushort)((uint)iVar18 >> 0x10);\nLAB_001612bc:\n    if (0 < (int)number_pixels) {\n      pPVar28 = image->channel_map;\n      local_64 = 0.0;\n      iVar18 = pPVar28->offset;\n      iVar5 = pPVar28[1].offset;\n      sVar6 = image->number_channels;\n      do {\n        pdVar24 = local_78 + iVar18;\n        if ((int)uVar23 < 1) {\n          fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (iStack_68 < 0) {\n            fVar29 = fVar29 + DAT_0029f714;\n          }\n          local_3c = (double)fVar29;\n          if (local_3c < dVar12) {\n            *pdVar24 = 0.0;\n          }\n          else {\n            dVar11 = 0.0;\nLAB_00161f72:\n            *pdVar24 = ((double)DAT_0029f718 / local_3c) * dVar11 * (double)DAT_0029f710;\n            if (0 < (int)uVar23) goto LAB_00161938;\n          }\n          dVar11 = 0.0;\n          local_5c = local_78 + pPVar28[2].offset;\nLAB_00161a0c:\n          dVar10 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar10 = (double)DAT_0029f718 / local_3c;\n          }\n          local_78[iVar5] = dVar10 * dVar11 * (double)DAT_0029f710;\n          if (0 < (int)uVar23) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar11 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar11 = 0.0;\nLAB_00161c0a:\n          dVar10 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar10 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar11 = dVar10 * dVar11 * (double)DAT_0029f710;\n        }\n        else {\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              (quantum_info->state).pixel = uVar17;\n              sVar21 = 8;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = sVar21;\n            if (uVar25 <= sVar21) {\n              uVar16 = uVar25;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          if ((iStack_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar22)) {\n            *pdVar24 = (double)DAT_0029f710;\n          }\n          else {\n            dVar11 = (double)uVar22;\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar24 = dVar11 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              sVar21 = 8;\n              (quantum_info->state).pixel = uVar17;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = sVar21;\n            if (uVar25 <= sVar21) {\n              uVar16 = uVar25;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          local_5c = local_78 + pPVar28[2].offset;\n          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            goto LAB_00161a0c;\n          }\n          local_78[iVar5] = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              (quantum_info->state).pixel = uVar17;\n              sVar21 = 8;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = uVar25;\n            if (sVar21 <= uVar25) {\n              uVar16 = sVar21;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar11 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar23 < 1) {\n                dVar11 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar11 * (double)DAT_0029f710;\n            if (0 < (int)uVar23) goto LAB_00161b52;\n            dVar11 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              sVar21 = 8;\n              (quantum_info->state).pixel = uVar17;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = uVar25;\n            if (sVar21 <= uVar25) {\n              uVar16 = sVar21;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            goto LAB_00161c0a;\n          }\n          dVar11 = (double)DAT_0029f710;\n        }\n        if (pPVar28[4].traits != UndefinedPixelTrait) {\n          local_78[pPVar28[4].offset] = (double)DAT_0029f710 - dVar11;\n        }\n        local_64 = (float)((int)local_64 + 1);\n        local_78 = local_78 + sVar6;\n      } while (local_64 != (float)(int)number_pixels);\n    }\n  }\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "ushort uVar2;" type_identifier identifier ;) (declaration "ushort uVar3;" type_identifier identifier ;) (declaration "EndianType EVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "PixelTrait PVar8;" type_identifier identifier ;) (declaration "byte bVar9;" type_identifier identifier ;) (declaration "double dVar10;" primitive_type identifier ;) (declaration "double dVar11;" primitive_type identifier ;) (declaration "double dVar12;" primitive_type identifier ;) (declaration "float fVar13;" primitive_type identifier ;) (declaration "float fVar14;" primitive_type identifier ;) (declaration "ushort uVar15;" type_identifier identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "uchar *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "byte bVar20;" type_identifier identifier ;) (declaration "size_t sVar21;" primitive_type identifier ;) (declaration "uint uVar22;" type_identifier identifier ;) (declaration "uint uVar23;" type_identifier identifier ;) (declaration "uint quantum;" type_identifier identifier ;) (declaration "double *pdVar24;" primitive_type (pointer_declarator "*pdVar24" * identifier) ;) (declaration "uint uVar25;" type_identifier identifier ;) (declaration "ushort uVar26;" type_identifier identifier ;) (declaration "int iVar27;" primitive_type identifier ;) (declaration "PixelChannelMap *pPVar28;" type_identifier (pointer_declarator "*pPVar28" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "float fVar29;" primitive_type identifier ;) (declaration "float fVar30;" primitive_type identifier ;) (declaration "uint *local_80;" type_identifier (pointer_declarator "*local_80" * identifier) ;) (declaration "Quantum *local_78;" type_identifier (pointer_declarator "*local_78" * identifier) ;) (declaration "byte local_6c;" type_identifier identifier ;) (declaration "byte bStack_6b;" type_identifier identifier ;) (declaration "ushort uStack_6a;" type_identifier identifier ;) (declaration "int iStack_68;" primitive_type identifier ;) (declaration "float local_64;" primitive_type identifier ;) (declaration "float local_60;" primitive_type identifier ;) (declaration "double *local_5c;" primitive_type (pointer_declarator "*local_5c" * identifier) ;) (declaration "double local_3c;" primitive_type identifier ;) (declaration "float pixel;" primitive_type identifier ;) (declaration "undefined4 uStack_28;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "fVar14 = DAT_002c5824;" (assignment_expression "fVar14 = DAT_002c5824" identifier = identifier) ;) (expression_statement "fVar13 = DAT_002a7ff0;" (assignment_expression "fVar13 = DAT_002a7ff0" identifier = identifier) ;) (expression_statement "fVar30 = DAT_002a7fec;" (assignment_expression "fVar30 = DAT_002a7fec" identifier = identifier) ;) (expression_statement "fVar29 = DAT_0029f710;" (assignment_expression "fVar29 = DAT_0029f710" identifier = identifier) ;) (expression_statement "dVar12 = DAT_0029f138;" (assignment_expression "dVar12 = DAT_0029f138" identifier = identifier) ;) (expression_statement "local_80 = (uint *)p;" (assignment_expression "local_80 = (uint *)p" identifier = (cast_expression "(uint *)p" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_78 = q;" (assignment_expression "local_78 = q" identifier = identifier) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (image == (Image *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image != (Image *) NULL","MagickCore/quantum-import.c",0x1123,"ImportRGBOQuantum"\n                 );\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                    /* WARNING: Subroutine does not return */\n    __assert_fail("image != (Image *) NULL","MagickCore/quantum-import.c",0x1123,"ImportRGBOQuantum"\n                 );\n  }" { comment (expression_statement "__assert_fail("image != (Image *) NULL","MagickCore/quantum-import.c",0x1123,"ImportRGBOQuantum"\n                 );" (call_expression "__assert_fail("image != (Image *) NULL","MagickCore/quantum-import.c",0x1123,"ImportRGBOQuantum"\n                 )" identifier (argument_list "("image != (Image *) NULL","MagickCore/quantum-import.c",0x1123,"ImportRGBOQuantum"\n                 )" ( (string_literal ""image != (Image *) NULL"" " string_content ") , (string_literal ""MagickCore/quantum-import.c"" " string_content ") , number_literal , (string_literal ""ImportRGBOQuantum"" " string_content ") ))) ;) })) (if_statement "if (image->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image->signature == MagickCoreSignature","MagickCore/quantum-import.c",0x1124,\n                  "ImportRGBOQuantum");\n  }" if (parenthesized_expression "(image->signature != 0xabacadab)" ( (binary_expression "image->signature != 0xabacadab" (field_expression "image->signature" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image->signature == MagickCoreSignature","MagickCore/quantum-import.c",0x1124,\n                  "ImportRGBOQuantum");\n  }" { comment (expression_statement "__assert_fail("image->signature == MagickCoreSignature","MagickCore/quantum-import.c",0x1124,\n                  "ImportRGBOQuantum");" (call_expression "__assert_fail("image->signature == MagickCoreSignature","MagickCore/quantum-import.c",0x1124,\n                  "ImportRGBOQuantum")" identifier (argument_list "("image->signature == MagickCoreSignature","MagickCore/quantum-import.c",0x1124,\n                  "ImportRGBOQuantum")" ( (string_literal ""image->signature == MagickCoreSignature"" " string_content ") , (string_literal ""MagickCore/quantum-import.c"" " string_content ") , number_literal , (string_literal ""ImportRGBOQuantum"" " string_content ") ))) ;) })) (expression_statement "uVar23 = quantum_info->depth;" (assignment_expression "uVar23 = quantum_info->depth" identifier = (field_expression "quantum_info->depth" identifier -> field_identifier)) ;) (switch_statement "switch(uVar23) {\n  case 8:\n    if (0 < (int)number_pixels) {\n      pPVar28 = image->channel_map;\n      sVar6 = image->number_channels;\n      iVar18 = pPVar28->offset;\n      iVar27 = 0;\n      iVar5 = pPVar28[1].offset;\n      iVar7 = pPVar28[2].offset;\n      PVar8 = pPVar28[4].traits;\n      sVar21 = quantum_info->pad;\n      do {\n        bVar9 = p[1];\n        bVar20 = p[2];\n        q[iVar18] = (double)((float)*p * fVar13);\n        q[iVar5] = (double)((float)bVar9 * fVar13);\n        q[iVar7] = (double)((float)bVar20 * fVar13);\n        if (PVar8 != UndefinedPixelTrait) {\n          q[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)p[3] * fVar13);\n        }\n        p = p + sVar21 + 4;\n        iVar27 = iVar27 + 1;\n        q = q + sVar6;\n      } while (iVar27 != (int)number_pixels);\n    }\n    break;\n  default:\n    local_6c = 0;\n    bStack_6b = 0;\n    uStack_6a = 0;\n    iStack_68 = 0;\n    if (uVar23 != 0) goto LAB_00161285;\n    goto LAB_001612bc;\n  case 10:\n    if (quantum_info->pack == MagickFalse) {\n      if (0 < (int)number_pixels) {\n        uVar23 = 0;\n        local_6c = 0;\n        bStack_6b = 0;\n        uStack_6a = 0;\n        pPVar28 = image->channel_map;\n        sVar6 = quantum_info->pad;\n        sVar21 = image->number_channels;\n        uVar25 = 0;\n        do {\n          iVar18 = 0;\n          uVar22 = uVar25;\nLAB_001620a2:\n          if (uVar22 % 3 == 1) {\n            uVar25 = uVar23 >> 6 & 0xffc0;\nLAB_001620cb:\n            dVar12 = (double)uVar25;\n            if (iVar18 != 2) goto LAB_001620d7;\nLAB_00162130:\n            local_78[pPVar28[2].offset] = dVar12;\nLAB_001620f8:\n            uVar22 = uVar22 + 1;\n            iVar18 = iVar18 + 1;\n            goto LAB_001620a2;\n          }\n          if (uVar22 % 3 == 2) {\n            uVar25 = (uVar23 & 0xffc) << 4;\n            goto LAB_001620cb;\n          }\n          puVar1 = local_80 + 1;\n          uVar23 = *local_80;\n          if (quantum_info->endian != LSBEndian) {\n            uVar23 = uVar23 >> 0x18 | (uVar23 & 0xff0000) >> 8 | (uVar23 & 0xff00) << 8 |\n                     uVar23 << 0x18;\n          }\n          dVar12 = (double)((uVar23 >> 0x16) << 6);\n          local_80 = puVar1;\n          if (iVar18 == 2) goto LAB_00162130;\nLAB_001620d7:\n          uVar25 = uVar22 + 1;\n          if (iVar18 != 3) {\n            if (iVar18 == 1) {\n              local_78[pPVar28[1].offset] = dVar12;\n            }\n            else {\n              local_78[pPVar28->offset] = dVar12;\n              if (iVar18 == 3) goto LAB_0016217a;\n            }\n            goto LAB_001620f8;\n          }\n          if (pPVar28[4].traits != UndefinedPixelTrait) {\n            local_78[pPVar28[4].offset] = (double)DAT_0029f710 - dVar12;\n          }\nLAB_0016217a:\n          iVar18 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar18;\n          bStack_6b = (byte)((uint)iVar18 >> 8);\n          uStack_6a = (ushort)((uint)iVar18 >> 0x10);\n          local_80 = (uint *)((int)local_80 + sVar6);\n          local_78 = local_78 + sVar21;\n        } while (iVar18 != (int)number_pixels);\n      }\n    }\n    else if (0 < (int)number_pixels) {\n      pPVar28 = image->channel_map;\n      iVar18 = 0;\n      iVar5 = pPVar28->offset;\n      sVar6 = image->number_channels;\n      PVar8 = pPVar28[4].traits;\n      iVar7 = pPVar28[2].offset;\n      iVar27 = pPVar28[1].offset;\n      do {\n        uVar22 = 0;\n        uVar25 = 10;\n        uVar23 = (quantum_info->state).bits;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar23;\n          if (uVar25 <= uVar23) {\n            uVar16 = uVar25;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar25 = uVar25 - uVar16;\n          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar25);\n        (quantum_info->state).bits = uVar23;\n        local_78[iVar5] = (double)((uVar22 & 0x3ff) << 6);\n        uVar22 = 0;\n        uVar25 = 10;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar25;\n          if (uVar23 <= uVar25) {\n            uVar16 = uVar23;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar25 = uVar25 - uVar16;\n          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar25);\n        (quantum_info->state).bits = uVar23;\n        local_78[iVar27] = (double)((uVar22 & 0x3ff) << 6);\n        uVar22 = 0;\n        uVar25 = 10;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar25;\n          if (uVar23 <= uVar25) {\n            uVar16 = uVar23;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar25 = uVar25 - uVar16;\n          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar25);\n        uVar25 = 0;\n        (quantum_info->state).bits = uVar23;\n        local_78[iVar7] = (double)((uVar22 & 0x3ff) << 6);\n        uVar22 = 10;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar23;\n          if (uVar22 <= uVar23) {\n            uVar16 = uVar22;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar22 = uVar22 - uVar16;\n          uVar25 = uVar25 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar22);\n        (quantum_info->state).bits = uVar23;\n        if (PVar8 != UndefinedPixelTrait) {\n          local_78[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)((uVar25 & 0x3ff) << 6));\n        }\n        iVar18 = iVar18 + 1;\n        local_78 = local_78 + sVar6;\n      } while (iVar18 != (int)number_pixels);\n    }\n    break;\n  case 0x10:\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if (0 < (int)number_pixels) {\n        iVar18 = 0;\n        EVar4 = quantum_info->endian;\n        do {\n          uVar15 = *(ushort *)p;\n          if (EVar4 == LSBEndian) {\n            fVar30 = HalfToSinglePrecision(uVar15);\n            fVar29 = DAT_0029f710;\n            pPVar28 = image->channel_map;\n            q[pPVar28->offset] = (double)(DAT_0029f710 * fVar30);\n            fVar30 = HalfToSinglePrecision(*(ushort *)((int)p + 2));\n            q[pPVar28[1].offset] = (double)(fVar30 * fVar29);\n            fVar30 = HalfToSinglePrecision(*(ushort *)((int)p + 4));\n            q[pPVar28[2].offset] = (double)(fVar30 * fVar29);\n            uVar15 = *(ushort *)((int)p + 6);\n          }\n          else {\n            fVar30 = HalfToSinglePrecision(uVar15 << 8 | uVar15 >> 8);\n            fVar29 = DAT_0029f710;\n            pPVar28 = image->channel_map;\n            q[pPVar28->offset] = (double)(DAT_0029f710 * fVar30);\n            fVar30 = HalfToSinglePrecision\n                               (*(ushort *)((int)p + 2) << 8 | *(ushort *)((int)p + 2) >> 8);\n            q[pPVar28[1].offset] = (double)(fVar30 * fVar29);\n            fVar30 = HalfToSinglePrecision\n                               (*(ushort *)((int)p + 4) << 8 | *(ushort *)((int)p + 4) >> 8);\n            q[pPVar28[2].offset] = (double)(fVar30 * fVar29);\n            uVar15 = *(ushort *)((int)p + 6) << 8 | *(ushort *)((int)p + 6) >> 8;\n          }\n          fVar29 = HalfToSinglePrecision(uVar15);\n          if (pPVar28[4].traits != UndefinedPixelTrait) {\n            q[pPVar28[4].offset] = (double)(DAT_0029f710 - fVar29 * DAT_0029f710);\n          }\n          iVar18 = iVar18 + 1;\n          p = (uchar *)((int)p + quantum_info->pad + 8);\n          q = q + image->number_channels;\n        } while (iVar18 != (int)number_pixels);\n      }\n    }\n    else if (0 < (int)number_pixels) {\n      pPVar28 = image->channel_map;\n      EVar4 = quantum_info->endian;\n      sVar6 = quantum_info->pad;\n      sVar21 = image->number_channels;\n      iVar18 = pPVar28[1].offset;\n      iVar5 = pPVar28[2].offset;\n      iVar7 = pPVar28->offset;\n      PVar8 = pPVar28[4].traits;\n      iVar27 = 0;\n      do {\n        uVar15 = *(ushort *)((int)p + 4);\n        uVar26 = *(ushort *)((int)p + 6);\n        uVar2 = *(ushort *)p;\n        uVar3 = *(ushort *)((int)p + 2);\n        if (EVar4 == LSBEndian) {\n          q[iVar7] = (double)uVar2;\n          q[iVar18] = (double)uVar3;\n          q[iVar5] = (double)uVar15;\n        }\n        else {\n          uVar26 = uVar26 << 8 | uVar26 >> 8;\n          q[iVar7] = (double)(ushort)(uVar2 << 8 | uVar2 >> 8);\n          q[iVar18] = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n          q[iVar5] = (double)(ushort)(uVar15 << 8 | uVar15 >> 8);\n        }\n        if (PVar8 != UndefinedPixelTrait) {\n          q[pPVar28[4].offset] = (double)(fVar29 - (float)uVar26);\n        }\n        p = (uchar *)((int)p + sVar6 + 8);\n        iVar27 = iVar27 + 1;\n        q = q + sVar21;\n      } while (iVar27 != (int)number_pixels);\n    }\n    break;\n  case 0x18:\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if (0 < (int)number_pixels) {\n        iVar18 = 0;\n        do {\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,p,&pixel);\n          q[image->channel_map->offset] = (double)pixel;\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel);\n          q[image->channel_map[1].offset] = (double)pixel;\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel);\n          q[image->channel_map[2].offset] = (double)pixel;\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel);\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            q[image->channel_map[4].offset] = (double)(DAT_0029f710 - pixel);\n          }\n          p = puVar19 + quantum_info->pad;\n          iVar18 = iVar18 + 1;\n          q = q + image->number_channels;\n        } while (iVar18 != (int)number_pixels);\n      }\n      break;\n    }\n    goto LAB_001616dd;\n  case 0x20:\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if (0 < (int)number_pixels) {\n        pPVar28 = image->channel_map;\n        local_5c = (double *)0x0;\n        sVar6 = quantum_info->pad;\n        EVar4 = quantum_info->endian;\n        sVar21 = image->number_channels;\n        do {\n          local_64 = *(float *)p;\n          if (EVar4 != LSBEndian) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)p + 1),*(byte *)((int)p + 2))\n                                       ,*(byte *)((int)p + 3));\n          }\n          fVar30 = (local_64 - (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar29 = fVar14;\n          if ((fVar14 <= fVar30) && (fVar29 = DAT_002c5828, fVar30 <= DAT_002c5828)) {\n            fVar29 = fVar30;\n          }\n          q[pPVar28->offset] = (double)fVar29;\n          if (EVar4 == LSBEndian) {\n            fVar29 = *(float *)((int)p + 4);\n          }\n          else {\n            fVar29 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)((int)p + 4) << 0x18) >> 0x10\n                                                      ) | (ushort)*(byte *)((int)p + 5),\n                                              *(byte *)((int)p + 6)),*(byte *)((int)p + 7));\n          }\n          fVar29 = (fVar29 - (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar30 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)) {\n            fVar30 = fVar29;\n          }\n          q[pPVar28[1].offset] = (double)fVar30;\n          if (EVar4 == LSBEndian) {\n            local_60 = *(float *)((int)p + 8);\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)((int)p + 8) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)p + 9),\n                                                *(byte *)((int)p + 10)),*(byte *)((int)p + 0xb));\n          }\n          fVar29 = (local_60 - (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar30 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)) {\n            fVar30 = fVar29;\n          }\n          q[pPVar28[2].offset] = (double)fVar30;\n          if (EVar4 == LSBEndian) {\n            fVar29 = *(float *)((int)p + 0xc);\n            local_6c = SUB41(fVar29,0);\n            bStack_6b = (byte)((uint)fVar29 >> 8);\n            uStack_6a = (ushort)((uint)fVar29 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)((int)p + 0xc) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)p + 0xd);\n            bStack_6b = *(byte *)((int)p + 0xe);\n            local_6c = *(byte *)((int)p + 0xf);\n          }\n          fVar29 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar30 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)) {\n            fVar30 = fVar29;\n          }\n          if (pPVar28[4].traits != UndefinedPixelTrait) {\n            q[pPVar28[4].offset] = (double)(DAT_0029f710 - fVar30);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          p = (uchar *)((int)p + sVar6 + 0x10);\n          q = q + sVar21;\n        } while (local_5c != (double *)(int)number_pixels);\n      }\n      break;\n    }\nLAB_001616dd:\n    if (0 < (int)number_pixels) {\n      pPVar28 = image->channel_map;\n      EVar4 = quantum_info->endian;\n      sVar6 = quantum_info->pad;\n      sVar21 = image->number_channels;\n      iVar18 = pPVar28->offset;\n      iVar5 = pPVar28[1].offset;\n      iVar7 = pPVar28[2].offset;\n      PVar8 = pPVar28[4].traits;\n      iVar27 = 0;\n      do {\n        fVar29 = DAT_002a7fec;\n        uVar23 = *(uint *)((int)p + 0xc);\n        uVar25 = *(uint *)((int)p + 4);\n        uVar22 = *(uint *)((int)p + 8);\n        uVar17 = *(uint *)p;\n        if (EVar4 == LSBEndian) {\n          q[iVar18] = (double)((float)uVar17 / DAT_002a7fec);\n          q[iVar5] = (double)((float)uVar25 / fVar29);\n          q[iVar7] = (double)((float)uVar22 / fVar29);\n        }\n        else {\n          uVar15 = (ushort)(uVar17 >> 8);\n          uStack_6a = uVar15 & 0xff | (ushort)((uVar17 << 0x18) >> 0x10);\n          uVar23 = uVar23 >> 0x18 | (uVar23 & 0xff0000) >> 8 | (uVar23 & 0xff00) << 8 |\n                   uVar23 << 0x18;\n          q[iVar18] = (double)((float)CONCAT22(uStack_6a,\n                                               (ushort)(byte)(uVar17 >> 0x18) | uVar15 & 0xff00) /\n                              fVar30);\n          q[iVar5] = (double)((float)(uVar25 >> 0x18 | (uVar25 & 0xff0000) >> 8 |\n                                      (uVar25 & 0xff00) << 8 | uVar25 << 0x18) / fVar30);\n          q[iVar7] = (double)((float)(uVar22 >> 0x18 | (uVar22 & 0xff0000) >> 8 |\n                                      (uVar22 & 0xff00) << 8 | uVar22 << 0x18) / fVar30);\n        }\n        if (PVar8 != UndefinedPixelTrait) {\n          q[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)uVar23 / DAT_002a7fec);\n        }\n        p = (uchar *)((int)p + sVar6 + 0x10);\n        iVar27 = iVar27 + 1;\n        q = q + sVar21;\n      } while (iVar27 != (int)number_pixels);\n    }\n    break;\n  case 0x40:\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if (0 < (int)number_pixels) {\n        iVar18 = 0;\n        do {\n          puVar19 = PushDoublePixel(quantum_info,p,(double *)&pixel);\n          q[image->channel_map->offset] = (Quantum)CONCAT44(uStack_28,pixel);\n          puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel);\n          q[image->channel_map[1].offset] = (Quantum)CONCAT44(uStack_28,pixel);\n          puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel);\n          q[image->channel_map[2].offset] = (Quantum)CONCAT44(uStack_28,pixel);\n          puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel);\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            q[image->channel_map[4].offset] =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,pixel));\n          }\n          p = puVar19 + quantum_info->pad;\n          iVar18 = iVar18 + 1;\n          q = q + image->number_channels;\n        } while (iVar18 != (int)number_pixels);\n      }\n      break;\n    }\nLAB_00161285:\n    uVar25 = 0;\n    if (uVar23 < 0x41) {\n      uVar25 = uVar23;\n    }\n    bVar20 = (byte)(uVar25 - 1);\n    bVar9 = bVar20 & 0x1f;\n    uVar16 = 2 << (bVar20 & 0x1f);\n    uVar17 = uVar16;\n    uVar22 = 0 << bVar9 | 2U >> 0x20 - bVar9;\n    if ((uVar25 - 1 & 0x20) != 0) {\n      uVar17 = 0;\n      uVar22 = uVar16;\n    }\n    iVar18 = uVar17 - 1;\n    iStack_68 = (uVar22 - 1) + (uint)(uVar17 != 0);\n    local_6c = (byte)iVar18;\n    bStack_6b = (byte)((uint)iVar18 >> 8);\n    uStack_6a = (ushort)((uint)iVar18 >> 0x10);\nLAB_001612bc:\n    if (0 < (int)number_pixels) {\n      pPVar28 = image->channel_map;\n      local_64 = 0.0;\n      iVar18 = pPVar28->offset;\n      iVar5 = pPVar28[1].offset;\n      sVar6 = image->number_channels;\n      do {\n        pdVar24 = local_78 + iVar18;\n        if ((int)uVar23 < 1) {\n          fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (iStack_68 < 0) {\n            fVar29 = fVar29 + DAT_0029f714;\n          }\n          local_3c = (double)fVar29;\n          if (local_3c < dVar12) {\n            *pdVar24 = 0.0;\n          }\n          else {\n            dVar11 = 0.0;\nLAB_00161f72:\n            *pdVar24 = ((double)DAT_0029f718 / local_3c) * dVar11 * (double)DAT_0029f710;\n            if (0 < (int)uVar23) goto LAB_00161938;\n          }\n          dVar11 = 0.0;\n          local_5c = local_78 + pPVar28[2].offset;\nLAB_00161a0c:\n          dVar10 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar10 = (double)DAT_0029f718 / local_3c;\n          }\n          local_78[iVar5] = dVar10 * dVar11 * (double)DAT_0029f710;\n          if (0 < (int)uVar23) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar11 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar11 = 0.0;\nLAB_00161c0a:\n          dVar10 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar10 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar11 = dVar10 * dVar11 * (double)DAT_0029f710;\n        }\n        else {\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              (quantum_info->state).pixel = uVar17;\n              sVar21 = 8;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = sVar21;\n            if (uVar25 <= sVar21) {\n              uVar16 = uVar25;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          if ((iStack_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar22)) {\n            *pdVar24 = (double)DAT_0029f710;\n          }\n          else {\n            dVar11 = (double)uVar22;\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar24 = dVar11 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              sVar21 = 8;\n              (quantum_info->state).pixel = uVar17;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = sVar21;\n            if (uVar25 <= sVar21) {\n              uVar16 = uVar25;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          local_5c = local_78 + pPVar28[2].offset;\n          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            goto LAB_00161a0c;\n          }\n          local_78[iVar5] = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              (quantum_info->state).pixel = uVar17;\n              sVar21 = 8;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = uVar25;\n            if (sVar21 <= uVar25) {\n              uVar16 = sVar21;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar11 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar23 < 1) {\n                dVar11 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar11 * (double)DAT_0029f710;\n            if (0 < (int)uVar23) goto LAB_00161b52;\n            dVar11 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              sVar21 = 8;\n              (quantum_info->state).pixel = uVar17;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = uVar25;\n            if (sVar21 <= uVar25) {\n              uVar16 = sVar21;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            goto LAB_00161c0a;\n          }\n          dVar11 = (double)DAT_0029f710;\n        }\n        if (pPVar28[4].traits != UndefinedPixelTrait) {\n          local_78[pPVar28[4].offset] = (double)DAT_0029f710 - dVar11;\n        }\n        local_64 = (float)((int)local_64 + 1);\n        local_78 = local_78 + sVar6;\n      } while (local_64 != (float)(int)number_pixels);\n    }\n  }" switch (parenthesized_expression "(uVar23)" ( identifier )) (compound_statement "{\n  case 8:\n    if (0 < (int)number_pixels) {\n      pPVar28 = image->channel_map;\n      sVar6 = image->number_channels;\n      iVar18 = pPVar28->offset;\n      iVar27 = 0;\n      iVar5 = pPVar28[1].offset;\n      iVar7 = pPVar28[2].offset;\n      PVar8 = pPVar28[4].traits;\n      sVar21 = quantum_info->pad;\n      do {\n        bVar9 = p[1];\n        bVar20 = p[2];\n        q[iVar18] = (double)((float)*p * fVar13);\n        q[iVar5] = (double)((float)bVar9 * fVar13);\n        q[iVar7] = (double)((float)bVar20 * fVar13);\n        if (PVar8 != UndefinedPixelTrait) {\n          q[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)p[3] * fVar13);\n        }\n        p = p + sVar21 + 4;\n        iVar27 = iVar27 + 1;\n        q = q + sVar6;\n      } while (iVar27 != (int)number_pixels);\n    }\n    break;\n  default:\n    local_6c = 0;\n    bStack_6b = 0;\n    uStack_6a = 0;\n    iStack_68 = 0;\n    if (uVar23 != 0) goto LAB_00161285;\n    goto LAB_001612bc;\n  case 10:\n    if (quantum_info->pack == MagickFalse) {\n      if (0 < (int)number_pixels) {\n        uVar23 = 0;\n        local_6c = 0;\n        bStack_6b = 0;\n        uStack_6a = 0;\n        pPVar28 = image->channel_map;\n        sVar6 = quantum_info->pad;\n        sVar21 = image->number_channels;\n        uVar25 = 0;\n        do {\n          iVar18 = 0;\n          uVar22 = uVar25;\nLAB_001620a2:\n          if (uVar22 % 3 == 1) {\n            uVar25 = uVar23 >> 6 & 0xffc0;\nLAB_001620cb:\n            dVar12 = (double)uVar25;\n            if (iVar18 != 2) goto LAB_001620d7;\nLAB_00162130:\n            local_78[pPVar28[2].offset] = dVar12;\nLAB_001620f8:\n            uVar22 = uVar22 + 1;\n            iVar18 = iVar18 + 1;\n            goto LAB_001620a2;\n          }\n          if (uVar22 % 3 == 2) {\n            uVar25 = (uVar23 & 0xffc) << 4;\n            goto LAB_001620cb;\n          }\n          puVar1 = local_80 + 1;\n          uVar23 = *local_80;\n          if (quantum_info->endian != LSBEndian) {\n            uVar23 = uVar23 >> 0x18 | (uVar23 & 0xff0000) >> 8 | (uVar23 & 0xff00) << 8 |\n                     uVar23 << 0x18;\n          }\n          dVar12 = (double)((uVar23 >> 0x16) << 6);\n          local_80 = puVar1;\n          if (iVar18 == 2) goto LAB_00162130;\nLAB_001620d7:\n          uVar25 = uVar22 + 1;\n          if (iVar18 != 3) {\n            if (iVar18 == 1) {\n              local_78[pPVar28[1].offset] = dVar12;\n            }\n            else {\n              local_78[pPVar28->offset] = dVar12;\n              if (iVar18 == 3) goto LAB_0016217a;\n            }\n            goto LAB_001620f8;\n          }\n          if (pPVar28[4].traits != UndefinedPixelTrait) {\n            local_78[pPVar28[4].offset] = (double)DAT_0029f710 - dVar12;\n          }\nLAB_0016217a:\n          iVar18 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar18;\n          bStack_6b = (byte)((uint)iVar18 >> 8);\n          uStack_6a = (ushort)((uint)iVar18 >> 0x10);\n          local_80 = (uint *)((int)local_80 + sVar6);\n          local_78 = local_78 + sVar21;\n        } while (iVar18 != (int)number_pixels);\n      }\n    }\n    else if (0 < (int)number_pixels) {\n      pPVar28 = image->channel_map;\n      iVar18 = 0;\n      iVar5 = pPVar28->offset;\n      sVar6 = image->number_channels;\n      PVar8 = pPVar28[4].traits;\n      iVar7 = pPVar28[2].offset;\n      iVar27 = pPVar28[1].offset;\n      do {\n        uVar22 = 0;\n        uVar25 = 10;\n        uVar23 = (quantum_info->state).bits;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar23;\n          if (uVar25 <= uVar23) {\n            uVar16 = uVar25;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar25 = uVar25 - uVar16;\n          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar25);\n        (quantum_info->state).bits = uVar23;\n        local_78[iVar5] = (double)((uVar22 & 0x3ff) << 6);\n        uVar22 = 0;\n        uVar25 = 10;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar25;\n          if (uVar23 <= uVar25) {\n            uVar16 = uVar23;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar25 = uVar25 - uVar16;\n          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar25);\n        (quantum_info->state).bits = uVar23;\n        local_78[iVar27] = (double)((uVar22 & 0x3ff) << 6);\n        uVar22 = 0;\n        uVar25 = 10;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar25;\n          if (uVar23 <= uVar25) {\n            uVar16 = uVar23;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar25 = uVar25 - uVar16;\n          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar25);\n        uVar25 = 0;\n        (quantum_info->state).bits = uVar23;\n        local_78[iVar7] = (double)((uVar22 & 0x3ff) << 6);\n        uVar22 = 10;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar23;\n          if (uVar22 <= uVar23) {\n            uVar16 = uVar22;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar22 = uVar22 - uVar16;\n          uVar25 = uVar25 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar22);\n        (quantum_info->state).bits = uVar23;\n        if (PVar8 != UndefinedPixelTrait) {\n          local_78[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)((uVar25 & 0x3ff) << 6));\n        }\n        iVar18 = iVar18 + 1;\n        local_78 = local_78 + sVar6;\n      } while (iVar18 != (int)number_pixels);\n    }\n    break;\n  case 0x10:\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if (0 < (int)number_pixels) {\n        iVar18 = 0;\n        EVar4 = quantum_info->endian;\n        do {\n          uVar15 = *(ushort *)p;\n          if (EVar4 == LSBEndian) {\n            fVar30 = HalfToSinglePrecision(uVar15);\n            fVar29 = DAT_0029f710;\n            pPVar28 = image->channel_map;\n            q[pPVar28->offset] = (double)(DAT_0029f710 * fVar30);\n            fVar30 = HalfToSinglePrecision(*(ushort *)((int)p + 2));\n            q[pPVar28[1].offset] = (double)(fVar30 * fVar29);\n            fVar30 = HalfToSinglePrecision(*(ushort *)((int)p + 4));\n            q[pPVar28[2].offset] = (double)(fVar30 * fVar29);\n            uVar15 = *(ushort *)((int)p + 6);\n          }\n          else {\n            fVar30 = HalfToSinglePrecision(uVar15 << 8 | uVar15 >> 8);\n            fVar29 = DAT_0029f710;\n            pPVar28 = image->channel_map;\n            q[pPVar28->offset] = (double)(DAT_0029f710 * fVar30);\n            fVar30 = HalfToSinglePrecision\n                               (*(ushort *)((int)p + 2) << 8 | *(ushort *)((int)p + 2) >> 8);\n            q[pPVar28[1].offset] = (double)(fVar30 * fVar29);\n            fVar30 = HalfToSinglePrecision\n                               (*(ushort *)((int)p + 4) << 8 | *(ushort *)((int)p + 4) >> 8);\n            q[pPVar28[2].offset] = (double)(fVar30 * fVar29);\n            uVar15 = *(ushort *)((int)p + 6) << 8 | *(ushort *)((int)p + 6) >> 8;\n          }\n          fVar29 = HalfToSinglePrecision(uVar15);\n          if (pPVar28[4].traits != UndefinedPixelTrait) {\n            q[pPVar28[4].offset] = (double)(DAT_0029f710 - fVar29 * DAT_0029f710);\n          }\n          iVar18 = iVar18 + 1;\n          p = (uchar *)((int)p + quantum_info->pad + 8);\n          q = q + image->number_channels;\n        } while (iVar18 != (int)number_pixels);\n      }\n    }\n    else if (0 < (int)number_pixels) {\n      pPVar28 = image->channel_map;\n      EVar4 = quantum_info->endian;\n      sVar6 = quantum_info->pad;\n      sVar21 = image->number_channels;\n      iVar18 = pPVar28[1].offset;\n      iVar5 = pPVar28[2].offset;\n      iVar7 = pPVar28->offset;\n      PVar8 = pPVar28[4].traits;\n      iVar27 = 0;\n      do {\n        uVar15 = *(ushort *)((int)p + 4);\n        uVar26 = *(ushort *)((int)p + 6);\n        uVar2 = *(ushort *)p;\n        uVar3 = *(ushort *)((int)p + 2);\n        if (EVar4 == LSBEndian) {\n          q[iVar7] = (double)uVar2;\n          q[iVar18] = (double)uVar3;\n          q[iVar5] = (double)uVar15;\n        }\n        else {\n          uVar26 = uVar26 << 8 | uVar26 >> 8;\n          q[iVar7] = (double)(ushort)(uVar2 << 8 | uVar2 >> 8);\n          q[iVar18] = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n          q[iVar5] = (double)(ushort)(uVar15 << 8 | uVar15 >> 8);\n        }\n        if (PVar8 != UndefinedPixelTrait) {\n          q[pPVar28[4].offset] = (double)(fVar29 - (float)uVar26);\n        }\n        p = (uchar *)((int)p + sVar6 + 8);\n        iVar27 = iVar27 + 1;\n        q = q + sVar21;\n      } while (iVar27 != (int)number_pixels);\n    }\n    break;\n  case 0x18:\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if (0 < (int)number_pixels) {\n        iVar18 = 0;\n        do {\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,p,&pixel);\n          q[image->channel_map->offset] = (double)pixel;\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel);\n          q[image->channel_map[1].offset] = (double)pixel;\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel);\n          q[image->channel_map[2].offset] = (double)pixel;\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel);\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            q[image->channel_map[4].offset] = (double)(DAT_0029f710 - pixel);\n          }\n          p = puVar19 + quantum_info->pad;\n          iVar18 = iVar18 + 1;\n          q = q + image->number_channels;\n        } while (iVar18 != (int)number_pixels);\n      }\n      break;\n    }\n    goto LAB_001616dd;\n  case 0x20:\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if (0 < (int)number_pixels) {\n        pPVar28 = image->channel_map;\n        local_5c = (double *)0x0;\n        sVar6 = quantum_info->pad;\n        EVar4 = quantum_info->endian;\n        sVar21 = image->number_channels;\n        do {\n          local_64 = *(float *)p;\n          if (EVar4 != LSBEndian) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)p + 1),*(byte *)((int)p + 2))\n                                       ,*(byte *)((int)p + 3));\n          }\n          fVar30 = (local_64 - (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar29 = fVar14;\n          if ((fVar14 <= fVar30) && (fVar29 = DAT_002c5828, fVar30 <= DAT_002c5828)) {\n            fVar29 = fVar30;\n          }\n          q[pPVar28->offset] = (double)fVar29;\n          if (EVar4 == LSBEndian) {\n            fVar29 = *(float *)((int)p + 4);\n          }\n          else {\n            fVar29 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)((int)p + 4) << 0x18) >> 0x10\n                                                      ) | (ushort)*(byte *)((int)p + 5),\n                                              *(byte *)((int)p + 6)),*(byte *)((int)p + 7));\n          }\n          fVar29 = (fVar29 - (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar30 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)) {\n            fVar30 = fVar29;\n          }\n          q[pPVar28[1].offset] = (double)fVar30;\n          if (EVar4 == LSBEndian) {\n            local_60 = *(float *)((int)p + 8);\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)((int)p + 8) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)p + 9),\n                                                *(byte *)((int)p + 10)),*(byte *)((int)p + 0xb));\n          }\n          fVar29 = (local_60 - (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar30 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)) {\n            fVar30 = fVar29;\n          }\n          q[pPVar28[2].offset] = (double)fVar30;\n          if (EVar4 == LSBEndian) {\n            fVar29 = *(float *)((int)p + 0xc);\n            local_6c = SUB41(fVar29,0);\n            bStack_6b = (byte)((uint)fVar29 >> 8);\n            uStack_6a = (ushort)((uint)fVar29 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)((int)p + 0xc) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)p + 0xd);\n            bStack_6b = *(byte *)((int)p + 0xe);\n            local_6c = *(byte *)((int)p + 0xf);\n          }\n          fVar29 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar30 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)) {\n            fVar30 = fVar29;\n          }\n          if (pPVar28[4].traits != UndefinedPixelTrait) {\n            q[pPVar28[4].offset] = (double)(DAT_0029f710 - fVar30);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          p = (uchar *)((int)p + sVar6 + 0x10);\n          q = q + sVar21;\n        } while (local_5c != (double *)(int)number_pixels);\n      }\n      break;\n    }\nLAB_001616dd:\n    if (0 < (int)number_pixels) {\n      pPVar28 = image->channel_map;\n      EVar4 = quantum_info->endian;\n      sVar6 = quantum_info->pad;\n      sVar21 = image->number_channels;\n      iVar18 = pPVar28->offset;\n      iVar5 = pPVar28[1].offset;\n      iVar7 = pPVar28[2].offset;\n      PVar8 = pPVar28[4].traits;\n      iVar27 = 0;\n      do {\n        fVar29 = DAT_002a7fec;\n        uVar23 = *(uint *)((int)p + 0xc);\n        uVar25 = *(uint *)((int)p + 4);\n        uVar22 = *(uint *)((int)p + 8);\n        uVar17 = *(uint *)p;\n        if (EVar4 == LSBEndian) {\n          q[iVar18] = (double)((float)uVar17 / DAT_002a7fec);\n          q[iVar5] = (double)((float)uVar25 / fVar29);\n          q[iVar7] = (double)((float)uVar22 / fVar29);\n        }\n        else {\n          uVar15 = (ushort)(uVar17 >> 8);\n          uStack_6a = uVar15 & 0xff | (ushort)((uVar17 << 0x18) >> 0x10);\n          uVar23 = uVar23 >> 0x18 | (uVar23 & 0xff0000) >> 8 | (uVar23 & 0xff00) << 8 |\n                   uVar23 << 0x18;\n          q[iVar18] = (double)((float)CONCAT22(uStack_6a,\n                                               (ushort)(byte)(uVar17 >> 0x18) | uVar15 & 0xff00) /\n                              fVar30);\n          q[iVar5] = (double)((float)(uVar25 >> 0x18 | (uVar25 & 0xff0000) >> 8 |\n                                      (uVar25 & 0xff00) << 8 | uVar25 << 0x18) / fVar30);\n          q[iVar7] = (double)((float)(uVar22 >> 0x18 | (uVar22 & 0xff0000) >> 8 |\n                                      (uVar22 & 0xff00) << 8 | uVar22 << 0x18) / fVar30);\n        }\n        if (PVar8 != UndefinedPixelTrait) {\n          q[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)uVar23 / DAT_002a7fec);\n        }\n        p = (uchar *)((int)p + sVar6 + 0x10);\n        iVar27 = iVar27 + 1;\n        q = q + sVar21;\n      } while (iVar27 != (int)number_pixels);\n    }\n    break;\n  case 0x40:\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if (0 < (int)number_pixels) {\n        iVar18 = 0;\n        do {\n          puVar19 = PushDoublePixel(quantum_info,p,(double *)&pixel);\n          q[image->channel_map->offset] = (Quantum)CONCAT44(uStack_28,pixel);\n          puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel);\n          q[image->channel_map[1].offset] = (Quantum)CONCAT44(uStack_28,pixel);\n          puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel);\n          q[image->channel_map[2].offset] = (Quantum)CONCAT44(uStack_28,pixel);\n          puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel);\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            q[image->channel_map[4].offset] =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,pixel));\n          }\n          p = puVar19 + quantum_info->pad;\n          iVar18 = iVar18 + 1;\n          q = q + image->number_channels;\n        } while (iVar18 != (int)number_pixels);\n      }\n      break;\n    }\nLAB_00161285:\n    uVar25 = 0;\n    if (uVar23 < 0x41) {\n      uVar25 = uVar23;\n    }\n    bVar20 = (byte)(uVar25 - 1);\n    bVar9 = bVar20 & 0x1f;\n    uVar16 = 2 << (bVar20 & 0x1f);\n    uVar17 = uVar16;\n    uVar22 = 0 << bVar9 | 2U >> 0x20 - bVar9;\n    if ((uVar25 - 1 & 0x20) != 0) {\n      uVar17 = 0;\n      uVar22 = uVar16;\n    }\n    iVar18 = uVar17 - 1;\n    iStack_68 = (uVar22 - 1) + (uint)(uVar17 != 0);\n    local_6c = (byte)iVar18;\n    bStack_6b = (byte)((uint)iVar18 >> 8);\n    uStack_6a = (ushort)((uint)iVar18 >> 0x10);\nLAB_001612bc:\n    if (0 < (int)number_pixels) {\n      pPVar28 = image->channel_map;\n      local_64 = 0.0;\n      iVar18 = pPVar28->offset;\n      iVar5 = pPVar28[1].offset;\n      sVar6 = image->number_channels;\n      do {\n        pdVar24 = local_78 + iVar18;\n        if ((int)uVar23 < 1) {\n          fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (iStack_68 < 0) {\n            fVar29 = fVar29 + DAT_0029f714;\n          }\n          local_3c = (double)fVar29;\n          if (local_3c < dVar12) {\n            *pdVar24 = 0.0;\n          }\n          else {\n            dVar11 = 0.0;\nLAB_00161f72:\n            *pdVar24 = ((double)DAT_0029f718 / local_3c) * dVar11 * (double)DAT_0029f710;\n            if (0 < (int)uVar23) goto LAB_00161938;\n          }\n          dVar11 = 0.0;\n          local_5c = local_78 + pPVar28[2].offset;\nLAB_00161a0c:\n          dVar10 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar10 = (double)DAT_0029f718 / local_3c;\n          }\n          local_78[iVar5] = dVar10 * dVar11 * (double)DAT_0029f710;\n          if (0 < (int)uVar23) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar11 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar11 = 0.0;\nLAB_00161c0a:\n          dVar10 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar10 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar11 = dVar10 * dVar11 * (double)DAT_0029f710;\n        }\n        else {\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              (quantum_info->state).pixel = uVar17;\n              sVar21 = 8;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = sVar21;\n            if (uVar25 <= sVar21) {\n              uVar16 = uVar25;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          if ((iStack_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar22)) {\n            *pdVar24 = (double)DAT_0029f710;\n          }\n          else {\n            dVar11 = (double)uVar22;\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar24 = dVar11 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              sVar21 = 8;\n              (quantum_info->state).pixel = uVar17;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = sVar21;\n            if (uVar25 <= sVar21) {\n              uVar16 = uVar25;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          local_5c = local_78 + pPVar28[2].offset;\n          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            goto LAB_00161a0c;\n          }\n          local_78[iVar5] = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              (quantum_info->state).pixel = uVar17;\n              sVar21 = 8;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = uVar25;\n            if (sVar21 <= uVar25) {\n              uVar16 = sVar21;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar11 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar23 < 1) {\n                dVar11 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar11 * (double)DAT_0029f710;\n            if (0 < (int)uVar23) goto LAB_00161b52;\n            dVar11 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              sVar21 = 8;\n              (quantum_info->state).pixel = uVar17;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = uVar25;\n            if (sVar21 <= uVar25) {\n              uVar16 = sVar21;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            goto LAB_00161c0a;\n          }\n          dVar11 = (double)DAT_0029f710;\n        }\n        if (pPVar28[4].traits != UndefinedPixelTrait) {\n          local_78[pPVar28[4].offset] = (double)DAT_0029f710 - dVar11;\n        }\n        local_64 = (float)((int)local_64 + 1);\n        local_78 = local_78 + sVar6;\n      } while (local_64 != (float)(int)number_pixels);\n    }\n  }" { (case_statement "case 8:\n    if (0 < (int)number_pixels) {\n      pPVar28 = image->channel_map;\n      sVar6 = image->number_channels;\n      iVar18 = pPVar28->offset;\n      iVar27 = 0;\n      iVar5 = pPVar28[1].offset;\n      iVar7 = pPVar28[2].offset;\n      PVar8 = pPVar28[4].traits;\n      sVar21 = quantum_info->pad;\n      do {\n        bVar9 = p[1];\n        bVar20 = p[2];\n        q[iVar18] = (double)((float)*p * fVar13);\n        q[iVar5] = (double)((float)bVar9 * fVar13);\n        q[iVar7] = (double)((float)bVar20 * fVar13);\n        if (PVar8 != UndefinedPixelTrait) {\n          q[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)p[3] * fVar13);\n        }\n        p = p + sVar21 + 4;\n        iVar27 = iVar27 + 1;\n        q = q + sVar6;\n      } while (iVar27 != (int)number_pixels);\n    }\n    break;" case number_literal : (if_statement "if (0 < (int)number_pixels) {\n      pPVar28 = image->channel_map;\n      sVar6 = image->number_channels;\n      iVar18 = pPVar28->offset;\n      iVar27 = 0;\n      iVar5 = pPVar28[1].offset;\n      iVar7 = pPVar28[2].offset;\n      PVar8 = pPVar28[4].traits;\n      sVar21 = quantum_info->pad;\n      do {\n        bVar9 = p[1];\n        bVar20 = p[2];\n        q[iVar18] = (double)((float)*p * fVar13);\n        q[iVar5] = (double)((float)bVar9 * fVar13);\n        q[iVar7] = (double)((float)bVar20 * fVar13);\n        if (PVar8 != UndefinedPixelTrait) {\n          q[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)p[3] * fVar13);\n        }\n        p = p + sVar21 + 4;\n        iVar27 = iVar27 + 1;\n        q = q + sVar6;\n      } while (iVar27 != (int)number_pixels);\n    }" if (parenthesized_expression "(0 < (int)number_pixels)" ( (binary_expression "0 < (int)number_pixels" number_literal < (cast_expression "(int)number_pixels" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      pPVar28 = image->channel_map;\n      sVar6 = image->number_channels;\n      iVar18 = pPVar28->offset;\n      iVar27 = 0;\n      iVar5 = pPVar28[1].offset;\n      iVar7 = pPVar28[2].offset;\n      PVar8 = pPVar28[4].traits;\n      sVar21 = quantum_info->pad;\n      do {\n        bVar9 = p[1];\n        bVar20 = p[2];\n        q[iVar18] = (double)((float)*p * fVar13);\n        q[iVar5] = (double)((float)bVar9 * fVar13);\n        q[iVar7] = (double)((float)bVar20 * fVar13);\n        if (PVar8 != UndefinedPixelTrait) {\n          q[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)p[3] * fVar13);\n        }\n        p = p + sVar21 + 4;\n        iVar27 = iVar27 + 1;\n        q = q + sVar6;\n      } while (iVar27 != (int)number_pixels);\n    }" { (expression_statement "pPVar28 = image->channel_map;" (assignment_expression "pPVar28 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) (expression_statement "sVar6 = image->number_channels;" (assignment_expression "sVar6 = image->number_channels" identifier = (field_expression "image->number_channels" identifier -> field_identifier)) ;) (expression_statement "iVar18 = pPVar28->offset;" (assignment_expression "iVar18 = pPVar28->offset" identifier = (field_expression "pPVar28->offset" identifier -> field_identifier)) ;) (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" identifier = number_literal) ;) (expression_statement "iVar5 = pPVar28[1].offset;" (assignment_expression "iVar5 = pPVar28[1].offset" identifier = (field_expression "pPVar28[1].offset" (subscript_expression "pPVar28[1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "iVar7 = pPVar28[2].offset;" (assignment_expression "iVar7 = pPVar28[2].offset" identifier = (field_expression "pPVar28[2].offset" (subscript_expression "pPVar28[2]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "PVar8 = pPVar28[4].traits;" (assignment_expression "PVar8 = pPVar28[4].traits" identifier = (field_expression "pPVar28[4].traits" (subscript_expression "pPVar28[4]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "sVar21 = quantum_info->pad;" (assignment_expression "sVar21 = quantum_info->pad" identifier = (field_expression "quantum_info->pad" identifier -> field_identifier)) ;) (do_statement "do {\n        bVar9 = p[1];\n        bVar20 = p[2];\n        q[iVar18] = (double)((float)*p * fVar13);\n        q[iVar5] = (double)((float)bVar9 * fVar13);\n        q[iVar7] = (double)((float)bVar20 * fVar13);\n        if (PVar8 != UndefinedPixelTrait) {\n          q[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)p[3] * fVar13);\n        }\n        p = p + sVar21 + 4;\n        iVar27 = iVar27 + 1;\n        q = q + sVar6;\n      } while (iVar27 != (int)number_pixels);" do (compound_statement "{\n        bVar9 = p[1];\n        bVar20 = p[2];\n        q[iVar18] = (double)((float)*p * fVar13);\n        q[iVar5] = (double)((float)bVar9 * fVar13);\n        q[iVar7] = (double)((float)bVar20 * fVar13);\n        if (PVar8 != UndefinedPixelTrait) {\n          q[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)p[3] * fVar13);\n        }\n        p = p + sVar21 + 4;\n        iVar27 = iVar27 + 1;\n        q = q + sVar6;\n      }" { (expression_statement "bVar9 = p[1];" (assignment_expression "bVar9 = p[1]" identifier = (subscript_expression "p[1]" identifier [ number_literal ])) ;) (expression_statement "bVar20 = p[2];" (assignment_expression "bVar20 = p[2]" identifier = (subscript_expression "p[2]" identifier [ number_literal ])) ;) (expression_statement "q[iVar18] = (double)((float)*p * fVar13);" (assignment_expression "q[iVar18] = (double)((float)*p * fVar13)" (subscript_expression "q[iVar18]" identifier [ identifier ]) = (cast_expression "(double)((float)*p * fVar13)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((float)*p * fVar13)" ( (binary_expression "(float)*p * fVar13" (cast_expression "(float)*p" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*p" * identifier)) * identifier) )))) ;) (expression_statement "q[iVar5] = (double)((float)bVar9 * fVar13);" (assignment_expression "q[iVar5] = (double)((float)bVar9 * fVar13)" (subscript_expression "q[iVar5]" identifier [ identifier ]) = (cast_expression "(double)((float)bVar9 * fVar13)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((float)bVar9 * fVar13)" ( (binary_expression "(float)bVar9 * fVar13" (cast_expression "(float)bVar9" ( (type_descriptor "float" primitive_type) ) identifier) * identifier) )))) ;) (expression_statement "q[iVar7] = (double)((float)bVar20 * fVar13);" (assignment_expression "q[iVar7] = (double)((float)bVar20 * fVar13)" (subscript_expression "q[iVar7]" identifier [ identifier ]) = (cast_expression "(double)((float)bVar20 * fVar13)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((float)bVar20 * fVar13)" ( (binary_expression "(float)bVar20 * fVar13" (cast_expression "(float)bVar20" ( (type_descriptor "float" primitive_type) ) identifier) * identifier) )))) ;) (if_statement "if (PVar8 != UndefinedPixelTrait) {\n          q[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)p[3] * fVar13);\n        }" if (parenthesized_expression "(PVar8 != UndefinedPixelTrait)" ( (binary_expression "PVar8 != UndefinedPixelTrait" identifier != identifier) )) (compound_statement "{\n          q[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)p[3] * fVar13);\n        }" { (expression_statement "q[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)p[3] * fVar13);" (assignment_expression "q[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)p[3] * fVar13)" (subscript_expression "q[pPVar28[4].offset]" identifier [ (field_expression "pPVar28[4].offset" (subscript_expression "pPVar28[4]" identifier [ number_literal ]) . field_identifier) ]) = (cast_expression "(double)(DAT_0029f710 - (float)p[3] * fVar13)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(DAT_0029f710 - (float)p[3] * fVar13)" ( (binary_expression "DAT_0029f710 - (float)p[3] * fVar13" identifier - (binary_expression "(float)p[3] * fVar13" (cast_expression "(float)p[3]" ( (type_descriptor "float" primitive_type) ) (subscript_expression "p[3]" identifier [ number_literal ])) * identifier)) )))) ;) })) (expression_statement "p = p + sVar21 + 4;" (assignment_expression "p = p + sVar21 + 4" identifier = (binary_expression "p + sVar21 + 4" (binary_expression "p + sVar21" identifier + identifier) + number_literal)) ;) (expression_statement "iVar27 = iVar27 + 1;" (assignment_expression "iVar27 = iVar27 + 1" identifier = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) (expression_statement "q = q + sVar6;" (assignment_expression "q = q + sVar6" identifier = (binary_expression "q + sVar6" identifier + identifier)) ;) }) while (parenthesized_expression "(iVar27 != (int)number_pixels)" ( (binary_expression "iVar27 != (int)number_pixels" identifier != (cast_expression "(int)number_pixels" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })) (break_statement "break;" break ;)) (case_statement "default:\n    local_6c = 0;\n    bStack_6b = 0;\n    uStack_6a = 0;\n    iStack_68 = 0;\n    if (uVar23 != 0) goto LAB_00161285;\n    goto LAB_001612bc;" default : (expression_statement "local_6c = 0;" (assignment_expression "local_6c = 0" identifier = number_literal) ;) (expression_statement "bStack_6b = 0;" (assignment_expression "bStack_6b = 0" identifier = number_literal) ;) (expression_statement "uStack_6a = 0;" (assignment_expression "uStack_6a = 0" identifier = number_literal) ;) (expression_statement "iStack_68 = 0;" (assignment_expression "iStack_68 = 0" identifier = number_literal) ;) (if_statement "if (uVar23 != 0) goto LAB_00161285;" if (parenthesized_expression "(uVar23 != 0)" ( (binary_expression "uVar23 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00161285;" goto statement_identifier ;)) (goto_statement "goto LAB_001612bc;" goto statement_identifier ;)) (case_statement "case 10:\n    if (quantum_info->pack == MagickFalse) {\n      if (0 < (int)number_pixels) {\n        uVar23 = 0;\n        local_6c = 0;\n        bStack_6b = 0;\n        uStack_6a = 0;\n        pPVar28 = image->channel_map;\n        sVar6 = quantum_info->pad;\n        sVar21 = image->number_channels;\n        uVar25 = 0;\n        do {\n          iVar18 = 0;\n          uVar22 = uVar25;\nLAB_001620a2:\n          if (uVar22 % 3 == 1) {\n            uVar25 = uVar23 >> 6 & 0xffc0;\nLAB_001620cb:\n            dVar12 = (double)uVar25;\n            if (iVar18 != 2) goto LAB_001620d7;\nLAB_00162130:\n            local_78[pPVar28[2].offset] = dVar12;\nLAB_001620f8:\n            uVar22 = uVar22 + 1;\n            iVar18 = iVar18 + 1;\n            goto LAB_001620a2;\n          }\n          if (uVar22 % 3 == 2) {\n            uVar25 = (uVar23 & 0xffc) << 4;\n            goto LAB_001620cb;\n          }\n          puVar1 = local_80 + 1;\n          uVar23 = *local_80;\n          if (quantum_info->endian != LSBEndian) {\n            uVar23 = uVar23 >> 0x18 | (uVar23 & 0xff0000) >> 8 | (uVar23 & 0xff00) << 8 |\n                     uVar23 << 0x18;\n          }\n          dVar12 = (double)((uVar23 >> 0x16) << 6);\n          local_80 = puVar1;\n          if (iVar18 == 2) goto LAB_00162130;\nLAB_001620d7:\n          uVar25 = uVar22 + 1;\n          if (iVar18 != 3) {\n            if (iVar18 == 1) {\n              local_78[pPVar28[1].offset] = dVar12;\n            }\n            else {\n              local_78[pPVar28->offset] = dVar12;\n              if (iVar18 == 3) goto LAB_0016217a;\n            }\n            goto LAB_001620f8;\n          }\n          if (pPVar28[4].traits != UndefinedPixelTrait) {\n            local_78[pPVar28[4].offset] = (double)DAT_0029f710 - dVar12;\n          }\nLAB_0016217a:\n          iVar18 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar18;\n          bStack_6b = (byte)((uint)iVar18 >> 8);\n          uStack_6a = (ushort)((uint)iVar18 >> 0x10);\n          local_80 = (uint *)((int)local_80 + sVar6);\n          local_78 = local_78 + sVar21;\n        } while (iVar18 != (int)number_pixels);\n      }\n    }\n    else if (0 < (int)number_pixels) {\n      pPVar28 = image->channel_map;\n      iVar18 = 0;\n      iVar5 = pPVar28->offset;\n      sVar6 = image->number_channels;\n      PVar8 = pPVar28[4].traits;\n      iVar7 = pPVar28[2].offset;\n      iVar27 = pPVar28[1].offset;\n      do {\n        uVar22 = 0;\n        uVar25 = 10;\n        uVar23 = (quantum_info->state).bits;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar23;\n          if (uVar25 <= uVar23) {\n            uVar16 = uVar25;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar25 = uVar25 - uVar16;\n          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar25);\n        (quantum_info->state).bits = uVar23;\n        local_78[iVar5] = (double)((uVar22 & 0x3ff) << 6);\n        uVar22 = 0;\n        uVar25 = 10;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar25;\n          if (uVar23 <= uVar25) {\n            uVar16 = uVar23;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar25 = uVar25 - uVar16;\n          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar25);\n        (quantum_info->state).bits = uVar23;\n        local_78[iVar27] = (double)((uVar22 & 0x3ff) << 6);\n        uVar22 = 0;\n        uVar25 = 10;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar25;\n          if (uVar23 <= uVar25) {\n            uVar16 = uVar23;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar25 = uVar25 - uVar16;\n          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar25);\n        uVar25 = 0;\n        (quantum_info->state).bits = uVar23;\n        local_78[iVar7] = (double)((uVar22 & 0x3ff) << 6);\n        uVar22 = 10;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar23;\n          if (uVar22 <= uVar23) {\n            uVar16 = uVar22;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar22 = uVar22 - uVar16;\n          uVar25 = uVar25 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar22);\n        (quantum_info->state).bits = uVar23;\n        if (PVar8 != UndefinedPixelTrait) {\n          local_78[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)((uVar25 & 0x3ff) << 6));\n        }\n        iVar18 = iVar18 + 1;\n        local_78 = local_78 + sVar6;\n      } while (iVar18 != (int)number_pixels);\n    }\n    break;" case number_literal : (if_statement "if (quantum_info->pack == MagickFalse) {\n      if (0 < (int)number_pixels) {\n        uVar23 = 0;\n        local_6c = 0;\n        bStack_6b = 0;\n        uStack_6a = 0;\n        pPVar28 = image->channel_map;\n        sVar6 = quantum_info->pad;\n        sVar21 = image->number_channels;\n        uVar25 = 0;\n        do {\n          iVar18 = 0;\n          uVar22 = uVar25;\nLAB_001620a2:\n          if (uVar22 % 3 == 1) {\n            uVar25 = uVar23 >> 6 & 0xffc0;\nLAB_001620cb:\n            dVar12 = (double)uVar25;\n            if (iVar18 != 2) goto LAB_001620d7;\nLAB_00162130:\n            local_78[pPVar28[2].offset] = dVar12;\nLAB_001620f8:\n            uVar22 = uVar22 + 1;\n            iVar18 = iVar18 + 1;\n            goto LAB_001620a2;\n          }\n          if (uVar22 % 3 == 2) {\n            uVar25 = (uVar23 & 0xffc) << 4;\n            goto LAB_001620cb;\n          }\n          puVar1 = local_80 + 1;\n          uVar23 = *local_80;\n          if (quantum_info->endian != LSBEndian) {\n            uVar23 = uVar23 >> 0x18 | (uVar23 & 0xff0000) >> 8 | (uVar23 & 0xff00) << 8 |\n                     uVar23 << 0x18;\n          }\n          dVar12 = (double)((uVar23 >> 0x16) << 6);\n          local_80 = puVar1;\n          if (iVar18 == 2) goto LAB_00162130;\nLAB_001620d7:\n          uVar25 = uVar22 + 1;\n          if (iVar18 != 3) {\n            if (iVar18 == 1) {\n              local_78[pPVar28[1].offset] = dVar12;\n            }\n            else {\n              local_78[pPVar28->offset] = dVar12;\n              if (iVar18 == 3) goto LAB_0016217a;\n            }\n            goto LAB_001620f8;\n          }\n          if (pPVar28[4].traits != UndefinedPixelTrait) {\n            local_78[pPVar28[4].offset] = (double)DAT_0029f710 - dVar12;\n          }\nLAB_0016217a:\n          iVar18 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar18;\n          bStack_6b = (byte)((uint)iVar18 >> 8);\n          uStack_6a = (ushort)((uint)iVar18 >> 0x10);\n          local_80 = (uint *)((int)local_80 + sVar6);\n          local_78 = local_78 + sVar21;\n        } while (iVar18 != (int)number_pixels);\n      }\n    }\n    else if (0 < (int)number_pixels) {\n      pPVar28 = image->channel_map;\n      iVar18 = 0;\n      iVar5 = pPVar28->offset;\n      sVar6 = image->number_channels;\n      PVar8 = pPVar28[4].traits;\n      iVar7 = pPVar28[2].offset;\n      iVar27 = pPVar28[1].offset;\n      do {\n        uVar22 = 0;\n        uVar25 = 10;\n        uVar23 = (quantum_info->state).bits;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar23;\n          if (uVar25 <= uVar23) {\n            uVar16 = uVar25;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar25 = uVar25 - uVar16;\n          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar25);\n        (quantum_info->state).bits = uVar23;\n        local_78[iVar5] = (double)((uVar22 & 0x3ff) << 6);\n        uVar22 = 0;\n        uVar25 = 10;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar25;\n          if (uVar23 <= uVar25) {\n            uVar16 = uVar23;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar25 = uVar25 - uVar16;\n          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar25);\n        (quantum_info->state).bits = uVar23;\n        local_78[iVar27] = (double)((uVar22 & 0x3ff) << 6);\n        uVar22 = 0;\n        uVar25 = 10;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar25;\n          if (uVar23 <= uVar25) {\n            uVar16 = uVar23;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar25 = uVar25 - uVar16;\n          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar25);\n        uVar25 = 0;\n        (quantum_info->state).bits = uVar23;\n        local_78[iVar7] = (double)((uVar22 & 0x3ff) << 6);\n        uVar22 = 10;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar23;\n          if (uVar22 <= uVar23) {\n            uVar16 = uVar22;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar22 = uVar22 - uVar16;\n          uVar25 = uVar25 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar22);\n        (quantum_info->state).bits = uVar23;\n        if (PVar8 != UndefinedPixelTrait) {\n          local_78[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)((uVar25 & 0x3ff) << 6));\n        }\n        iVar18 = iVar18 + 1;\n        local_78 = local_78 + sVar6;\n      } while (iVar18 != (int)number_pixels);\n    }" if (parenthesized_expression "(quantum_info->pack == MagickFalse)" ( (binary_expression "quantum_info->pack == MagickFalse" (field_expression "quantum_info->pack" identifier -> field_identifier) == identifier) )) (compound_statement "{\n      if (0 < (int)number_pixels) {\n        uVar23 = 0;\n        local_6c = 0;\n        bStack_6b = 0;\n        uStack_6a = 0;\n        pPVar28 = image->channel_map;\n        sVar6 = quantum_info->pad;\n        sVar21 = image->number_channels;\n        uVar25 = 0;\n        do {\n          iVar18 = 0;\n          uVar22 = uVar25;\nLAB_001620a2:\n          if (uVar22 % 3 == 1) {\n            uVar25 = uVar23 >> 6 & 0xffc0;\nLAB_001620cb:\n            dVar12 = (double)uVar25;\n            if (iVar18 != 2) goto LAB_001620d7;\nLAB_00162130:\n            local_78[pPVar28[2].offset] = dVar12;\nLAB_001620f8:\n            uVar22 = uVar22 + 1;\n            iVar18 = iVar18 + 1;\n            goto LAB_001620a2;\n          }\n          if (uVar22 % 3 == 2) {\n            uVar25 = (uVar23 & 0xffc) << 4;\n            goto LAB_001620cb;\n          }\n          puVar1 = local_80 + 1;\n          uVar23 = *local_80;\n          if (quantum_info->endian != LSBEndian) {\n            uVar23 = uVar23 >> 0x18 | (uVar23 & 0xff0000) >> 8 | (uVar23 & 0xff00) << 8 |\n                     uVar23 << 0x18;\n          }\n          dVar12 = (double)((uVar23 >> 0x16) << 6);\n          local_80 = puVar1;\n          if (iVar18 == 2) goto LAB_00162130;\nLAB_001620d7:\n          uVar25 = uVar22 + 1;\n          if (iVar18 != 3) {\n            if (iVar18 == 1) {\n              local_78[pPVar28[1].offset] = dVar12;\n            }\n            else {\n              local_78[pPVar28->offset] = dVar12;\n              if (iVar18 == 3) goto LAB_0016217a;\n            }\n            goto LAB_001620f8;\n          }\n          if (pPVar28[4].traits != UndefinedPixelTrait) {\n            local_78[pPVar28[4].offset] = (double)DAT_0029f710 - dVar12;\n          }\nLAB_0016217a:\n          iVar18 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar18;\n          bStack_6b = (byte)((uint)iVar18 >> 8);\n          uStack_6a = (ushort)((uint)iVar18 >> 0x10);\n          local_80 = (uint *)((int)local_80 + sVar6);\n          local_78 = local_78 + sVar21;\n        } while (iVar18 != (int)number_pixels);\n      }\n    }" { (if_statement "if (0 < (int)number_pixels) {\n        uVar23 = 0;\n        local_6c = 0;\n        bStack_6b = 0;\n        uStack_6a = 0;\n        pPVar28 = image->channel_map;\n        sVar6 = quantum_info->pad;\n        sVar21 = image->number_channels;\n        uVar25 = 0;\n        do {\n          iVar18 = 0;\n          uVar22 = uVar25;\nLAB_001620a2:\n          if (uVar22 % 3 == 1) {\n            uVar25 = uVar23 >> 6 & 0xffc0;\nLAB_001620cb:\n            dVar12 = (double)uVar25;\n            if (iVar18 != 2) goto LAB_001620d7;\nLAB_00162130:\n            local_78[pPVar28[2].offset] = dVar12;\nLAB_001620f8:\n            uVar22 = uVar22 + 1;\n            iVar18 = iVar18 + 1;\n            goto LAB_001620a2;\n          }\n          if (uVar22 % 3 == 2) {\n            uVar25 = (uVar23 & 0xffc) << 4;\n            goto LAB_001620cb;\n          }\n          puVar1 = local_80 + 1;\n          uVar23 = *local_80;\n          if (quantum_info->endian != LSBEndian) {\n            uVar23 = uVar23 >> 0x18 | (uVar23 & 0xff0000) >> 8 | (uVar23 & 0xff00) << 8 |\n                     uVar23 << 0x18;\n          }\n          dVar12 = (double)((uVar23 >> 0x16) << 6);\n          local_80 = puVar1;\n          if (iVar18 == 2) goto LAB_00162130;\nLAB_001620d7:\n          uVar25 = uVar22 + 1;\n          if (iVar18 != 3) {\n            if (iVar18 == 1) {\n              local_78[pPVar28[1].offset] = dVar12;\n            }\n            else {\n              local_78[pPVar28->offset] = dVar12;\n              if (iVar18 == 3) goto LAB_0016217a;\n            }\n            goto LAB_001620f8;\n          }\n          if (pPVar28[4].traits != UndefinedPixelTrait) {\n            local_78[pPVar28[4].offset] = (double)DAT_0029f710 - dVar12;\n          }\nLAB_0016217a:\n          iVar18 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar18;\n          bStack_6b = (byte)((uint)iVar18 >> 8);\n          uStack_6a = (ushort)((uint)iVar18 >> 0x10);\n          local_80 = (uint *)((int)local_80 + sVar6);\n          local_78 = local_78 + sVar21;\n        } while (iVar18 != (int)number_pixels);\n      }" if (parenthesized_expression "(0 < (int)number_pixels)" ( (binary_expression "0 < (int)number_pixels" number_literal < (cast_expression "(int)number_pixels" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        uVar23 = 0;\n        local_6c = 0;\n        bStack_6b = 0;\n        uStack_6a = 0;\n        pPVar28 = image->channel_map;\n        sVar6 = quantum_info->pad;\n        sVar21 = image->number_channels;\n        uVar25 = 0;\n        do {\n          iVar18 = 0;\n          uVar22 = uVar25;\nLAB_001620a2:\n          if (uVar22 % 3 == 1) {\n            uVar25 = uVar23 >> 6 & 0xffc0;\nLAB_001620cb:\n            dVar12 = (double)uVar25;\n            if (iVar18 != 2) goto LAB_001620d7;\nLAB_00162130:\n            local_78[pPVar28[2].offset] = dVar12;\nLAB_001620f8:\n            uVar22 = uVar22 + 1;\n            iVar18 = iVar18 + 1;\n            goto LAB_001620a2;\n          }\n          if (uVar22 % 3 == 2) {\n            uVar25 = (uVar23 & 0xffc) << 4;\n            goto LAB_001620cb;\n          }\n          puVar1 = local_80 + 1;\n          uVar23 = *local_80;\n          if (quantum_info->endian != LSBEndian) {\n            uVar23 = uVar23 >> 0x18 | (uVar23 & 0xff0000) >> 8 | (uVar23 & 0xff00) << 8 |\n                     uVar23 << 0x18;\n          }\n          dVar12 = (double)((uVar23 >> 0x16) << 6);\n          local_80 = puVar1;\n          if (iVar18 == 2) goto LAB_00162130;\nLAB_001620d7:\n          uVar25 = uVar22 + 1;\n          if (iVar18 != 3) {\n            if (iVar18 == 1) {\n              local_78[pPVar28[1].offset] = dVar12;\n            }\n            else {\n              local_78[pPVar28->offset] = dVar12;\n              if (iVar18 == 3) goto LAB_0016217a;\n            }\n            goto LAB_001620f8;\n          }\n          if (pPVar28[4].traits != UndefinedPixelTrait) {\n            local_78[pPVar28[4].offset] = (double)DAT_0029f710 - dVar12;\n          }\nLAB_0016217a:\n          iVar18 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar18;\n          bStack_6b = (byte)((uint)iVar18 >> 8);\n          uStack_6a = (ushort)((uint)iVar18 >> 0x10);\n          local_80 = (uint *)((int)local_80 + sVar6);\n          local_78 = local_78 + sVar21;\n        } while (iVar18 != (int)number_pixels);\n      }" { (expression_statement "uVar23 = 0;" (assignment_expression "uVar23 = 0" identifier = number_literal) ;) (expression_statement "local_6c = 0;" (assignment_expression "local_6c = 0" identifier = number_literal) ;) (expression_statement "bStack_6b = 0;" (assignment_expression "bStack_6b = 0" identifier = number_literal) ;) (expression_statement "uStack_6a = 0;" (assignment_expression "uStack_6a = 0" identifier = number_literal) ;) (expression_statement "pPVar28 = image->channel_map;" (assignment_expression "pPVar28 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) (expression_statement "sVar6 = quantum_info->pad;" (assignment_expression "sVar6 = quantum_info->pad" identifier = (field_expression "quantum_info->pad" identifier -> field_identifier)) ;) (expression_statement "sVar21 = image->number_channels;" (assignment_expression "sVar21 = image->number_channels" identifier = (field_expression "image->number_channels" identifier -> field_identifier)) ;) (expression_statement "uVar25 = 0;" (assignment_expression "uVar25 = 0" identifier = number_literal) ;) (do_statement "do {\n          iVar18 = 0;\n          uVar22 = uVar25;\nLAB_001620a2:\n          if (uVar22 % 3 == 1) {\n            uVar25 = uVar23 >> 6 & 0xffc0;\nLAB_001620cb:\n            dVar12 = (double)uVar25;\n            if (iVar18 != 2) goto LAB_001620d7;\nLAB_00162130:\n            local_78[pPVar28[2].offset] = dVar12;\nLAB_001620f8:\n            uVar22 = uVar22 + 1;\n            iVar18 = iVar18 + 1;\n            goto LAB_001620a2;\n          }\n          if (uVar22 % 3 == 2) {\n            uVar25 = (uVar23 & 0xffc) << 4;\n            goto LAB_001620cb;\n          }\n          puVar1 = local_80 + 1;\n          uVar23 = *local_80;\n          if (quantum_info->endian != LSBEndian) {\n            uVar23 = uVar23 >> 0x18 | (uVar23 & 0xff0000) >> 8 | (uVar23 & 0xff00) << 8 |\n                     uVar23 << 0x18;\n          }\n          dVar12 = (double)((uVar23 >> 0x16) << 6);\n          local_80 = puVar1;\n          if (iVar18 == 2) goto LAB_00162130;\nLAB_001620d7:\n          uVar25 = uVar22 + 1;\n          if (iVar18 != 3) {\n            if (iVar18 == 1) {\n              local_78[pPVar28[1].offset] = dVar12;\n            }\n            else {\n              local_78[pPVar28->offset] = dVar12;\n              if (iVar18 == 3) goto LAB_0016217a;\n            }\n            goto LAB_001620f8;\n          }\n          if (pPVar28[4].traits != UndefinedPixelTrait) {\n            local_78[pPVar28[4].offset] = (double)DAT_0029f710 - dVar12;\n          }\nLAB_0016217a:\n          iVar18 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar18;\n          bStack_6b = (byte)((uint)iVar18 >> 8);\n          uStack_6a = (ushort)((uint)iVar18 >> 0x10);\n          local_80 = (uint *)((int)local_80 + sVar6);\n          local_78 = local_78 + sVar21;\n        } while (iVar18 != (int)number_pixels);" do (compound_statement "{\n          iVar18 = 0;\n          uVar22 = uVar25;\nLAB_001620a2:\n          if (uVar22 % 3 == 1) {\n            uVar25 = uVar23 >> 6 & 0xffc0;\nLAB_001620cb:\n            dVar12 = (double)uVar25;\n            if (iVar18 != 2) goto LAB_001620d7;\nLAB_00162130:\n            local_78[pPVar28[2].offset] = dVar12;\nLAB_001620f8:\n            uVar22 = uVar22 + 1;\n            iVar18 = iVar18 + 1;\n            goto LAB_001620a2;\n          }\n          if (uVar22 % 3 == 2) {\n            uVar25 = (uVar23 & 0xffc) << 4;\n            goto LAB_001620cb;\n          }\n          puVar1 = local_80 + 1;\n          uVar23 = *local_80;\n          if (quantum_info->endian != LSBEndian) {\n            uVar23 = uVar23 >> 0x18 | (uVar23 & 0xff0000) >> 8 | (uVar23 & 0xff00) << 8 |\n                     uVar23 << 0x18;\n          }\n          dVar12 = (double)((uVar23 >> 0x16) << 6);\n          local_80 = puVar1;\n          if (iVar18 == 2) goto LAB_00162130;\nLAB_001620d7:\n          uVar25 = uVar22 + 1;\n          if (iVar18 != 3) {\n            if (iVar18 == 1) {\n              local_78[pPVar28[1].offset] = dVar12;\n            }\n            else {\n              local_78[pPVar28->offset] = dVar12;\n              if (iVar18 == 3) goto LAB_0016217a;\n            }\n            goto LAB_001620f8;\n          }\n          if (pPVar28[4].traits != UndefinedPixelTrait) {\n            local_78[pPVar28[4].offset] = (double)DAT_0029f710 - dVar12;\n          }\nLAB_0016217a:\n          iVar18 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar18;\n          bStack_6b = (byte)((uint)iVar18 >> 8);\n          uStack_6a = (ushort)((uint)iVar18 >> 0x10);\n          local_80 = (uint *)((int)local_80 + sVar6);\n          local_78 = local_78 + sVar21;\n        }" { (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" identifier = number_literal) ;) (expression_statement "uVar22 = uVar25;" (assignment_expression "uVar22 = uVar25" identifier = identifier) ;) (labeled_statement "LAB_001620a2:\n          if (uVar22 % 3 == 1) {\n            uVar25 = uVar23 >> 6 & 0xffc0;\nLAB_001620cb:\n            dVar12 = (double)uVar25;\n            if (iVar18 != 2) goto LAB_001620d7;\nLAB_00162130:\n            local_78[pPVar28[2].offset] = dVar12;\nLAB_001620f8:\n            uVar22 = uVar22 + 1;\n            iVar18 = iVar18 + 1;\n            goto LAB_001620a2;\n          }" statement_identifier : (if_statement "if (uVar22 % 3 == 1) {\n            uVar25 = uVar23 >> 6 & 0xffc0;\nLAB_001620cb:\n            dVar12 = (double)uVar25;\n            if (iVar18 != 2) goto LAB_001620d7;\nLAB_00162130:\n            local_78[pPVar28[2].offset] = dVar12;\nLAB_001620f8:\n            uVar22 = uVar22 + 1;\n            iVar18 = iVar18 + 1;\n            goto LAB_001620a2;\n          }" if (parenthesized_expression "(uVar22 % 3 == 1)" ( (binary_expression "uVar22 % 3 == 1" (binary_expression "uVar22 % 3" identifier % number_literal) == number_literal) )) (compound_statement "{\n            uVar25 = uVar23 >> 6 & 0xffc0;\nLAB_001620cb:\n            dVar12 = (double)uVar25;\n            if (iVar18 != 2) goto LAB_001620d7;\nLAB_00162130:\n            local_78[pPVar28[2].offset] = dVar12;\nLAB_001620f8:\n            uVar22 = uVar22 + 1;\n            iVar18 = iVar18 + 1;\n            goto LAB_001620a2;\n          }" { (expression_statement "uVar25 = uVar23 >> 6 & 0xffc0;" (assignment_expression "uVar25 = uVar23 >> 6 & 0xffc0" identifier = (binary_expression "uVar23 >> 6 & 0xffc0" (binary_expression "uVar23 >> 6" identifier >> number_literal) & number_literal)) ;) (labeled_statement "LAB_001620cb:\n            dVar12 = (double)uVar25;" statement_identifier : (expression_statement "dVar12 = (double)uVar25;" (assignment_expression "dVar12 = (double)uVar25" identifier = (cast_expression "(double)uVar25" ( (type_descriptor "double" primitive_type) ) identifier)) ;)) (if_statement "if (iVar18 != 2) goto LAB_001620d7;" if (parenthesized_expression "(iVar18 != 2)" ( (binary_expression "iVar18 != 2" identifier != number_literal) )) (goto_statement "goto LAB_001620d7;" goto statement_identifier ;)) (labeled_statement "LAB_00162130:\n            local_78[pPVar28[2].offset] = dVar12;" statement_identifier : (expression_statement "local_78[pPVar28[2].offset] = dVar12;" (assignment_expression "local_78[pPVar28[2].offset] = dVar12" (subscript_expression "local_78[pPVar28[2].offset]" identifier [ (field_expression "pPVar28[2].offset" (subscript_expression "pPVar28[2]" identifier [ number_literal ]) . field_identifier) ]) = identifier) ;)) (labeled_statement "LAB_001620f8:\n            uVar22 = uVar22 + 1;" statement_identifier : (expression_statement "uVar22 = uVar22 + 1;" (assignment_expression "uVar22 = uVar22 + 1" identifier = (binary_expression "uVar22 + 1" identifier + number_literal)) ;)) (expression_statement "iVar18 = iVar18 + 1;" (assignment_expression "iVar18 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_001620a2;" goto statement_identifier ;) }))) (if_statement "if (uVar22 % 3 == 2) {\n            uVar25 = (uVar23 & 0xffc) << 4;\n            goto LAB_001620cb;\n          }" if (parenthesized_expression "(uVar22 % 3 == 2)" ( (binary_expression "uVar22 % 3 == 2" (binary_expression "uVar22 % 3" identifier % number_literal) == number_literal) )) (compound_statement "{\n            uVar25 = (uVar23 & 0xffc) << 4;\n            goto LAB_001620cb;\n          }" { (expression_statement "uVar25 = (uVar23 & 0xffc) << 4;" (assignment_expression "uVar25 = (uVar23 & 0xffc) << 4" identifier = (binary_expression "(uVar23 & 0xffc) << 4" (parenthesized_expression "(uVar23 & 0xffc)" ( (binary_expression "uVar23 & 0xffc" identifier & number_literal) )) << number_literal)) ;) (goto_statement "goto LAB_001620cb;" goto statement_identifier ;) })) (expression_statement "puVar1 = local_80 + 1;" (assignment_expression "puVar1 = local_80 + 1" identifier = (binary_expression "local_80 + 1" identifier + number_literal)) ;) (expression_statement "uVar23 = *local_80;" (assignment_expression "uVar23 = *local_80" identifier = (pointer_expression "*local_80" * identifier)) ;) (if_statement "if (quantum_info->endian != LSBEndian) {\n            uVar23 = uVar23 >> 0x18 | (uVar23 & 0xff0000) >> 8 | (uVar23 & 0xff00) << 8 |\n                     uVar23 << 0x18;\n          }" if (parenthesized_expression "(quantum_info->endian != LSBEndian)" ( (binary_expression "quantum_info->endian != LSBEndian" (field_expression "quantum_info->endian" identifier -> field_identifier) != identifier) )) (compound_statement "{\n            uVar23 = uVar23 >> 0x18 | (uVar23 & 0xff0000) >> 8 | (uVar23 & 0xff00) << 8 |\n                     uVar23 << 0x18;\n          }" { (expression_statement "uVar23 = uVar23 >> 0x18 | (uVar23 & 0xff0000) >> 8 | (uVar23 & 0xff00) << 8 |\n                     uVar23 << 0x18;" (assignment_expression "uVar23 = uVar23 >> 0x18 | (uVar23 & 0xff0000) >> 8 | (uVar23 & 0xff00) << 8 |\n                     uVar23 << 0x18" identifier = (binary_expression "uVar23 >> 0x18 | (uVar23 & 0xff0000) >> 8 | (uVar23 & 0xff00) << 8 |\n                     uVar23 << 0x18" (binary_expression "uVar23 >> 0x18 | (uVar23 & 0xff0000) >> 8 | (uVar23 & 0xff00) << 8" (binary_expression "uVar23 >> 0x18 | (uVar23 & 0xff0000) >> 8" (binary_expression "uVar23 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar23 & 0xff0000) >> 8" (parenthesized_expression "(uVar23 & 0xff0000)" ( (binary_expression "uVar23 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar23 & 0xff00) << 8" (parenthesized_expression "(uVar23 & 0xff00)" ( (binary_expression "uVar23 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar23 << 0x18" identifier << number_literal))) ;) })) (expression_statement "dVar12 = (double)((uVar23 >> 0x16) << 6);" (assignment_expression "dVar12 = (double)((uVar23 >> 0x16) << 6)" identifier = (cast_expression "(double)((uVar23 >> 0x16) << 6)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((uVar23 >> 0x16) << 6)" ( (binary_expression "(uVar23 >> 0x16) << 6" (parenthesized_expression "(uVar23 >> 0x16)" ( (binary_expression "uVar23 >> 0x16" identifier >> number_literal) )) << number_literal) )))) ;) (expression_statement "local_80 = puVar1;" (assignment_expression "local_80 = puVar1" identifier = identifier) ;) (if_statement "if (iVar18 == 2) goto LAB_00162130;" if (parenthesized_expression "(iVar18 == 2)" ( (binary_expression "iVar18 == 2" identifier == number_literal) )) (goto_statement "goto LAB_00162130;" goto statement_identifier ;)) (labeled_statement "LAB_001620d7:\n          uVar25 = uVar22 + 1;" statement_identifier : (expression_statement "uVar25 = uVar22 + 1;" (assignment_expression "uVar25 = uVar22 + 1" identifier = (binary_expression "uVar22 + 1" identifier + number_literal)) ;)) (if_statement "if (iVar18 != 3) {\n            if (iVar18 == 1) {\n              local_78[pPVar28[1].offset] = dVar12;\n            }\n            else {\n              local_78[pPVar28->offset] = dVar12;\n              if (iVar18 == 3) goto LAB_0016217a;\n            }\n            goto LAB_001620f8;\n          }" if (parenthesized_expression "(iVar18 != 3)" ( (binary_expression "iVar18 != 3" identifier != number_literal) )) (compound_statement "{\n            if (iVar18 == 1) {\n              local_78[pPVar28[1].offset] = dVar12;\n            }\n            else {\n              local_78[pPVar28->offset] = dVar12;\n              if (iVar18 == 3) goto LAB_0016217a;\n            }\n            goto LAB_001620f8;\n          }" { (if_statement "if (iVar18 == 1) {\n              local_78[pPVar28[1].offset] = dVar12;\n            }\n            else {\n              local_78[pPVar28->offset] = dVar12;\n              if (iVar18 == 3) goto LAB_0016217a;\n            }" if (parenthesized_expression "(iVar18 == 1)" ( (binary_expression "iVar18 == 1" identifier == number_literal) )) (compound_statement "{\n              local_78[pPVar28[1].offset] = dVar12;\n            }" { (expression_statement "local_78[pPVar28[1].offset] = dVar12;" (assignment_expression "local_78[pPVar28[1].offset] = dVar12" (subscript_expression "local_78[pPVar28[1].offset]" identifier [ (field_expression "pPVar28[1].offset" (subscript_expression "pPVar28[1]" identifier [ number_literal ]) . field_identifier) ]) = identifier) ;) }) (else_clause "else {\n              local_78[pPVar28->offset] = dVar12;\n              if (iVar18 == 3) goto LAB_0016217a;\n            }" else (compound_statement "{\n              local_78[pPVar28->offset] = dVar12;\n              if (iVar18 == 3) goto LAB_0016217a;\n            }" { (expression_statement "local_78[pPVar28->offset] = dVar12;" (assignment_expression "local_78[pPVar28->offset] = dVar12" (subscript_expression "local_78[pPVar28->offset]" identifier [ (field_expression "pPVar28->offset" identifier -> field_identifier) ]) = identifier) ;) (if_statement "if (iVar18 == 3) goto LAB_0016217a;" if (parenthesized_expression "(iVar18 == 3)" ( (binary_expression "iVar18 == 3" identifier == number_literal) )) (goto_statement "goto LAB_0016217a;" goto statement_identifier ;)) }))) (goto_statement "goto LAB_001620f8;" goto statement_identifier ;) })) (if_statement "if (pPVar28[4].traits != UndefinedPixelTrait) {\n            local_78[pPVar28[4].offset] = (double)DAT_0029f710 - dVar12;\n          }" if (parenthesized_expression "(pPVar28[4].traits != UndefinedPixelTrait)" ( (binary_expression "pPVar28[4].traits != UndefinedPixelTrait" (field_expression "pPVar28[4].traits" (subscript_expression "pPVar28[4]" identifier [ number_literal ]) . field_identifier) != identifier) )) (compound_statement "{\n            local_78[pPVar28[4].offset] = (double)DAT_0029f710 - dVar12;\n          }" { (expression_statement "local_78[pPVar28[4].offset] = (double)DAT_0029f710 - dVar12;" (assignment_expression "local_78[pPVar28[4].offset] = (double)DAT_0029f710 - dVar12" (subscript_expression "local_78[pPVar28[4].offset]" identifier [ (field_expression "pPVar28[4].offset" (subscript_expression "pPVar28[4]" identifier [ number_literal ]) . field_identifier) ]) = (binary_expression "(double)DAT_0029f710 - dVar12" (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier) - identifier)) ;) })) (labeled_statement "LAB_0016217a:\n          iVar18 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;" statement_identifier : (expression_statement "iVar18 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;" (assignment_expression "iVar18 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1" identifier = (binary_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1" (call_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" identifier (argument_list "(uStack_6a,CONCAT11(bStack_6b,local_6c))" ( identifier , (call_expression "CONCAT11(bStack_6b,local_6c)" identifier (argument_list "(bStack_6b,local_6c)" ( identifier , identifier ))) ))) + number_literal)) ;)) (expression_statement "local_6c = (byte)iVar18;" (assignment_expression "local_6c = (byte)iVar18" identifier = (cast_expression "(byte)iVar18" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "bStack_6b = (byte)((uint)iVar18 >> 8);" (assignment_expression "bStack_6b = (byte)((uint)iVar18 >> 8)" identifier = (call_expression "(byte)((uint)iVar18 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)iVar18 >> 8)" ( (binary_expression "(uint)iVar18 >> 8" (cast_expression "(uint)iVar18" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uStack_6a = (ushort)((uint)iVar18 >> 0x10);" (assignment_expression "uStack_6a = (ushort)((uint)iVar18 >> 0x10)" identifier = (call_expression "(ushort)((uint)iVar18 >> 0x10)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "((uint)iVar18 >> 0x10)" ( (binary_expression "(uint)iVar18 >> 0x10" (cast_expression "(uint)iVar18" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_80 = (uint *)((int)local_80 + sVar6);" (assignment_expression "local_80 = (uint *)((int)local_80 + sVar6)" identifier = (cast_expression "(uint *)((int)local_80 + sVar6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + sVar6)" ( (binary_expression "(int)local_80 + sVar6" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "local_78 = local_78 + sVar21;" (assignment_expression "local_78 = local_78 + sVar21" identifier = (binary_expression "local_78 + sVar21" identifier + identifier)) ;) }) while (parenthesized_expression "(iVar18 != (int)number_pixels)" ( (binary_expression "iVar18 != (int)number_pixels" identifier != (cast_expression "(int)number_pixels" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })) }) (else_clause "else if (0 < (int)number_pixels) {\n      pPVar28 = image->channel_map;\n      iVar18 = 0;\n      iVar5 = pPVar28->offset;\n      sVar6 = image->number_channels;\n      PVar8 = pPVar28[4].traits;\n      iVar7 = pPVar28[2].offset;\n      iVar27 = pPVar28[1].offset;\n      do {\n        uVar22 = 0;\n        uVar25 = 10;\n        uVar23 = (quantum_info->state).bits;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar23;\n          if (uVar25 <= uVar23) {\n            uVar16 = uVar25;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar25 = uVar25 - uVar16;\n          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar25);\n        (quantum_info->state).bits = uVar23;\n        local_78[iVar5] = (double)((uVar22 & 0x3ff) << 6);\n        uVar22 = 0;\n        uVar25 = 10;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar25;\n          if (uVar23 <= uVar25) {\n            uVar16 = uVar23;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar25 = uVar25 - uVar16;\n          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar25);\n        (quantum_info->state).bits = uVar23;\n        local_78[iVar27] = (double)((uVar22 & 0x3ff) << 6);\n        uVar22 = 0;\n        uVar25 = 10;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar25;\n          if (uVar23 <= uVar25) {\n            uVar16 = uVar23;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar25 = uVar25 - uVar16;\n          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar25);\n        uVar25 = 0;\n        (quantum_info->state).bits = uVar23;\n        local_78[iVar7] = (double)((uVar22 & 0x3ff) << 6);\n        uVar22 = 10;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar23;\n          if (uVar22 <= uVar23) {\n            uVar16 = uVar22;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar22 = uVar22 - uVar16;\n          uVar25 = uVar25 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar22);\n        (quantum_info->state).bits = uVar23;\n        if (PVar8 != UndefinedPixelTrait) {\n          local_78[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)((uVar25 & 0x3ff) << 6));\n        }\n        iVar18 = iVar18 + 1;\n        local_78 = local_78 + sVar6;\n      } while (iVar18 != (int)number_pixels);\n    }" else (if_statement "if (0 < (int)number_pixels) {\n      pPVar28 = image->channel_map;\n      iVar18 = 0;\n      iVar5 = pPVar28->offset;\n      sVar6 = image->number_channels;\n      PVar8 = pPVar28[4].traits;\n      iVar7 = pPVar28[2].offset;\n      iVar27 = pPVar28[1].offset;\n      do {\n        uVar22 = 0;\n        uVar25 = 10;\n        uVar23 = (quantum_info->state).bits;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar23;\n          if (uVar25 <= uVar23) {\n            uVar16 = uVar25;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar25 = uVar25 - uVar16;\n          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar25);\n        (quantum_info->state).bits = uVar23;\n        local_78[iVar5] = (double)((uVar22 & 0x3ff) << 6);\n        uVar22 = 0;\n        uVar25 = 10;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar25;\n          if (uVar23 <= uVar25) {\n            uVar16 = uVar23;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar25 = uVar25 - uVar16;\n          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar25);\n        (quantum_info->state).bits = uVar23;\n        local_78[iVar27] = (double)((uVar22 & 0x3ff) << 6);\n        uVar22 = 0;\n        uVar25 = 10;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar25;\n          if (uVar23 <= uVar25) {\n            uVar16 = uVar23;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar25 = uVar25 - uVar16;\n          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar25);\n        uVar25 = 0;\n        (quantum_info->state).bits = uVar23;\n        local_78[iVar7] = (double)((uVar22 & 0x3ff) << 6);\n        uVar22 = 10;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar23;\n          if (uVar22 <= uVar23) {\n            uVar16 = uVar22;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar22 = uVar22 - uVar16;\n          uVar25 = uVar25 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar22);\n        (quantum_info->state).bits = uVar23;\n        if (PVar8 != UndefinedPixelTrait) {\n          local_78[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)((uVar25 & 0x3ff) << 6));\n        }\n        iVar18 = iVar18 + 1;\n        local_78 = local_78 + sVar6;\n      } while (iVar18 != (int)number_pixels);\n    }" if (parenthesized_expression "(0 < (int)number_pixels)" ( (binary_expression "0 < (int)number_pixels" number_literal < (cast_expression "(int)number_pixels" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      pPVar28 = image->channel_map;\n      iVar18 = 0;\n      iVar5 = pPVar28->offset;\n      sVar6 = image->number_channels;\n      PVar8 = pPVar28[4].traits;\n      iVar7 = pPVar28[2].offset;\n      iVar27 = pPVar28[1].offset;\n      do {\n        uVar22 = 0;\n        uVar25 = 10;\n        uVar23 = (quantum_info->state).bits;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar23;\n          if (uVar25 <= uVar23) {\n            uVar16 = uVar25;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar25 = uVar25 - uVar16;\n          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar25);\n        (quantum_info->state).bits = uVar23;\n        local_78[iVar5] = (double)((uVar22 & 0x3ff) << 6);\n        uVar22 = 0;\n        uVar25 = 10;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar25;\n          if (uVar23 <= uVar25) {\n            uVar16 = uVar23;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar25 = uVar25 - uVar16;\n          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar25);\n        (quantum_info->state).bits = uVar23;\n        local_78[iVar27] = (double)((uVar22 & 0x3ff) << 6);\n        uVar22 = 0;\n        uVar25 = 10;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar25;\n          if (uVar23 <= uVar25) {\n            uVar16 = uVar23;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar25 = uVar25 - uVar16;\n          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar25);\n        uVar25 = 0;\n        (quantum_info->state).bits = uVar23;\n        local_78[iVar7] = (double)((uVar22 & 0x3ff) << 6);\n        uVar22 = 10;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar23;\n          if (uVar22 <= uVar23) {\n            uVar16 = uVar22;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar22 = uVar22 - uVar16;\n          uVar25 = uVar25 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar22);\n        (quantum_info->state).bits = uVar23;\n        if (PVar8 != UndefinedPixelTrait) {\n          local_78[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)((uVar25 & 0x3ff) << 6));\n        }\n        iVar18 = iVar18 + 1;\n        local_78 = local_78 + sVar6;\n      } while (iVar18 != (int)number_pixels);\n    }" { (expression_statement "pPVar28 = image->channel_map;" (assignment_expression "pPVar28 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" identifier = number_literal) ;) (expression_statement "iVar5 = pPVar28->offset;" (assignment_expression "iVar5 = pPVar28->offset" identifier = (field_expression "pPVar28->offset" identifier -> field_identifier)) ;) (expression_statement "sVar6 = image->number_channels;" (assignment_expression "sVar6 = image->number_channels" identifier = (field_expression "image->number_channels" identifier -> field_identifier)) ;) (expression_statement "PVar8 = pPVar28[4].traits;" (assignment_expression "PVar8 = pPVar28[4].traits" identifier = (field_expression "pPVar28[4].traits" (subscript_expression "pPVar28[4]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "iVar7 = pPVar28[2].offset;" (assignment_expression "iVar7 = pPVar28[2].offset" identifier = (field_expression "pPVar28[2].offset" (subscript_expression "pPVar28[2]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "iVar27 = pPVar28[1].offset;" (assignment_expression "iVar27 = pPVar28[1].offset" identifier = (field_expression "pPVar28[1].offset" (subscript_expression "pPVar28[1]" identifier [ number_literal ]) . field_identifier)) ;) (do_statement "do {\n        uVar22 = 0;\n        uVar25 = 10;\n        uVar23 = (quantum_info->state).bits;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar23;\n          if (uVar25 <= uVar23) {\n            uVar16 = uVar25;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar25 = uVar25 - uVar16;\n          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar25);\n        (quantum_info->state).bits = uVar23;\n        local_78[iVar5] = (double)((uVar22 & 0x3ff) << 6);\n        uVar22 = 0;\n        uVar25 = 10;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar25;\n          if (uVar23 <= uVar25) {\n            uVar16 = uVar23;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar25 = uVar25 - uVar16;\n          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar25);\n        (quantum_info->state).bits = uVar23;\n        local_78[iVar27] = (double)((uVar22 & 0x3ff) << 6);\n        uVar22 = 0;\n        uVar25 = 10;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar25;\n          if (uVar23 <= uVar25) {\n            uVar16 = uVar23;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar25 = uVar25 - uVar16;\n          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar25);\n        uVar25 = 0;\n        (quantum_info->state).bits = uVar23;\n        local_78[iVar7] = (double)((uVar22 & 0x3ff) << 6);\n        uVar22 = 10;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar23;\n          if (uVar22 <= uVar23) {\n            uVar16 = uVar22;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar22 = uVar22 - uVar16;\n          uVar25 = uVar25 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar22);\n        (quantum_info->state).bits = uVar23;\n        if (PVar8 != UndefinedPixelTrait) {\n          local_78[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)((uVar25 & 0x3ff) << 6));\n        }\n        iVar18 = iVar18 + 1;\n        local_78 = local_78 + sVar6;\n      } while (iVar18 != (int)number_pixels);" do (compound_statement "{\n        uVar22 = 0;\n        uVar25 = 10;\n        uVar23 = (quantum_info->state).bits;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar23;\n          if (uVar25 <= uVar23) {\n            uVar16 = uVar25;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar25 = uVar25 - uVar16;\n          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar25);\n        (quantum_info->state).bits = uVar23;\n        local_78[iVar5] = (double)((uVar22 & 0x3ff) << 6);\n        uVar22 = 0;\n        uVar25 = 10;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar25;\n          if (uVar23 <= uVar25) {\n            uVar16 = uVar23;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar25 = uVar25 - uVar16;\n          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar25);\n        (quantum_info->state).bits = uVar23;\n        local_78[iVar27] = (double)((uVar22 & 0x3ff) << 6);\n        uVar22 = 0;\n        uVar25 = 10;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar25;\n          if (uVar23 <= uVar25) {\n            uVar16 = uVar23;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar25 = uVar25 - uVar16;\n          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar25);\n        uVar25 = 0;\n        (quantum_info->state).bits = uVar23;\n        local_78[iVar7] = (double)((uVar22 & 0x3ff) << 6);\n        uVar22 = 10;\n        do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar23;\n          if (uVar22 <= uVar23) {\n            uVar16 = uVar22;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar22 = uVar22 - uVar16;\n          uVar25 = uVar25 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar22);\n        (quantum_info->state).bits = uVar23;\n        if (PVar8 != UndefinedPixelTrait) {\n          local_78[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)((uVar25 & 0x3ff) << 6));\n        }\n        iVar18 = iVar18 + 1;\n        local_78 = local_78 + sVar6;\n      }" { (expression_statement "uVar22 = 0;" (assignment_expression "uVar22 = 0" identifier = number_literal) ;) (expression_statement "uVar25 = 10;" (assignment_expression "uVar25 = 10" identifier = number_literal) ;) (expression_statement "uVar23 = (quantum_info->state).bits;" (assignment_expression "uVar23 = (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)) ;) (do_statement "do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar23;\n          if (uVar25 <= uVar23) {\n            uVar16 = uVar25;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar25 = uVar25 - uVar16;\n          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar25);" do (compound_statement "{\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar23;\n          if (uVar25 <= uVar23) {\n            uVar16 = uVar25;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar25 = uVar25 - uVar16;\n          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        }" { (if_statement "if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }" if (parenthesized_expression "(uVar23 == 0)" ( (binary_expression "uVar23 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }" { (expression_statement "uVar17 = (uint)(byte)*local_80;" (assignment_expression "uVar17 = (uint)(byte)*local_80" identifier = (binary_expression "(uint)(byte)*local_80" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) * identifier)) ;) (expression_statement "local_80 = (uint *)((int)local_80 + 1);" (assignment_expression "local_80 = (uint *)((int)local_80 + 1)" identifier = (cast_expression "(uint *)((int)local_80 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + 1)" ( (binary_expression "(int)local_80 + 1" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar23 = 8;" (assignment_expression "uVar23 = 8" identifier = number_literal) ;) (expression_statement "(quantum_info->state).pixel = uVar17;" (assignment_expression "(quantum_info->state).pixel = uVar17" (field_expression "(quantum_info->state).pixel" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) }) (else_clause "else {\n            uVar17 = (quantum_info->state).pixel;\n          }" else (compound_statement "{\n            uVar17 = (quantum_info->state).pixel;\n          }" { (expression_statement "uVar17 = (quantum_info->state).pixel;" (assignment_expression "uVar17 = (quantum_info->state).pixel" identifier = (field_expression "(quantum_info->state).pixel" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier)) ;) }))) (expression_statement "uVar16 = uVar23;" (assignment_expression "uVar16 = uVar23" identifier = identifier) ;) (if_statement "if (uVar25 <= uVar23) {\n            uVar16 = uVar25;\n          }" if (parenthesized_expression "(uVar25 <= uVar23)" ( (binary_expression "uVar25 <= uVar23" identifier <= identifier) )) (compound_statement "{\n            uVar16 = uVar25;\n          }" { (expression_statement "uVar16 = uVar25;" (assignment_expression "uVar16 = uVar25" identifier = identifier) ;) })) (expression_statement "uVar23 = uVar23 - uVar16;" (assignment_expression "uVar23 = uVar23 - uVar16" identifier = (binary_expression "uVar23 - uVar16" identifier - identifier)) ;) (expression_statement "uVar25 = uVar25 - uVar16;" (assignment_expression "uVar25 = uVar25 - uVar16" identifier = (binary_expression "uVar25 - uVar16" identifier - identifier)) ;) (expression_statement "uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);" (assignment_expression "uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f)" identifier = (binary_expression "uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f)" (binary_expression "uVar22 << ((byte)uVar16 & 0x1f)" identifier << (parenthesized_expression "((byte)uVar16 & 0x1f)" ( (binary_expression "(byte)uVar16 & 0x1f" (cast_expression "(byte)uVar16" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) | (binary_expression "~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f)" (unary_expression "~(-1 << ((byte)uVar16 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar16 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar16 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar16 & 0x1f)" ( (binary_expression "(byte)uVar16 & 0x1f" (cast_expression "(byte)uVar16" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & (binary_expression "uVar17 >> ((byte)uVar23 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar23 & 0x1f)" ( (binary_expression "(byte)uVar23 & 0x1f" (cast_expression "(byte)uVar23" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))))) ;) }) while (parenthesized_expression "(0 < (int)uVar25)" ( (binary_expression "0 < (int)uVar25" number_literal < (cast_expression "(int)uVar25" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "(quantum_info->state).bits = uVar23;" (assignment_expression "(quantum_info->state).bits = uVar23" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "local_78[iVar5] = (double)((uVar22 & 0x3ff) << 6);" (assignment_expression "local_78[iVar5] = (double)((uVar22 & 0x3ff) << 6)" (subscript_expression "local_78[iVar5]" identifier [ identifier ]) = (cast_expression "(double)((uVar22 & 0x3ff) << 6)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((uVar22 & 0x3ff) << 6)" ( (binary_expression "(uVar22 & 0x3ff) << 6" (parenthesized_expression "(uVar22 & 0x3ff)" ( (binary_expression "uVar22 & 0x3ff" identifier & number_literal) )) << number_literal) )))) ;) (expression_statement "uVar22 = 0;" (assignment_expression "uVar22 = 0" identifier = number_literal) ;) (expression_statement "uVar25 = 10;" (assignment_expression "uVar25 = 10" identifier = number_literal) ;) (do_statement "do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar25;\n          if (uVar23 <= uVar25) {\n            uVar16 = uVar23;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar25 = uVar25 - uVar16;\n          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar25);" do (compound_statement "{\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar25;\n          if (uVar23 <= uVar25) {\n            uVar16 = uVar23;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar25 = uVar25 - uVar16;\n          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        }" { (if_statement "if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }" if (parenthesized_expression "(uVar23 == 0)" ( (binary_expression "uVar23 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }" { (expression_statement "uVar17 = (uint)(byte)*local_80;" (assignment_expression "uVar17 = (uint)(byte)*local_80" identifier = (binary_expression "(uint)(byte)*local_80" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) * identifier)) ;) (expression_statement "local_80 = (uint *)((int)local_80 + 1);" (assignment_expression "local_80 = (uint *)((int)local_80 + 1)" identifier = (cast_expression "(uint *)((int)local_80 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + 1)" ( (binary_expression "(int)local_80 + 1" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar23 = 8;" (assignment_expression "uVar23 = 8" identifier = number_literal) ;) (expression_statement "(quantum_info->state).pixel = uVar17;" (assignment_expression "(quantum_info->state).pixel = uVar17" (field_expression "(quantum_info->state).pixel" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) }) (else_clause "else {\n            uVar17 = (quantum_info->state).pixel;\n          }" else (compound_statement "{\n            uVar17 = (quantum_info->state).pixel;\n          }" { (expression_statement "uVar17 = (quantum_info->state).pixel;" (assignment_expression "uVar17 = (quantum_info->state).pixel" identifier = (field_expression "(quantum_info->state).pixel" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier)) ;) }))) (expression_statement "uVar16 = uVar25;" (assignment_expression "uVar16 = uVar25" identifier = identifier) ;) (if_statement "if (uVar23 <= uVar25) {\n            uVar16 = uVar23;\n          }" if (parenthesized_expression "(uVar23 <= uVar25)" ( (binary_expression "uVar23 <= uVar25" identifier <= identifier) )) (compound_statement "{\n            uVar16 = uVar23;\n          }" { (expression_statement "uVar16 = uVar23;" (assignment_expression "uVar16 = uVar23" identifier = identifier) ;) })) (expression_statement "uVar23 = uVar23 - uVar16;" (assignment_expression "uVar23 = uVar23 - uVar16" identifier = (binary_expression "uVar23 - uVar16" identifier - identifier)) ;) (expression_statement "uVar25 = uVar25 - uVar16;" (assignment_expression "uVar25 = uVar25 - uVar16" identifier = (binary_expression "uVar25 - uVar16" identifier - identifier)) ;) (expression_statement "uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);" (assignment_expression "uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f)" identifier = (binary_expression "uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f)" (binary_expression "uVar22 << ((byte)uVar16 & 0x1f)" identifier << (parenthesized_expression "((byte)uVar16 & 0x1f)" ( (binary_expression "(byte)uVar16 & 0x1f" (cast_expression "(byte)uVar16" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) | (binary_expression "~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f)" (unary_expression "~(-1 << ((byte)uVar16 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar16 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar16 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar16 & 0x1f)" ( (binary_expression "(byte)uVar16 & 0x1f" (cast_expression "(byte)uVar16" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & (binary_expression "uVar17 >> ((byte)uVar23 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar23 & 0x1f)" ( (binary_expression "(byte)uVar23 & 0x1f" (cast_expression "(byte)uVar23" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))))) ;) }) while (parenthesized_expression "(0 < (int)uVar25)" ( (binary_expression "0 < (int)uVar25" number_literal < (cast_expression "(int)uVar25" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "(quantum_info->state).bits = uVar23;" (assignment_expression "(quantum_info->state).bits = uVar23" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "local_78[iVar27] = (double)((uVar22 & 0x3ff) << 6);" (assignment_expression "local_78[iVar27] = (double)((uVar22 & 0x3ff) << 6)" (subscript_expression "local_78[iVar27]" identifier [ identifier ]) = (cast_expression "(double)((uVar22 & 0x3ff) << 6)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((uVar22 & 0x3ff) << 6)" ( (binary_expression "(uVar22 & 0x3ff) << 6" (parenthesized_expression "(uVar22 & 0x3ff)" ( (binary_expression "uVar22 & 0x3ff" identifier & number_literal) )) << number_literal) )))) ;) (expression_statement "uVar22 = 0;" (assignment_expression "uVar22 = 0" identifier = number_literal) ;) (expression_statement "uVar25 = 10;" (assignment_expression "uVar25 = 10" identifier = number_literal) ;) (do_statement "do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar25;\n          if (uVar23 <= uVar25) {\n            uVar16 = uVar23;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar25 = uVar25 - uVar16;\n          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar25);" do (compound_statement "{\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar25;\n          if (uVar23 <= uVar25) {\n            uVar16 = uVar23;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar25 = uVar25 - uVar16;\n          uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        }" { (if_statement "if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }" if (parenthesized_expression "(uVar23 == 0)" ( (binary_expression "uVar23 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }" { (expression_statement "uVar17 = (uint)(byte)*local_80;" (assignment_expression "uVar17 = (uint)(byte)*local_80" identifier = (binary_expression "(uint)(byte)*local_80" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) * identifier)) ;) (expression_statement "local_80 = (uint *)((int)local_80 + 1);" (assignment_expression "local_80 = (uint *)((int)local_80 + 1)" identifier = (cast_expression "(uint *)((int)local_80 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + 1)" ( (binary_expression "(int)local_80 + 1" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar23 = 8;" (assignment_expression "uVar23 = 8" identifier = number_literal) ;) (expression_statement "(quantum_info->state).pixel = uVar17;" (assignment_expression "(quantum_info->state).pixel = uVar17" (field_expression "(quantum_info->state).pixel" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) }) (else_clause "else {\n            uVar17 = (quantum_info->state).pixel;\n          }" else (compound_statement "{\n            uVar17 = (quantum_info->state).pixel;\n          }" { (expression_statement "uVar17 = (quantum_info->state).pixel;" (assignment_expression "uVar17 = (quantum_info->state).pixel" identifier = (field_expression "(quantum_info->state).pixel" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier)) ;) }))) (expression_statement "uVar16 = uVar25;" (assignment_expression "uVar16 = uVar25" identifier = identifier) ;) (if_statement "if (uVar23 <= uVar25) {\n            uVar16 = uVar23;\n          }" if (parenthesized_expression "(uVar23 <= uVar25)" ( (binary_expression "uVar23 <= uVar25" identifier <= identifier) )) (compound_statement "{\n            uVar16 = uVar23;\n          }" { (expression_statement "uVar16 = uVar23;" (assignment_expression "uVar16 = uVar23" identifier = identifier) ;) })) (expression_statement "uVar23 = uVar23 - uVar16;" (assignment_expression "uVar23 = uVar23 - uVar16" identifier = (binary_expression "uVar23 - uVar16" identifier - identifier)) ;) (expression_statement "uVar25 = uVar25 - uVar16;" (assignment_expression "uVar25 = uVar25 - uVar16" identifier = (binary_expression "uVar25 - uVar16" identifier - identifier)) ;) (expression_statement "uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);" (assignment_expression "uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f)" identifier = (binary_expression "uVar22 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f)" (binary_expression "uVar22 << ((byte)uVar16 & 0x1f)" identifier << (parenthesized_expression "((byte)uVar16 & 0x1f)" ( (binary_expression "(byte)uVar16 & 0x1f" (cast_expression "(byte)uVar16" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) | (binary_expression "~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f)" (unary_expression "~(-1 << ((byte)uVar16 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar16 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar16 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar16 & 0x1f)" ( (binary_expression "(byte)uVar16 & 0x1f" (cast_expression "(byte)uVar16" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & (binary_expression "uVar17 >> ((byte)uVar23 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar23 & 0x1f)" ( (binary_expression "(byte)uVar23 & 0x1f" (cast_expression "(byte)uVar23" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))))) ;) }) while (parenthesized_expression "(0 < (int)uVar25)" ( (binary_expression "0 < (int)uVar25" number_literal < (cast_expression "(int)uVar25" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "uVar25 = 0;" (assignment_expression "uVar25 = 0" identifier = number_literal) ;) (expression_statement "(quantum_info->state).bits = uVar23;" (assignment_expression "(quantum_info->state).bits = uVar23" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "local_78[iVar7] = (double)((uVar22 & 0x3ff) << 6);" (assignment_expression "local_78[iVar7] = (double)((uVar22 & 0x3ff) << 6)" (subscript_expression "local_78[iVar7]" identifier [ identifier ]) = (cast_expression "(double)((uVar22 & 0x3ff) << 6)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((uVar22 & 0x3ff) << 6)" ( (binary_expression "(uVar22 & 0x3ff) << 6" (parenthesized_expression "(uVar22 & 0x3ff)" ( (binary_expression "uVar22 & 0x3ff" identifier & number_literal) )) << number_literal) )))) ;) (expression_statement "uVar22 = 10;" (assignment_expression "uVar22 = 10" identifier = number_literal) ;) (do_statement "do {\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar23;\n          if (uVar22 <= uVar23) {\n            uVar16 = uVar22;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar22 = uVar22 - uVar16;\n          uVar25 = uVar25 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        } while (0 < (int)uVar22);" do (compound_statement "{\n          if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }\n          uVar16 = uVar23;\n          if (uVar22 <= uVar23) {\n            uVar16 = uVar22;\n          }\n          uVar23 = uVar23 - uVar16;\n          uVar22 = uVar22 - uVar16;\n          uVar25 = uVar25 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);\n        }" { (if_statement "if (uVar23 == 0) {\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }\n          else {\n            uVar17 = (quantum_info->state).pixel;\n          }" if (parenthesized_expression "(uVar23 == 0)" ( (binary_expression "uVar23 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar17 = (uint)(byte)*local_80;\n            local_80 = (uint *)((int)local_80 + 1);\n            uVar23 = 8;\n            (quantum_info->state).pixel = uVar17;\n          }" { (expression_statement "uVar17 = (uint)(byte)*local_80;" (assignment_expression "uVar17 = (uint)(byte)*local_80" identifier = (binary_expression "(uint)(byte)*local_80" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) * identifier)) ;) (expression_statement "local_80 = (uint *)((int)local_80 + 1);" (assignment_expression "local_80 = (uint *)((int)local_80 + 1)" identifier = (cast_expression "(uint *)((int)local_80 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + 1)" ( (binary_expression "(int)local_80 + 1" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar23 = 8;" (assignment_expression "uVar23 = 8" identifier = number_literal) ;) (expression_statement "(quantum_info->state).pixel = uVar17;" (assignment_expression "(quantum_info->state).pixel = uVar17" (field_expression "(quantum_info->state).pixel" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) }) (else_clause "else {\n            uVar17 = (quantum_info->state).pixel;\n          }" else (compound_statement "{\n            uVar17 = (quantum_info->state).pixel;\n          }" { (expression_statement "uVar17 = (quantum_info->state).pixel;" (assignment_expression "uVar17 = (quantum_info->state).pixel" identifier = (field_expression "(quantum_info->state).pixel" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier)) ;) }))) (expression_statement "uVar16 = uVar23;" (assignment_expression "uVar16 = uVar23" identifier = identifier) ;) (if_statement "if (uVar22 <= uVar23) {\n            uVar16 = uVar22;\n          }" if (parenthesized_expression "(uVar22 <= uVar23)" ( (binary_expression "uVar22 <= uVar23" identifier <= identifier) )) (compound_statement "{\n            uVar16 = uVar22;\n          }" { (expression_statement "uVar16 = uVar22;" (assignment_expression "uVar16 = uVar22" identifier = identifier) ;) })) (expression_statement "uVar23 = uVar23 - uVar16;" (assignment_expression "uVar23 = uVar23 - uVar16" identifier = (binary_expression "uVar23 - uVar16" identifier - identifier)) ;) (expression_statement "uVar22 = uVar22 - uVar16;" (assignment_expression "uVar22 = uVar22 - uVar16" identifier = (binary_expression "uVar22 - uVar16" identifier - identifier)) ;) (expression_statement "uVar25 = uVar25 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f);" (assignment_expression "uVar25 = uVar25 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f)" identifier = (binary_expression "uVar25 << ((byte)uVar16 & 0x1f) |\n                   ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f)" (binary_expression "uVar25 << ((byte)uVar16 & 0x1f)" identifier << (parenthesized_expression "((byte)uVar16 & 0x1f)" ( (binary_expression "(byte)uVar16 & 0x1f" (cast_expression "(byte)uVar16" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) | (binary_expression "~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)uVar23 & 0x1f)" (unary_expression "~(-1 << ((byte)uVar16 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar16 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar16 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar16 & 0x1f)" ( (binary_expression "(byte)uVar16 & 0x1f" (cast_expression "(byte)uVar16" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & (binary_expression "uVar17 >> ((byte)uVar23 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar23 & 0x1f)" ( (binary_expression "(byte)uVar23 & 0x1f" (cast_expression "(byte)uVar23" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))))) ;) }) while (parenthesized_expression "(0 < (int)uVar22)" ( (binary_expression "0 < (int)uVar22" number_literal < (cast_expression "(int)uVar22" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "(quantum_info->state).bits = uVar23;" (assignment_expression "(quantum_info->state).bits = uVar23" (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 (PVar8 != UndefinedPixelTrait) {\n          local_78[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)((uVar25 & 0x3ff) << 6));\n        }" if (parenthesized_expression "(PVar8 != UndefinedPixelTrait)" ( (binary_expression "PVar8 != UndefinedPixelTrait" identifier != identifier) )) (compound_statement "{\n          local_78[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)((uVar25 & 0x3ff) << 6));\n        }" { (expression_statement "local_78[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)((uVar25 & 0x3ff) << 6));" (assignment_expression "local_78[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)((uVar25 & 0x3ff) << 6))" (subscript_expression "local_78[pPVar28[4].offset]" identifier [ (field_expression "pPVar28[4].offset" (subscript_expression "pPVar28[4]" identifier [ number_literal ]) . field_identifier) ]) = (cast_expression "(double)(DAT_0029f710 - (float)((uVar25 & 0x3ff) << 6))" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(DAT_0029f710 - (float)((uVar25 & 0x3ff) << 6))" ( (binary_expression "DAT_0029f710 - (float)((uVar25 & 0x3ff) << 6)" identifier - (cast_expression "(float)((uVar25 & 0x3ff) << 6)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((uVar25 & 0x3ff) << 6)" ( (binary_expression "(uVar25 & 0x3ff) << 6" (parenthesized_expression "(uVar25 & 0x3ff)" ( (binary_expression "uVar25 & 0x3ff" identifier & number_literal) )) << number_literal) )))) )))) ;) })) (expression_statement "iVar18 = iVar18 + 1;" (assignment_expression "iVar18 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ;) (expression_statement "local_78 = local_78 + sVar6;" (assignment_expression "local_78 = local_78 + sVar6" identifier = (binary_expression "local_78 + sVar6" identifier + identifier)) ;) }) while (parenthesized_expression "(iVar18 != (int)number_pixels)" ( (binary_expression "iVar18 != (int)number_pixels" identifier != (cast_expression "(int)number_pixels" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })))) (break_statement "break;" break ;)) (case_statement "case 0x10:\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if (0 < (int)number_pixels) {\n        iVar18 = 0;\n        EVar4 = quantum_info->endian;\n        do {\n          uVar15 = *(ushort *)p;\n          if (EVar4 == LSBEndian) {\n            fVar30 = HalfToSinglePrecision(uVar15);\n            fVar29 = DAT_0029f710;\n            pPVar28 = image->channel_map;\n            q[pPVar28->offset] = (double)(DAT_0029f710 * fVar30);\n            fVar30 = HalfToSinglePrecision(*(ushort *)((int)p + 2));\n            q[pPVar28[1].offset] = (double)(fVar30 * fVar29);\n            fVar30 = HalfToSinglePrecision(*(ushort *)((int)p + 4));\n            q[pPVar28[2].offset] = (double)(fVar30 * fVar29);\n            uVar15 = *(ushort *)((int)p + 6);\n          }\n          else {\n            fVar30 = HalfToSinglePrecision(uVar15 << 8 | uVar15 >> 8);\n            fVar29 = DAT_0029f710;\n            pPVar28 = image->channel_map;\n            q[pPVar28->offset] = (double)(DAT_0029f710 * fVar30);\n            fVar30 = HalfToSinglePrecision\n                               (*(ushort *)((int)p + 2) << 8 | *(ushort *)((int)p + 2) >> 8);\n            q[pPVar28[1].offset] = (double)(fVar30 * fVar29);\n            fVar30 = HalfToSinglePrecision\n                               (*(ushort *)((int)p + 4) << 8 | *(ushort *)((int)p + 4) >> 8);\n            q[pPVar28[2].offset] = (double)(fVar30 * fVar29);\n            uVar15 = *(ushort *)((int)p + 6) << 8 | *(ushort *)((int)p + 6) >> 8;\n          }\n          fVar29 = HalfToSinglePrecision(uVar15);\n          if (pPVar28[4].traits != UndefinedPixelTrait) {\n            q[pPVar28[4].offset] = (double)(DAT_0029f710 - fVar29 * DAT_0029f710);\n          }\n          iVar18 = iVar18 + 1;\n          p = (uchar *)((int)p + quantum_info->pad + 8);\n          q = q + image->number_channels;\n        } while (iVar18 != (int)number_pixels);\n      }\n    }\n    else if (0 < (int)number_pixels) {\n      pPVar28 = image->channel_map;\n      EVar4 = quantum_info->endian;\n      sVar6 = quantum_info->pad;\n      sVar21 = image->number_channels;\n      iVar18 = pPVar28[1].offset;\n      iVar5 = pPVar28[2].offset;\n      iVar7 = pPVar28->offset;\n      PVar8 = pPVar28[4].traits;\n      iVar27 = 0;\n      do {\n        uVar15 = *(ushort *)((int)p + 4);\n        uVar26 = *(ushort *)((int)p + 6);\n        uVar2 = *(ushort *)p;\n        uVar3 = *(ushort *)((int)p + 2);\n        if (EVar4 == LSBEndian) {\n          q[iVar7] = (double)uVar2;\n          q[iVar18] = (double)uVar3;\n          q[iVar5] = (double)uVar15;\n        }\n        else {\n          uVar26 = uVar26 << 8 | uVar26 >> 8;\n          q[iVar7] = (double)(ushort)(uVar2 << 8 | uVar2 >> 8);\n          q[iVar18] = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n          q[iVar5] = (double)(ushort)(uVar15 << 8 | uVar15 >> 8);\n        }\n        if (PVar8 != UndefinedPixelTrait) {\n          q[pPVar28[4].offset] = (double)(fVar29 - (float)uVar26);\n        }\n        p = (uchar *)((int)p + sVar6 + 8);\n        iVar27 = iVar27 + 1;\n        q = q + sVar21;\n      } while (iVar27 != (int)number_pixels);\n    }\n    break;" case number_literal : (if_statement "if (quantum_info->format == FloatingPointQuantumFormat) {\n      if (0 < (int)number_pixels) {\n        iVar18 = 0;\n        EVar4 = quantum_info->endian;\n        do {\n          uVar15 = *(ushort *)p;\n          if (EVar4 == LSBEndian) {\n            fVar30 = HalfToSinglePrecision(uVar15);\n            fVar29 = DAT_0029f710;\n            pPVar28 = image->channel_map;\n            q[pPVar28->offset] = (double)(DAT_0029f710 * fVar30);\n            fVar30 = HalfToSinglePrecision(*(ushort *)((int)p + 2));\n            q[pPVar28[1].offset] = (double)(fVar30 * fVar29);\n            fVar30 = HalfToSinglePrecision(*(ushort *)((int)p + 4));\n            q[pPVar28[2].offset] = (double)(fVar30 * fVar29);\n            uVar15 = *(ushort *)((int)p + 6);\n          }\n          else {\n            fVar30 = HalfToSinglePrecision(uVar15 << 8 | uVar15 >> 8);\n            fVar29 = DAT_0029f710;\n            pPVar28 = image->channel_map;\n            q[pPVar28->offset] = (double)(DAT_0029f710 * fVar30);\n            fVar30 = HalfToSinglePrecision\n                               (*(ushort *)((int)p + 2) << 8 | *(ushort *)((int)p + 2) >> 8);\n            q[pPVar28[1].offset] = (double)(fVar30 * fVar29);\n            fVar30 = HalfToSinglePrecision\n                               (*(ushort *)((int)p + 4) << 8 | *(ushort *)((int)p + 4) >> 8);\n            q[pPVar28[2].offset] = (double)(fVar30 * fVar29);\n            uVar15 = *(ushort *)((int)p + 6) << 8 | *(ushort *)((int)p + 6) >> 8;\n          }\n          fVar29 = HalfToSinglePrecision(uVar15);\n          if (pPVar28[4].traits != UndefinedPixelTrait) {\n            q[pPVar28[4].offset] = (double)(DAT_0029f710 - fVar29 * DAT_0029f710);\n          }\n          iVar18 = iVar18 + 1;\n          p = (uchar *)((int)p + quantum_info->pad + 8);\n          q = q + image->number_channels;\n        } while (iVar18 != (int)number_pixels);\n      }\n    }\n    else if (0 < (int)number_pixels) {\n      pPVar28 = image->channel_map;\n      EVar4 = quantum_info->endian;\n      sVar6 = quantum_info->pad;\n      sVar21 = image->number_channels;\n      iVar18 = pPVar28[1].offset;\n      iVar5 = pPVar28[2].offset;\n      iVar7 = pPVar28->offset;\n      PVar8 = pPVar28[4].traits;\n      iVar27 = 0;\n      do {\n        uVar15 = *(ushort *)((int)p + 4);\n        uVar26 = *(ushort *)((int)p + 6);\n        uVar2 = *(ushort *)p;\n        uVar3 = *(ushort *)((int)p + 2);\n        if (EVar4 == LSBEndian) {\n          q[iVar7] = (double)uVar2;\n          q[iVar18] = (double)uVar3;\n          q[iVar5] = (double)uVar15;\n        }\n        else {\n          uVar26 = uVar26 << 8 | uVar26 >> 8;\n          q[iVar7] = (double)(ushort)(uVar2 << 8 | uVar2 >> 8);\n          q[iVar18] = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n          q[iVar5] = (double)(ushort)(uVar15 << 8 | uVar15 >> 8);\n        }\n        if (PVar8 != UndefinedPixelTrait) {\n          q[pPVar28[4].offset] = (double)(fVar29 - (float)uVar26);\n        }\n        p = (uchar *)((int)p + sVar6 + 8);\n        iVar27 = iVar27 + 1;\n        q = q + sVar21;\n      } while (iVar27 != (int)number_pixels);\n    }" if (parenthesized_expression "(quantum_info->format == FloatingPointQuantumFormat)" ( (binary_expression "quantum_info->format == FloatingPointQuantumFormat" (field_expression "quantum_info->format" identifier -> field_identifier) == identifier) )) (compound_statement "{\n      if (0 < (int)number_pixels) {\n        iVar18 = 0;\n        EVar4 = quantum_info->endian;\n        do {\n          uVar15 = *(ushort *)p;\n          if (EVar4 == LSBEndian) {\n            fVar30 = HalfToSinglePrecision(uVar15);\n            fVar29 = DAT_0029f710;\n            pPVar28 = image->channel_map;\n            q[pPVar28->offset] = (double)(DAT_0029f710 * fVar30);\n            fVar30 = HalfToSinglePrecision(*(ushort *)((int)p + 2));\n            q[pPVar28[1].offset] = (double)(fVar30 * fVar29);\n            fVar30 = HalfToSinglePrecision(*(ushort *)((int)p + 4));\n            q[pPVar28[2].offset] = (double)(fVar30 * fVar29);\n            uVar15 = *(ushort *)((int)p + 6);\n          }\n          else {\n            fVar30 = HalfToSinglePrecision(uVar15 << 8 | uVar15 >> 8);\n            fVar29 = DAT_0029f710;\n            pPVar28 = image->channel_map;\n            q[pPVar28->offset] = (double)(DAT_0029f710 * fVar30);\n            fVar30 = HalfToSinglePrecision\n                               (*(ushort *)((int)p + 2) << 8 | *(ushort *)((int)p + 2) >> 8);\n            q[pPVar28[1].offset] = (double)(fVar30 * fVar29);\n            fVar30 = HalfToSinglePrecision\n                               (*(ushort *)((int)p + 4) << 8 | *(ushort *)((int)p + 4) >> 8);\n            q[pPVar28[2].offset] = (double)(fVar30 * fVar29);\n            uVar15 = *(ushort *)((int)p + 6) << 8 | *(ushort *)((int)p + 6) >> 8;\n          }\n          fVar29 = HalfToSinglePrecision(uVar15);\n          if (pPVar28[4].traits != UndefinedPixelTrait) {\n            q[pPVar28[4].offset] = (double)(DAT_0029f710 - fVar29 * DAT_0029f710);\n          }\n          iVar18 = iVar18 + 1;\n          p = (uchar *)((int)p + quantum_info->pad + 8);\n          q = q + image->number_channels;\n        } while (iVar18 != (int)number_pixels);\n      }\n    }" { (if_statement "if (0 < (int)number_pixels) {\n        iVar18 = 0;\n        EVar4 = quantum_info->endian;\n        do {\n          uVar15 = *(ushort *)p;\n          if (EVar4 == LSBEndian) {\n            fVar30 = HalfToSinglePrecision(uVar15);\n            fVar29 = DAT_0029f710;\n            pPVar28 = image->channel_map;\n            q[pPVar28->offset] = (double)(DAT_0029f710 * fVar30);\n            fVar30 = HalfToSinglePrecision(*(ushort *)((int)p + 2));\n            q[pPVar28[1].offset] = (double)(fVar30 * fVar29);\n            fVar30 = HalfToSinglePrecision(*(ushort *)((int)p + 4));\n            q[pPVar28[2].offset] = (double)(fVar30 * fVar29);\n            uVar15 = *(ushort *)((int)p + 6);\n          }\n          else {\n            fVar30 = HalfToSinglePrecision(uVar15 << 8 | uVar15 >> 8);\n            fVar29 = DAT_0029f710;\n            pPVar28 = image->channel_map;\n            q[pPVar28->offset] = (double)(DAT_0029f710 * fVar30);\n            fVar30 = HalfToSinglePrecision\n                               (*(ushort *)((int)p + 2) << 8 | *(ushort *)((int)p + 2) >> 8);\n            q[pPVar28[1].offset] = (double)(fVar30 * fVar29);\n            fVar30 = HalfToSinglePrecision\n                               (*(ushort *)((int)p + 4) << 8 | *(ushort *)((int)p + 4) >> 8);\n            q[pPVar28[2].offset] = (double)(fVar30 * fVar29);\n            uVar15 = *(ushort *)((int)p + 6) << 8 | *(ushort *)((int)p + 6) >> 8;\n          }\n          fVar29 = HalfToSinglePrecision(uVar15);\n          if (pPVar28[4].traits != UndefinedPixelTrait) {\n            q[pPVar28[4].offset] = (double)(DAT_0029f710 - fVar29 * DAT_0029f710);\n          }\n          iVar18 = iVar18 + 1;\n          p = (uchar *)((int)p + quantum_info->pad + 8);\n          q = q + image->number_channels;\n        } while (iVar18 != (int)number_pixels);\n      }" if (parenthesized_expression "(0 < (int)number_pixels)" ( (binary_expression "0 < (int)number_pixels" number_literal < (cast_expression "(int)number_pixels" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        iVar18 = 0;\n        EVar4 = quantum_info->endian;\n        do {\n          uVar15 = *(ushort *)p;\n          if (EVar4 == LSBEndian) {\n            fVar30 = HalfToSinglePrecision(uVar15);\n            fVar29 = DAT_0029f710;\n            pPVar28 = image->channel_map;\n            q[pPVar28->offset] = (double)(DAT_0029f710 * fVar30);\n            fVar30 = HalfToSinglePrecision(*(ushort *)((int)p + 2));\n            q[pPVar28[1].offset] = (double)(fVar30 * fVar29);\n            fVar30 = HalfToSinglePrecision(*(ushort *)((int)p + 4));\n            q[pPVar28[2].offset] = (double)(fVar30 * fVar29);\n            uVar15 = *(ushort *)((int)p + 6);\n          }\n          else {\n            fVar30 = HalfToSinglePrecision(uVar15 << 8 | uVar15 >> 8);\n            fVar29 = DAT_0029f710;\n            pPVar28 = image->channel_map;\n            q[pPVar28->offset] = (double)(DAT_0029f710 * fVar30);\n            fVar30 = HalfToSinglePrecision\n                               (*(ushort *)((int)p + 2) << 8 | *(ushort *)((int)p + 2) >> 8);\n            q[pPVar28[1].offset] = (double)(fVar30 * fVar29);\n            fVar30 = HalfToSinglePrecision\n                               (*(ushort *)((int)p + 4) << 8 | *(ushort *)((int)p + 4) >> 8);\n            q[pPVar28[2].offset] = (double)(fVar30 * fVar29);\n            uVar15 = *(ushort *)((int)p + 6) << 8 | *(ushort *)((int)p + 6) >> 8;\n          }\n          fVar29 = HalfToSinglePrecision(uVar15);\n          if (pPVar28[4].traits != UndefinedPixelTrait) {\n            q[pPVar28[4].offset] = (double)(DAT_0029f710 - fVar29 * DAT_0029f710);\n          }\n          iVar18 = iVar18 + 1;\n          p = (uchar *)((int)p + quantum_info->pad + 8);\n          q = q + image->number_channels;\n        } while (iVar18 != (int)number_pixels);\n      }" { (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" identifier = number_literal) ;) (expression_statement "EVar4 = quantum_info->endian;" (assignment_expression "EVar4 = quantum_info->endian" identifier = (field_expression "quantum_info->endian" identifier -> field_identifier)) ;) (do_statement "do {\n          uVar15 = *(ushort *)p;\n          if (EVar4 == LSBEndian) {\n            fVar30 = HalfToSinglePrecision(uVar15);\n            fVar29 = DAT_0029f710;\n            pPVar28 = image->channel_map;\n            q[pPVar28->offset] = (double)(DAT_0029f710 * fVar30);\n            fVar30 = HalfToSinglePrecision(*(ushort *)((int)p + 2));\n            q[pPVar28[1].offset] = (double)(fVar30 * fVar29);\n            fVar30 = HalfToSinglePrecision(*(ushort *)((int)p + 4));\n            q[pPVar28[2].offset] = (double)(fVar30 * fVar29);\n            uVar15 = *(ushort *)((int)p + 6);\n          }\n          else {\n            fVar30 = HalfToSinglePrecision(uVar15 << 8 | uVar15 >> 8);\n            fVar29 = DAT_0029f710;\n            pPVar28 = image->channel_map;\n            q[pPVar28->offset] = (double)(DAT_0029f710 * fVar30);\n            fVar30 = HalfToSinglePrecision\n                               (*(ushort *)((int)p + 2) << 8 | *(ushort *)((int)p + 2) >> 8);\n            q[pPVar28[1].offset] = (double)(fVar30 * fVar29);\n            fVar30 = HalfToSinglePrecision\n                               (*(ushort *)((int)p + 4) << 8 | *(ushort *)((int)p + 4) >> 8);\n            q[pPVar28[2].offset] = (double)(fVar30 * fVar29);\n            uVar15 = *(ushort *)((int)p + 6) << 8 | *(ushort *)((int)p + 6) >> 8;\n          }\n          fVar29 = HalfToSinglePrecision(uVar15);\n          if (pPVar28[4].traits != UndefinedPixelTrait) {\n            q[pPVar28[4].offset] = (double)(DAT_0029f710 - fVar29 * DAT_0029f710);\n          }\n          iVar18 = iVar18 + 1;\n          p = (uchar *)((int)p + quantum_info->pad + 8);\n          q = q + image->number_channels;\n        } while (iVar18 != (int)number_pixels);" do (compound_statement "{\n          uVar15 = *(ushort *)p;\n          if (EVar4 == LSBEndian) {\n            fVar30 = HalfToSinglePrecision(uVar15);\n            fVar29 = DAT_0029f710;\n            pPVar28 = image->channel_map;\n            q[pPVar28->offset] = (double)(DAT_0029f710 * fVar30);\n            fVar30 = HalfToSinglePrecision(*(ushort *)((int)p + 2));\n            q[pPVar28[1].offset] = (double)(fVar30 * fVar29);\n            fVar30 = HalfToSinglePrecision(*(ushort *)((int)p + 4));\n            q[pPVar28[2].offset] = (double)(fVar30 * fVar29);\n            uVar15 = *(ushort *)((int)p + 6);\n          }\n          else {\n            fVar30 = HalfToSinglePrecision(uVar15 << 8 | uVar15 >> 8);\n            fVar29 = DAT_0029f710;\n            pPVar28 = image->channel_map;\n            q[pPVar28->offset] = (double)(DAT_0029f710 * fVar30);\n            fVar30 = HalfToSinglePrecision\n                               (*(ushort *)((int)p + 2) << 8 | *(ushort *)((int)p + 2) >> 8);\n            q[pPVar28[1].offset] = (double)(fVar30 * fVar29);\n            fVar30 = HalfToSinglePrecision\n                               (*(ushort *)((int)p + 4) << 8 | *(ushort *)((int)p + 4) >> 8);\n            q[pPVar28[2].offset] = (double)(fVar30 * fVar29);\n            uVar15 = *(ushort *)((int)p + 6) << 8 | *(ushort *)((int)p + 6) >> 8;\n          }\n          fVar29 = HalfToSinglePrecision(uVar15);\n          if (pPVar28[4].traits != UndefinedPixelTrait) {\n            q[pPVar28[4].offset] = (double)(DAT_0029f710 - fVar29 * DAT_0029f710);\n          }\n          iVar18 = iVar18 + 1;\n          p = (uchar *)((int)p + quantum_info->pad + 8);\n          q = q + image->number_channels;\n        }" { (expression_statement "uVar15 = *(ushort *)p;" (assignment_expression "uVar15 = *(ushort *)p" identifier = (pointer_expression "*(ushort *)p" * (cast_expression "(ushort *)p" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (EVar4 == LSBEndian) {\n            fVar30 = HalfToSinglePrecision(uVar15);\n            fVar29 = DAT_0029f710;\n            pPVar28 = image->channel_map;\n            q[pPVar28->offset] = (double)(DAT_0029f710 * fVar30);\n            fVar30 = HalfToSinglePrecision(*(ushort *)((int)p + 2));\n            q[pPVar28[1].offset] = (double)(fVar30 * fVar29);\n            fVar30 = HalfToSinglePrecision(*(ushort *)((int)p + 4));\n            q[pPVar28[2].offset] = (double)(fVar30 * fVar29);\n            uVar15 = *(ushort *)((int)p + 6);\n          }\n          else {\n            fVar30 = HalfToSinglePrecision(uVar15 << 8 | uVar15 >> 8);\n            fVar29 = DAT_0029f710;\n            pPVar28 = image->channel_map;\n            q[pPVar28->offset] = (double)(DAT_0029f710 * fVar30);\n            fVar30 = HalfToSinglePrecision\n                               (*(ushort *)((int)p + 2) << 8 | *(ushort *)((int)p + 2) >> 8);\n            q[pPVar28[1].offset] = (double)(fVar30 * fVar29);\n            fVar30 = HalfToSinglePrecision\n                               (*(ushort *)((int)p + 4) << 8 | *(ushort *)((int)p + 4) >> 8);\n            q[pPVar28[2].offset] = (double)(fVar30 * fVar29);\n            uVar15 = *(ushort *)((int)p + 6) << 8 | *(ushort *)((int)p + 6) >> 8;\n          }" if (parenthesized_expression "(EVar4 == LSBEndian)" ( (binary_expression "EVar4 == LSBEndian" identifier == identifier) )) (compound_statement "{\n            fVar30 = HalfToSinglePrecision(uVar15);\n            fVar29 = DAT_0029f710;\n            pPVar28 = image->channel_map;\n            q[pPVar28->offset] = (double)(DAT_0029f710 * fVar30);\n            fVar30 = HalfToSinglePrecision(*(ushort *)((int)p + 2));\n            q[pPVar28[1].offset] = (double)(fVar30 * fVar29);\n            fVar30 = HalfToSinglePrecision(*(ushort *)((int)p + 4));\n            q[pPVar28[2].offset] = (double)(fVar30 * fVar29);\n            uVar15 = *(ushort *)((int)p + 6);\n          }" { (expression_statement "fVar30 = HalfToSinglePrecision(uVar15);" (assignment_expression "fVar30 = HalfToSinglePrecision(uVar15)" identifier = (call_expression "HalfToSinglePrecision(uVar15)" identifier (argument_list "(uVar15)" ( identifier )))) ;) (expression_statement "fVar29 = DAT_0029f710;" (assignment_expression "fVar29 = DAT_0029f710" identifier = identifier) ;) (expression_statement "pPVar28 = image->channel_map;" (assignment_expression "pPVar28 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) (expression_statement "q[pPVar28->offset] = (double)(DAT_0029f710 * fVar30);" (assignment_expression "q[pPVar28->offset] = (double)(DAT_0029f710 * fVar30)" (subscript_expression "q[pPVar28->offset]" identifier [ (field_expression "pPVar28->offset" identifier -> field_identifier) ]) = (cast_expression "(double)(DAT_0029f710 * fVar30)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(DAT_0029f710 * fVar30)" ( (binary_expression "DAT_0029f710 * fVar30" identifier * identifier) )))) ;) (expression_statement "fVar30 = HalfToSinglePrecision(*(ushort *)((int)p + 2));" (assignment_expression "fVar30 = HalfToSinglePrecision(*(ushort *)((int)p + 2))" identifier = (call_expression "HalfToSinglePrecision(*(ushort *)((int)p + 2))" identifier (argument_list "(*(ushort *)((int)p + 2))" ( (pointer_expression "*(ushort *)((int)p + 2)" * (cast_expression "(ushort *)((int)p + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 2)" ( (binary_expression "(int)p + 2" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) )))) ;) (expression_statement "q[pPVar28[1].offset] = (double)(fVar30 * fVar29);" (assignment_expression "q[pPVar28[1].offset] = (double)(fVar30 * fVar29)" (subscript_expression "q[pPVar28[1].offset]" identifier [ (field_expression "pPVar28[1].offset" (subscript_expression "pPVar28[1]" identifier [ number_literal ]) . field_identifier) ]) = (cast_expression "(double)(fVar30 * fVar29)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(fVar30 * fVar29)" ( (binary_expression "fVar30 * fVar29" identifier * identifier) )))) ;) (expression_statement "fVar30 = HalfToSinglePrecision(*(ushort *)((int)p + 4));" (assignment_expression "fVar30 = HalfToSinglePrecision(*(ushort *)((int)p + 4))" identifier = (call_expression "HalfToSinglePrecision(*(ushort *)((int)p + 4))" identifier (argument_list "(*(ushort *)((int)p + 4))" ( (pointer_expression "*(ushort *)((int)p + 4)" * (cast_expression "(ushort *)((int)p + 4)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 4)" ( (binary_expression "(int)p + 4" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) )))) ;) (expression_statement "q[pPVar28[2].offset] = (double)(fVar30 * fVar29);" (assignment_expression "q[pPVar28[2].offset] = (double)(fVar30 * fVar29)" (subscript_expression "q[pPVar28[2].offset]" identifier [ (field_expression "pPVar28[2].offset" (subscript_expression "pPVar28[2]" identifier [ number_literal ]) . field_identifier) ]) = (cast_expression "(double)(fVar30 * fVar29)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(fVar30 * fVar29)" ( (binary_expression "fVar30 * fVar29" identifier * identifier) )))) ;) (expression_statement "uVar15 = *(ushort *)((int)p + 6);" (assignment_expression "uVar15 = *(ushort *)((int)p + 6)" identifier = (pointer_expression "*(ushort *)((int)p + 6)" * (cast_expression "(ushort *)((int)p + 6)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 6)" ( (binary_expression "(int)p + 6" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }) (else_clause "else {\n            fVar30 = HalfToSinglePrecision(uVar15 << 8 | uVar15 >> 8);\n            fVar29 = DAT_0029f710;\n            pPVar28 = image->channel_map;\n            q[pPVar28->offset] = (double)(DAT_0029f710 * fVar30);\n            fVar30 = HalfToSinglePrecision\n                               (*(ushort *)((int)p + 2) << 8 | *(ushort *)((int)p + 2) >> 8);\n            q[pPVar28[1].offset] = (double)(fVar30 * fVar29);\n            fVar30 = HalfToSinglePrecision\n                               (*(ushort *)((int)p + 4) << 8 | *(ushort *)((int)p + 4) >> 8);\n            q[pPVar28[2].offset] = (double)(fVar30 * fVar29);\n            uVar15 = *(ushort *)((int)p + 6) << 8 | *(ushort *)((int)p + 6) >> 8;\n          }" else (compound_statement "{\n            fVar30 = HalfToSinglePrecision(uVar15 << 8 | uVar15 >> 8);\n            fVar29 = DAT_0029f710;\n            pPVar28 = image->channel_map;\n            q[pPVar28->offset] = (double)(DAT_0029f710 * fVar30);\n            fVar30 = HalfToSinglePrecision\n                               (*(ushort *)((int)p + 2) << 8 | *(ushort *)((int)p + 2) >> 8);\n            q[pPVar28[1].offset] = (double)(fVar30 * fVar29);\n            fVar30 = HalfToSinglePrecision\n                               (*(ushort *)((int)p + 4) << 8 | *(ushort *)((int)p + 4) >> 8);\n            q[pPVar28[2].offset] = (double)(fVar30 * fVar29);\n            uVar15 = *(ushort *)((int)p + 6) << 8 | *(ushort *)((int)p + 6) >> 8;\n          }" { (expression_statement "fVar30 = HalfToSinglePrecision(uVar15 << 8 | uVar15 >> 8);" (assignment_expression "fVar30 = HalfToSinglePrecision(uVar15 << 8 | uVar15 >> 8)" identifier = (call_expression "HalfToSinglePrecision(uVar15 << 8 | uVar15 >> 8)" identifier (argument_list "(uVar15 << 8 | uVar15 >> 8)" ( (binary_expression "uVar15 << 8 | uVar15 >> 8" (binary_expression "uVar15 << 8" identifier << number_literal) | (binary_expression "uVar15 >> 8" identifier >> number_literal)) )))) ;) (expression_statement "fVar29 = DAT_0029f710;" (assignment_expression "fVar29 = DAT_0029f710" identifier = identifier) ;) (expression_statement "pPVar28 = image->channel_map;" (assignment_expression "pPVar28 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) (expression_statement "q[pPVar28->offset] = (double)(DAT_0029f710 * fVar30);" (assignment_expression "q[pPVar28->offset] = (double)(DAT_0029f710 * fVar30)" (subscript_expression "q[pPVar28->offset]" identifier [ (field_expression "pPVar28->offset" identifier -> field_identifier) ]) = (cast_expression "(double)(DAT_0029f710 * fVar30)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(DAT_0029f710 * fVar30)" ( (binary_expression "DAT_0029f710 * fVar30" identifier * identifier) )))) ;) (expression_statement "fVar30 = HalfToSinglePrecision\n                               (*(ushort *)((int)p + 2) << 8 | *(ushort *)((int)p + 2) >> 8);" (assignment_expression "fVar30 = HalfToSinglePrecision\n                               (*(ushort *)((int)p + 2) << 8 | *(ushort *)((int)p + 2) >> 8)" identifier = (call_expression "HalfToSinglePrecision\n                               (*(ushort *)((int)p + 2) << 8 | *(ushort *)((int)p + 2) >> 8)" identifier (argument_list "(*(ushort *)((int)p + 2) << 8 | *(ushort *)((int)p + 2) >> 8)" ( (binary_expression "*(ushort *)((int)p + 2) << 8 | *(ushort *)((int)p + 2) >> 8" (binary_expression "*(ushort *)((int)p + 2) << 8" (pointer_expression "*(ushort *)((int)p + 2)" * (cast_expression "(ushort *)((int)p + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 2)" ( (binary_expression "(int)p + 2" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) << number_literal) | (binary_expression "*(ushort *)((int)p + 2) >> 8" (pointer_expression "*(ushort *)((int)p + 2)" * (cast_expression "(ushort *)((int)p + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 2)" ( (binary_expression "(int)p + 2" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) >> number_literal)) )))) ;) (expression_statement "q[pPVar28[1].offset] = (double)(fVar30 * fVar29);" (assignment_expression "q[pPVar28[1].offset] = (double)(fVar30 * fVar29)" (subscript_expression "q[pPVar28[1].offset]" identifier [ (field_expression "pPVar28[1].offset" (subscript_expression "pPVar28[1]" identifier [ number_literal ]) . field_identifier) ]) = (cast_expression "(double)(fVar30 * fVar29)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(fVar30 * fVar29)" ( (binary_expression "fVar30 * fVar29" identifier * identifier) )))) ;) (expression_statement "fVar30 = HalfToSinglePrecision\n                               (*(ushort *)((int)p + 4) << 8 | *(ushort *)((int)p + 4) >> 8);" (assignment_expression "fVar30 = HalfToSinglePrecision\n                               (*(ushort *)((int)p + 4) << 8 | *(ushort *)((int)p + 4) >> 8)" identifier = (call_expression "HalfToSinglePrecision\n                               (*(ushort *)((int)p + 4) << 8 | *(ushort *)((int)p + 4) >> 8)" identifier (argument_list "(*(ushort *)((int)p + 4) << 8 | *(ushort *)((int)p + 4) >> 8)" ( (binary_expression "*(ushort *)((int)p + 4) << 8 | *(ushort *)((int)p + 4) >> 8" (binary_expression "*(ushort *)((int)p + 4) << 8" (pointer_expression "*(ushort *)((int)p + 4)" * (cast_expression "(ushort *)((int)p + 4)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 4)" ( (binary_expression "(int)p + 4" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) << number_literal) | (binary_expression "*(ushort *)((int)p + 4) >> 8" (pointer_expression "*(ushort *)((int)p + 4)" * (cast_expression "(ushort *)((int)p + 4)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 4)" ( (binary_expression "(int)p + 4" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) >> number_literal)) )))) ;) (expression_statement "q[pPVar28[2].offset] = (double)(fVar30 * fVar29);" (assignment_expression "q[pPVar28[2].offset] = (double)(fVar30 * fVar29)" (subscript_expression "q[pPVar28[2].offset]" identifier [ (field_expression "pPVar28[2].offset" (subscript_expression "pPVar28[2]" identifier [ number_literal ]) . field_identifier) ]) = (cast_expression "(double)(fVar30 * fVar29)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(fVar30 * fVar29)" ( (binary_expression "fVar30 * fVar29" identifier * identifier) )))) ;) (expression_statement "uVar15 = *(ushort *)((int)p + 6) << 8 | *(ushort *)((int)p + 6) >> 8;" (assignment_expression "uVar15 = *(ushort *)((int)p + 6) << 8 | *(ushort *)((int)p + 6) >> 8" identifier = (binary_expression "*(ushort *)((int)p + 6) << 8 | *(ushort *)((int)p + 6) >> 8" (binary_expression "*(ushort *)((int)p + 6) << 8" (pointer_expression "*(ushort *)((int)p + 6)" * (cast_expression "(ushort *)((int)p + 6)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 6)" ( (binary_expression "(int)p + 6" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) << number_literal) | (binary_expression "*(ushort *)((int)p + 6) >> 8" (pointer_expression "*(ushort *)((int)p + 6)" * (cast_expression "(ushort *)((int)p + 6)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 6)" ( (binary_expression "(int)p + 6" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) >> number_literal))) ;) }))) (expression_statement "fVar29 = HalfToSinglePrecision(uVar15);" (assignment_expression "fVar29 = HalfToSinglePrecision(uVar15)" identifier = (call_expression "HalfToSinglePrecision(uVar15)" identifier (argument_list "(uVar15)" ( identifier )))) ;) (if_statement "if (pPVar28[4].traits != UndefinedPixelTrait) {\n            q[pPVar28[4].offset] = (double)(DAT_0029f710 - fVar29 * DAT_0029f710);\n          }" if (parenthesized_expression "(pPVar28[4].traits != UndefinedPixelTrait)" ( (binary_expression "pPVar28[4].traits != UndefinedPixelTrait" (field_expression "pPVar28[4].traits" (subscript_expression "pPVar28[4]" identifier [ number_literal ]) . field_identifier) != identifier) )) (compound_statement "{\n            q[pPVar28[4].offset] = (double)(DAT_0029f710 - fVar29 * DAT_0029f710);\n          }" { (expression_statement "q[pPVar28[4].offset] = (double)(DAT_0029f710 - fVar29 * DAT_0029f710);" (assignment_expression "q[pPVar28[4].offset] = (double)(DAT_0029f710 - fVar29 * DAT_0029f710)" (subscript_expression "q[pPVar28[4].offset]" identifier [ (field_expression "pPVar28[4].offset" (subscript_expression "pPVar28[4]" identifier [ number_literal ]) . field_identifier) ]) = (cast_expression "(double)(DAT_0029f710 - fVar29 * DAT_0029f710)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(DAT_0029f710 - fVar29 * DAT_0029f710)" ( (binary_expression "DAT_0029f710 - fVar29 * DAT_0029f710" identifier - (binary_expression "fVar29 * DAT_0029f710" identifier * identifier)) )))) ;) })) (expression_statement "iVar18 = iVar18 + 1;" (assignment_expression "iVar18 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ;) (expression_statement "p = (uchar *)((int)p + quantum_info->pad + 8);" (assignment_expression "p = (uchar *)((int)p + quantum_info->pad + 8)" identifier = (cast_expression "(uchar *)((int)p + quantum_info->pad + 8)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + quantum_info->pad + 8)" ( (binary_expression "(int)p + quantum_info->pad + 8" (binary_expression "(int)p + quantum_info->pad" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + (field_expression "quantum_info->pad" identifier -> field_identifier)) + number_literal) )))) ;) (expression_statement "q = q + image->number_channels;" (assignment_expression "q = q + image->number_channels" identifier = (binary_expression "q + image->number_channels" identifier + (field_expression "image->number_channels" identifier -> field_identifier))) ;) }) while (parenthesized_expression "(iVar18 != (int)number_pixels)" ( (binary_expression "iVar18 != (int)number_pixels" identifier != (cast_expression "(int)number_pixels" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })) }) (else_clause "else if (0 < (int)number_pixels) {\n      pPVar28 = image->channel_map;\n      EVar4 = quantum_info->endian;\n      sVar6 = quantum_info->pad;\n      sVar21 = image->number_channels;\n      iVar18 = pPVar28[1].offset;\n      iVar5 = pPVar28[2].offset;\n      iVar7 = pPVar28->offset;\n      PVar8 = pPVar28[4].traits;\n      iVar27 = 0;\n      do {\n        uVar15 = *(ushort *)((int)p + 4);\n        uVar26 = *(ushort *)((int)p + 6);\n        uVar2 = *(ushort *)p;\n        uVar3 = *(ushort *)((int)p + 2);\n        if (EVar4 == LSBEndian) {\n          q[iVar7] = (double)uVar2;\n          q[iVar18] = (double)uVar3;\n          q[iVar5] = (double)uVar15;\n        }\n        else {\n          uVar26 = uVar26 << 8 | uVar26 >> 8;\n          q[iVar7] = (double)(ushort)(uVar2 << 8 | uVar2 >> 8);\n          q[iVar18] = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n          q[iVar5] = (double)(ushort)(uVar15 << 8 | uVar15 >> 8);\n        }\n        if (PVar8 != UndefinedPixelTrait) {\n          q[pPVar28[4].offset] = (double)(fVar29 - (float)uVar26);\n        }\n        p = (uchar *)((int)p + sVar6 + 8);\n        iVar27 = iVar27 + 1;\n        q = q + sVar21;\n      } while (iVar27 != (int)number_pixels);\n    }" else (if_statement "if (0 < (int)number_pixels) {\n      pPVar28 = image->channel_map;\n      EVar4 = quantum_info->endian;\n      sVar6 = quantum_info->pad;\n      sVar21 = image->number_channels;\n      iVar18 = pPVar28[1].offset;\n      iVar5 = pPVar28[2].offset;\n      iVar7 = pPVar28->offset;\n      PVar8 = pPVar28[4].traits;\n      iVar27 = 0;\n      do {\n        uVar15 = *(ushort *)((int)p + 4);\n        uVar26 = *(ushort *)((int)p + 6);\n        uVar2 = *(ushort *)p;\n        uVar3 = *(ushort *)((int)p + 2);\n        if (EVar4 == LSBEndian) {\n          q[iVar7] = (double)uVar2;\n          q[iVar18] = (double)uVar3;\n          q[iVar5] = (double)uVar15;\n        }\n        else {\n          uVar26 = uVar26 << 8 | uVar26 >> 8;\n          q[iVar7] = (double)(ushort)(uVar2 << 8 | uVar2 >> 8);\n          q[iVar18] = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n          q[iVar5] = (double)(ushort)(uVar15 << 8 | uVar15 >> 8);\n        }\n        if (PVar8 != UndefinedPixelTrait) {\n          q[pPVar28[4].offset] = (double)(fVar29 - (float)uVar26);\n        }\n        p = (uchar *)((int)p + sVar6 + 8);\n        iVar27 = iVar27 + 1;\n        q = q + sVar21;\n      } while (iVar27 != (int)number_pixels);\n    }" if (parenthesized_expression "(0 < (int)number_pixels)" ( (binary_expression "0 < (int)number_pixels" number_literal < (cast_expression "(int)number_pixels" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      pPVar28 = image->channel_map;\n      EVar4 = quantum_info->endian;\n      sVar6 = quantum_info->pad;\n      sVar21 = image->number_channels;\n      iVar18 = pPVar28[1].offset;\n      iVar5 = pPVar28[2].offset;\n      iVar7 = pPVar28->offset;\n      PVar8 = pPVar28[4].traits;\n      iVar27 = 0;\n      do {\n        uVar15 = *(ushort *)((int)p + 4);\n        uVar26 = *(ushort *)((int)p + 6);\n        uVar2 = *(ushort *)p;\n        uVar3 = *(ushort *)((int)p + 2);\n        if (EVar4 == LSBEndian) {\n          q[iVar7] = (double)uVar2;\n          q[iVar18] = (double)uVar3;\n          q[iVar5] = (double)uVar15;\n        }\n        else {\n          uVar26 = uVar26 << 8 | uVar26 >> 8;\n          q[iVar7] = (double)(ushort)(uVar2 << 8 | uVar2 >> 8);\n          q[iVar18] = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n          q[iVar5] = (double)(ushort)(uVar15 << 8 | uVar15 >> 8);\n        }\n        if (PVar8 != UndefinedPixelTrait) {\n          q[pPVar28[4].offset] = (double)(fVar29 - (float)uVar26);\n        }\n        p = (uchar *)((int)p + sVar6 + 8);\n        iVar27 = iVar27 + 1;\n        q = q + sVar21;\n      } while (iVar27 != (int)number_pixels);\n    }" { (expression_statement "pPVar28 = image->channel_map;" (assignment_expression "pPVar28 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) (expression_statement "EVar4 = quantum_info->endian;" (assignment_expression "EVar4 = quantum_info->endian" identifier = (field_expression "quantum_info->endian" identifier -> field_identifier)) ;) (expression_statement "sVar6 = quantum_info->pad;" (assignment_expression "sVar6 = quantum_info->pad" identifier = (field_expression "quantum_info->pad" identifier -> field_identifier)) ;) (expression_statement "sVar21 = image->number_channels;" (assignment_expression "sVar21 = image->number_channels" identifier = (field_expression "image->number_channels" identifier -> field_identifier)) ;) (expression_statement "iVar18 = pPVar28[1].offset;" (assignment_expression "iVar18 = pPVar28[1].offset" identifier = (field_expression "pPVar28[1].offset" (subscript_expression "pPVar28[1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "iVar5 = pPVar28[2].offset;" (assignment_expression "iVar5 = pPVar28[2].offset" identifier = (field_expression "pPVar28[2].offset" (subscript_expression "pPVar28[2]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "iVar7 = pPVar28->offset;" (assignment_expression "iVar7 = pPVar28->offset" identifier = (field_expression "pPVar28->offset" identifier -> field_identifier)) ;) (expression_statement "PVar8 = pPVar28[4].traits;" (assignment_expression "PVar8 = pPVar28[4].traits" identifier = (field_expression "pPVar28[4].traits" (subscript_expression "pPVar28[4]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar15 = *(ushort *)((int)p + 4);\n        uVar26 = *(ushort *)((int)p + 6);\n        uVar2 = *(ushort *)p;\n        uVar3 = *(ushort *)((int)p + 2);\n        if (EVar4 == LSBEndian) {\n          q[iVar7] = (double)uVar2;\n          q[iVar18] = (double)uVar3;\n          q[iVar5] = (double)uVar15;\n        }\n        else {\n          uVar26 = uVar26 << 8 | uVar26 >> 8;\n          q[iVar7] = (double)(ushort)(uVar2 << 8 | uVar2 >> 8);\n          q[iVar18] = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n          q[iVar5] = (double)(ushort)(uVar15 << 8 | uVar15 >> 8);\n        }\n        if (PVar8 != UndefinedPixelTrait) {\n          q[pPVar28[4].offset] = (double)(fVar29 - (float)uVar26);\n        }\n        p = (uchar *)((int)p + sVar6 + 8);\n        iVar27 = iVar27 + 1;\n        q = q + sVar21;\n      } while (iVar27 != (int)number_pixels);" do (compound_statement "{\n        uVar15 = *(ushort *)((int)p + 4);\n        uVar26 = *(ushort *)((int)p + 6);\n        uVar2 = *(ushort *)p;\n        uVar3 = *(ushort *)((int)p + 2);\n        if (EVar4 == LSBEndian) {\n          q[iVar7] = (double)uVar2;\n          q[iVar18] = (double)uVar3;\n          q[iVar5] = (double)uVar15;\n        }\n        else {\n          uVar26 = uVar26 << 8 | uVar26 >> 8;\n          q[iVar7] = (double)(ushort)(uVar2 << 8 | uVar2 >> 8);\n          q[iVar18] = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n          q[iVar5] = (double)(ushort)(uVar15 << 8 | uVar15 >> 8);\n        }\n        if (PVar8 != UndefinedPixelTrait) {\n          q[pPVar28[4].offset] = (double)(fVar29 - (float)uVar26);\n        }\n        p = (uchar *)((int)p + sVar6 + 8);\n        iVar27 = iVar27 + 1;\n        q = q + sVar21;\n      }" { (expression_statement "uVar15 = *(ushort *)((int)p + 4);" (assignment_expression "uVar15 = *(ushort *)((int)p + 4)" identifier = (pointer_expression "*(ushort *)((int)p + 4)" * (cast_expression "(ushort *)((int)p + 4)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 4)" ( (binary_expression "(int)p + 4" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "uVar26 = *(ushort *)((int)p + 6);" (assignment_expression "uVar26 = *(ushort *)((int)p + 6)" identifier = (pointer_expression "*(ushort *)((int)p + 6)" * (cast_expression "(ushort *)((int)p + 6)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 6)" ( (binary_expression "(int)p + 6" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "uVar2 = *(ushort *)p;" (assignment_expression "uVar2 = *(ushort *)p" identifier = (pointer_expression "*(ushort *)p" * (cast_expression "(ushort *)p" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar3 = *(ushort *)((int)p + 2);" (assignment_expression "uVar3 = *(ushort *)((int)p + 2)" identifier = (pointer_expression "*(ushort *)((int)p + 2)" * (cast_expression "(ushort *)((int)p + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 2)" ( (binary_expression "(int)p + 2" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (if_statement "if (EVar4 == LSBEndian) {\n          q[iVar7] = (double)uVar2;\n          q[iVar18] = (double)uVar3;\n          q[iVar5] = (double)uVar15;\n        }\n        else {\n          uVar26 = uVar26 << 8 | uVar26 >> 8;\n          q[iVar7] = (double)(ushort)(uVar2 << 8 | uVar2 >> 8);\n          q[iVar18] = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n          q[iVar5] = (double)(ushort)(uVar15 << 8 | uVar15 >> 8);\n        }" if (parenthesized_expression "(EVar4 == LSBEndian)" ( (binary_expression "EVar4 == LSBEndian" identifier == identifier) )) (compound_statement "{\n          q[iVar7] = (double)uVar2;\n          q[iVar18] = (double)uVar3;\n          q[iVar5] = (double)uVar15;\n        }" { (expression_statement "q[iVar7] = (double)uVar2;" (assignment_expression "q[iVar7] = (double)uVar2" (subscript_expression "q[iVar7]" identifier [ identifier ]) = (cast_expression "(double)uVar2" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "q[iVar18] = (double)uVar3;" (assignment_expression "q[iVar18] = (double)uVar3" (subscript_expression "q[iVar18]" identifier [ identifier ]) = (cast_expression "(double)uVar3" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "q[iVar5] = (double)uVar15;" (assignment_expression "q[iVar5] = (double)uVar15" (subscript_expression "q[iVar5]" identifier [ identifier ]) = (cast_expression "(double)uVar15" ( (type_descriptor "double" primitive_type) ) identifier)) ;) }) (else_clause "else {\n          uVar26 = uVar26 << 8 | uVar26 >> 8;\n          q[iVar7] = (double)(ushort)(uVar2 << 8 | uVar2 >> 8);\n          q[iVar18] = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n          q[iVar5] = (double)(ushort)(uVar15 << 8 | uVar15 >> 8);\n        }" else (compound_statement "{\n          uVar26 = uVar26 << 8 | uVar26 >> 8;\n          q[iVar7] = (double)(ushort)(uVar2 << 8 | uVar2 >> 8);\n          q[iVar18] = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n          q[iVar5] = (double)(ushort)(uVar15 << 8 | uVar15 >> 8);\n        }" { (expression_statement "uVar26 = uVar26 << 8 | uVar26 >> 8;" (assignment_expression "uVar26 = uVar26 << 8 | uVar26 >> 8" identifier = (binary_expression "uVar26 << 8 | uVar26 >> 8" (binary_expression "uVar26 << 8" identifier << number_literal) | (binary_expression "uVar26 >> 8" identifier >> number_literal))) ;) (expression_statement "q[iVar7] = (double)(ushort)(uVar2 << 8 | uVar2 >> 8);" (assignment_expression "q[iVar7] = (double)(ushort)(uVar2 << 8 | uVar2 >> 8)" (subscript_expression "q[iVar7]" identifier [ identifier ]) = (cast_expression "(double)(ushort)(uVar2 << 8 | uVar2 >> 8)" ( (type_descriptor "double" primitive_type) ) (call_expression "(ushort)(uVar2 << 8 | uVar2 >> 8)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(uVar2 << 8 | uVar2 >> 8)" ( (binary_expression "uVar2 << 8 | uVar2 >> 8" (binary_expression "uVar2 << 8" identifier << number_literal) | (binary_expression "uVar2 >> 8" identifier >> number_literal)) ))))) ;) (expression_statement "q[iVar18] = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);" (assignment_expression "q[iVar18] = (double)(ushort)(uVar3 << 8 | uVar3 >> 8)" (subscript_expression "q[iVar18]" identifier [ identifier ]) = (cast_expression "(double)(ushort)(uVar3 << 8 | uVar3 >> 8)" ( (type_descriptor "double" primitive_type) ) (call_expression "(ushort)(uVar3 << 8 | uVar3 >> 8)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(uVar3 << 8 | uVar3 >> 8)" ( (binary_expression "uVar3 << 8 | uVar3 >> 8" (binary_expression "uVar3 << 8" identifier << number_literal) | (binary_expression "uVar3 >> 8" identifier >> number_literal)) ))))) ;) (expression_statement "q[iVar5] = (double)(ushort)(uVar15 << 8 | uVar15 >> 8);" (assignment_expression "q[iVar5] = (double)(ushort)(uVar15 << 8 | uVar15 >> 8)" (subscript_expression "q[iVar5]" identifier [ identifier ]) = (cast_expression "(double)(ushort)(uVar15 << 8 | uVar15 >> 8)" ( (type_descriptor "double" primitive_type) ) (call_expression "(ushort)(uVar15 << 8 | uVar15 >> 8)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(uVar15 << 8 | uVar15 >> 8)" ( (binary_expression "uVar15 << 8 | uVar15 >> 8" (binary_expression "uVar15 << 8" identifier << number_literal) | (binary_expression "uVar15 >> 8" identifier >> number_literal)) ))))) ;) }))) (if_statement "if (PVar8 != UndefinedPixelTrait) {\n          q[pPVar28[4].offset] = (double)(fVar29 - (float)uVar26);\n        }" if (parenthesized_expression "(PVar8 != UndefinedPixelTrait)" ( (binary_expression "PVar8 != UndefinedPixelTrait" identifier != identifier) )) (compound_statement "{\n          q[pPVar28[4].offset] = (double)(fVar29 - (float)uVar26);\n        }" { (expression_statement "q[pPVar28[4].offset] = (double)(fVar29 - (float)uVar26);" (assignment_expression "q[pPVar28[4].offset] = (double)(fVar29 - (float)uVar26)" (subscript_expression "q[pPVar28[4].offset]" identifier [ (field_expression "pPVar28[4].offset" (subscript_expression "pPVar28[4]" identifier [ number_literal ]) . field_identifier) ]) = (cast_expression "(double)(fVar29 - (float)uVar26)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(fVar29 - (float)uVar26)" ( (binary_expression "fVar29 - (float)uVar26" identifier - (cast_expression "(float)uVar26" ( (type_descriptor "float" primitive_type) ) identifier)) )))) ;) })) (expression_statement "p = (uchar *)((int)p + sVar6 + 8);" (assignment_expression "p = (uchar *)((int)p + sVar6 + 8)" identifier = (cast_expression "(uchar *)((int)p + sVar6 + 8)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + sVar6 + 8)" ( (binary_expression "(int)p + sVar6 + 8" (binary_expression "(int)p + sVar6" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ;) (expression_statement "iVar27 = iVar27 + 1;" (assignment_expression "iVar27 = iVar27 + 1" identifier = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) (expression_statement "q = q + sVar21;" (assignment_expression "q = q + sVar21" identifier = (binary_expression "q + sVar21" identifier + identifier)) ;) }) while (parenthesized_expression "(iVar27 != (int)number_pixels)" ( (binary_expression "iVar27 != (int)number_pixels" identifier != (cast_expression "(int)number_pixels" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })))) (break_statement "break;" break ;)) (case_statement "case 0x18:\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if (0 < (int)number_pixels) {\n        iVar18 = 0;\n        do {\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,p,&pixel);\n          q[image->channel_map->offset] = (double)pixel;\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel);\n          q[image->channel_map[1].offset] = (double)pixel;\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel);\n          q[image->channel_map[2].offset] = (double)pixel;\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel);\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            q[image->channel_map[4].offset] = (double)(DAT_0029f710 - pixel);\n          }\n          p = puVar19 + quantum_info->pad;\n          iVar18 = iVar18 + 1;\n          q = q + image->number_channels;\n        } while (iVar18 != (int)number_pixels);\n      }\n      break;\n    }\n    goto LAB_001616dd;" case number_literal : (if_statement "if (quantum_info->format == FloatingPointQuantumFormat) {\n      if (0 < (int)number_pixels) {\n        iVar18 = 0;\n        do {\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,p,&pixel);\n          q[image->channel_map->offset] = (double)pixel;\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel);\n          q[image->channel_map[1].offset] = (double)pixel;\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel);\n          q[image->channel_map[2].offset] = (double)pixel;\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel);\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            q[image->channel_map[4].offset] = (double)(DAT_0029f710 - pixel);\n          }\n          p = puVar19 + quantum_info->pad;\n          iVar18 = iVar18 + 1;\n          q = q + image->number_channels;\n        } while (iVar18 != (int)number_pixels);\n      }\n      break;\n    }" if (parenthesized_expression "(quantum_info->format == FloatingPointQuantumFormat)" ( (binary_expression "quantum_info->format == FloatingPointQuantumFormat" (field_expression "quantum_info->format" identifier -> field_identifier) == identifier) )) (compound_statement "{\n      if (0 < (int)number_pixels) {\n        iVar18 = 0;\n        do {\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,p,&pixel);\n          q[image->channel_map->offset] = (double)pixel;\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel);\n          q[image->channel_map[1].offset] = (double)pixel;\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel);\n          q[image->channel_map[2].offset] = (double)pixel;\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel);\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            q[image->channel_map[4].offset] = (double)(DAT_0029f710 - pixel);\n          }\n          p = puVar19 + quantum_info->pad;\n          iVar18 = iVar18 + 1;\n          q = q + image->number_channels;\n        } while (iVar18 != (int)number_pixels);\n      }\n      break;\n    }" { (if_statement "if (0 < (int)number_pixels) {\n        iVar18 = 0;\n        do {\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,p,&pixel);\n          q[image->channel_map->offset] = (double)pixel;\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel);\n          q[image->channel_map[1].offset] = (double)pixel;\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel);\n          q[image->channel_map[2].offset] = (double)pixel;\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel);\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            q[image->channel_map[4].offset] = (double)(DAT_0029f710 - pixel);\n          }\n          p = puVar19 + quantum_info->pad;\n          iVar18 = iVar18 + 1;\n          q = q + image->number_channels;\n        } while (iVar18 != (int)number_pixels);\n      }" if (parenthesized_expression "(0 < (int)number_pixels)" ( (binary_expression "0 < (int)number_pixels" number_literal < (cast_expression "(int)number_pixels" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        iVar18 = 0;\n        do {\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,p,&pixel);\n          q[image->channel_map->offset] = (double)pixel;\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel);\n          q[image->channel_map[1].offset] = (double)pixel;\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel);\n          q[image->channel_map[2].offset] = (double)pixel;\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel);\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            q[image->channel_map[4].offset] = (double)(DAT_0029f710 - pixel);\n          }\n          p = puVar19 + quantum_info->pad;\n          iVar18 = iVar18 + 1;\n          q = q + image->number_channels;\n        } while (iVar18 != (int)number_pixels);\n      }" { (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" identifier = number_literal) ;) (do_statement "do {\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,p,&pixel);\n          q[image->channel_map->offset] = (double)pixel;\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel);\n          q[image->channel_map[1].offset] = (double)pixel;\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel);\n          q[image->channel_map[2].offset] = (double)pixel;\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel);\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            q[image->channel_map[4].offset] = (double)(DAT_0029f710 - pixel);\n          }\n          p = puVar19 + quantum_info->pad;\n          iVar18 = iVar18 + 1;\n          q = q + image->number_channels;\n        } while (iVar18 != (int)number_pixels);" do (compound_statement "{\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,p,&pixel);\n          q[image->channel_map->offset] = (double)pixel;\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel);\n          q[image->channel_map[1].offset] = (double)pixel;\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel);\n          q[image->channel_map[2].offset] = (double)pixel;\n          puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel);\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            q[image->channel_map[4].offset] = (double)(DAT_0029f710 - pixel);\n          }\n          p = puVar19 + quantum_info->pad;\n          iVar18 = iVar18 + 1;\n          q = q + image->number_channels;\n        }" { (expression_statement "puVar19 = PushQuantumFloat24Pixel(quantum_info,p,&pixel);" (assignment_expression "puVar19 = PushQuantumFloat24Pixel(quantum_info,p,&pixel)" identifier = (call_expression "PushQuantumFloat24Pixel(quantum_info,p,&pixel)" identifier (argument_list "(quantum_info,p,&pixel)" ( identifier , identifier , (pointer_expression "&pixel" & identifier) )))) ;) (expression_statement "q[image->channel_map->offset] = (double)pixel;" (assignment_expression "q[image->channel_map->offset] = (double)pixel" (subscript_expression "q[image->channel_map->offset]" identifier [ (field_expression "image->channel_map->offset" (field_expression "image->channel_map" identifier -> field_identifier) -> field_identifier) ]) = (cast_expression "(double)pixel" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel);" (assignment_expression "puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel)" identifier = (call_expression "PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel)" identifier (argument_list "(quantum_info,puVar19,&pixel)" ( identifier , identifier , (pointer_expression "&pixel" & identifier) )))) ;) (expression_statement "q[image->channel_map[1].offset] = (double)pixel;" (assignment_expression "q[image->channel_map[1].offset] = (double)pixel" (subscript_expression "q[image->channel_map[1].offset]" identifier [ (field_expression "image->channel_map[1].offset" (subscript_expression "image->channel_map[1]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ]) = (cast_expression "(double)pixel" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel);" (assignment_expression "puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel)" identifier = (call_expression "PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel)" identifier (argument_list "(quantum_info,puVar19,&pixel)" ( identifier , identifier , (pointer_expression "&pixel" & identifier) )))) ;) (expression_statement "q[image->channel_map[2].offset] = (double)pixel;" (assignment_expression "q[image->channel_map[2].offset] = (double)pixel" (subscript_expression "q[image->channel_map[2].offset]" identifier [ (field_expression "image->channel_map[2].offset" (subscript_expression "image->channel_map[2]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ]) = (cast_expression "(double)pixel" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel);" (assignment_expression "puVar19 = PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel)" identifier = (call_expression "PushQuantumFloat24Pixel(quantum_info,puVar19,&pixel)" identifier (argument_list "(quantum_info,puVar19,&pixel)" ( identifier , identifier , (pointer_expression "&pixel" & identifier) )))) ;) (if_statement "if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            q[image->channel_map[4].offset] = (double)(DAT_0029f710 - pixel);\n          }" if (parenthesized_expression "(image->channel_map[4].traits != UndefinedPixelTrait)" ( (binary_expression "image->channel_map[4].traits != UndefinedPixelTrait" (field_expression "image->channel_map[4].traits" (subscript_expression "image->channel_map[4]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) != identifier) )) (compound_statement "{\n            q[image->channel_map[4].offset] = (double)(DAT_0029f710 - pixel);\n          }" { (expression_statement "q[image->channel_map[4].offset] = (double)(DAT_0029f710 - pixel);" (assignment_expression "q[image->channel_map[4].offset] = (double)(DAT_0029f710 - pixel)" (subscript_expression "q[image->channel_map[4].offset]" identifier [ (field_expression "image->channel_map[4].offset" (subscript_expression "image->channel_map[4]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ]) = (cast_expression "(double)(DAT_0029f710 - pixel)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(DAT_0029f710 - pixel)" ( (binary_expression "DAT_0029f710 - pixel" identifier - identifier) )))) ;) })) (expression_statement "p = puVar19 + quantum_info->pad;" (assignment_expression "p = puVar19 + quantum_info->pad" identifier = (binary_expression "puVar19 + quantum_info->pad" identifier + (field_expression "quantum_info->pad" identifier -> field_identifier))) ;) (expression_statement "iVar18 = iVar18 + 1;" (assignment_expression "iVar18 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ;) (expression_statement "q = q + image->number_channels;" (assignment_expression "q = q + image->number_channels" identifier = (binary_expression "q + image->number_channels" identifier + (field_expression "image->number_channels" identifier -> field_identifier))) ;) }) while (parenthesized_expression "(iVar18 != (int)number_pixels)" ( (binary_expression "iVar18 != (int)number_pixels" identifier != (cast_expression "(int)number_pixels" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })) (break_statement "break;" break ;) })) (goto_statement "goto LAB_001616dd;" goto statement_identifier ;)) (case_statement "case 0x20:\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if (0 < (int)number_pixels) {\n        pPVar28 = image->channel_map;\n        local_5c = (double *)0x0;\n        sVar6 = quantum_info->pad;\n        EVar4 = quantum_info->endian;\n        sVar21 = image->number_channels;\n        do {\n          local_64 = *(float *)p;\n          if (EVar4 != LSBEndian) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)p + 1),*(byte *)((int)p + 2))\n                                       ,*(byte *)((int)p + 3));\n          }\n          fVar30 = (local_64 - (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar29 = fVar14;\n          if ((fVar14 <= fVar30) && (fVar29 = DAT_002c5828, fVar30 <= DAT_002c5828)) {\n            fVar29 = fVar30;\n          }\n          q[pPVar28->offset] = (double)fVar29;\n          if (EVar4 == LSBEndian) {\n            fVar29 = *(float *)((int)p + 4);\n          }\n          else {\n            fVar29 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)((int)p + 4) << 0x18) >> 0x10\n                                                      ) | (ushort)*(byte *)((int)p + 5),\n                                              *(byte *)((int)p + 6)),*(byte *)((int)p + 7));\n          }\n          fVar29 = (fVar29 - (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar30 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)) {\n            fVar30 = fVar29;\n          }\n          q[pPVar28[1].offset] = (double)fVar30;\n          if (EVar4 == LSBEndian) {\n            local_60 = *(float *)((int)p + 8);\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)((int)p + 8) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)p + 9),\n                                                *(byte *)((int)p + 10)),*(byte *)((int)p + 0xb));\n          }\n          fVar29 = (local_60 - (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar30 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)) {\n            fVar30 = fVar29;\n          }\n          q[pPVar28[2].offset] = (double)fVar30;\n          if (EVar4 == LSBEndian) {\n            fVar29 = *(float *)((int)p + 0xc);\n            local_6c = SUB41(fVar29,0);\n            bStack_6b = (byte)((uint)fVar29 >> 8);\n            uStack_6a = (ushort)((uint)fVar29 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)((int)p + 0xc) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)p + 0xd);\n            bStack_6b = *(byte *)((int)p + 0xe);\n            local_6c = *(byte *)((int)p + 0xf);\n          }\n          fVar29 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar30 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)) {\n            fVar30 = fVar29;\n          }\n          if (pPVar28[4].traits != UndefinedPixelTrait) {\n            q[pPVar28[4].offset] = (double)(DAT_0029f710 - fVar30);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          p = (uchar *)((int)p + sVar6 + 0x10);\n          q = q + sVar21;\n        } while (local_5c != (double *)(int)number_pixels);\n      }\n      break;\n    }\nLAB_001616dd:\n    if (0 < (int)number_pixels) {\n      pPVar28 = image->channel_map;\n      EVar4 = quantum_info->endian;\n      sVar6 = quantum_info->pad;\n      sVar21 = image->number_channels;\n      iVar18 = pPVar28->offset;\n      iVar5 = pPVar28[1].offset;\n      iVar7 = pPVar28[2].offset;\n      PVar8 = pPVar28[4].traits;\n      iVar27 = 0;\n      do {\n        fVar29 = DAT_002a7fec;\n        uVar23 = *(uint *)((int)p + 0xc);\n        uVar25 = *(uint *)((int)p + 4);\n        uVar22 = *(uint *)((int)p + 8);\n        uVar17 = *(uint *)p;\n        if (EVar4 == LSBEndian) {\n          q[iVar18] = (double)((float)uVar17 / DAT_002a7fec);\n          q[iVar5] = (double)((float)uVar25 / fVar29);\n          q[iVar7] = (double)((float)uVar22 / fVar29);\n        }\n        else {\n          uVar15 = (ushort)(uVar17 >> 8);\n          uStack_6a = uVar15 & 0xff | (ushort)((uVar17 << 0x18) >> 0x10);\n          uVar23 = uVar23 >> 0x18 | (uVar23 & 0xff0000) >> 8 | (uVar23 & 0xff00) << 8 |\n                   uVar23 << 0x18;\n          q[iVar18] = (double)((float)CONCAT22(uStack_6a,\n                                               (ushort)(byte)(uVar17 >> 0x18) | uVar15 & 0xff00) /\n                              fVar30);\n          q[iVar5] = (double)((float)(uVar25 >> 0x18 | (uVar25 & 0xff0000) >> 8 |\n                                      (uVar25 & 0xff00) << 8 | uVar25 << 0x18) / fVar30);\n          q[iVar7] = (double)((float)(uVar22 >> 0x18 | (uVar22 & 0xff0000) >> 8 |\n                                      (uVar22 & 0xff00) << 8 | uVar22 << 0x18) / fVar30);\n        }\n        if (PVar8 != UndefinedPixelTrait) {\n          q[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)uVar23 / DAT_002a7fec);\n        }\n        p = (uchar *)((int)p + sVar6 + 0x10);\n        iVar27 = iVar27 + 1;\n        q = q + sVar21;\n      } while (iVar27 != (int)number_pixels);\n    }\n    break;" case number_literal : (if_statement "if (quantum_info->format == FloatingPointQuantumFormat) {\n      if (0 < (int)number_pixels) {\n        pPVar28 = image->channel_map;\n        local_5c = (double *)0x0;\n        sVar6 = quantum_info->pad;\n        EVar4 = quantum_info->endian;\n        sVar21 = image->number_channels;\n        do {\n          local_64 = *(float *)p;\n          if (EVar4 != LSBEndian) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)p + 1),*(byte *)((int)p + 2))\n                                       ,*(byte *)((int)p + 3));\n          }\n          fVar30 = (local_64 - (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar29 = fVar14;\n          if ((fVar14 <= fVar30) && (fVar29 = DAT_002c5828, fVar30 <= DAT_002c5828)) {\n            fVar29 = fVar30;\n          }\n          q[pPVar28->offset] = (double)fVar29;\n          if (EVar4 == LSBEndian) {\n            fVar29 = *(float *)((int)p + 4);\n          }\n          else {\n            fVar29 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)((int)p + 4) << 0x18) >> 0x10\n                                                      ) | (ushort)*(byte *)((int)p + 5),\n                                              *(byte *)((int)p + 6)),*(byte *)((int)p + 7));\n          }\n          fVar29 = (fVar29 - (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar30 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)) {\n            fVar30 = fVar29;\n          }\n          q[pPVar28[1].offset] = (double)fVar30;\n          if (EVar4 == LSBEndian) {\n            local_60 = *(float *)((int)p + 8);\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)((int)p + 8) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)p + 9),\n                                                *(byte *)((int)p + 10)),*(byte *)((int)p + 0xb));\n          }\n          fVar29 = (local_60 - (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar30 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)) {\n            fVar30 = fVar29;\n          }\n          q[pPVar28[2].offset] = (double)fVar30;\n          if (EVar4 == LSBEndian) {\n            fVar29 = *(float *)((int)p + 0xc);\n            local_6c = SUB41(fVar29,0);\n            bStack_6b = (byte)((uint)fVar29 >> 8);\n            uStack_6a = (ushort)((uint)fVar29 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)((int)p + 0xc) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)p + 0xd);\n            bStack_6b = *(byte *)((int)p + 0xe);\n            local_6c = *(byte *)((int)p + 0xf);\n          }\n          fVar29 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar30 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)) {\n            fVar30 = fVar29;\n          }\n          if (pPVar28[4].traits != UndefinedPixelTrait) {\n            q[pPVar28[4].offset] = (double)(DAT_0029f710 - fVar30);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          p = (uchar *)((int)p + sVar6 + 0x10);\n          q = q + sVar21;\n        } while (local_5c != (double *)(int)number_pixels);\n      }\n      break;\n    }" if (parenthesized_expression "(quantum_info->format == FloatingPointQuantumFormat)" ( (binary_expression "quantum_info->format == FloatingPointQuantumFormat" (field_expression "quantum_info->format" identifier -> field_identifier) == identifier) )) (compound_statement "{\n      if (0 < (int)number_pixels) {\n        pPVar28 = image->channel_map;\n        local_5c = (double *)0x0;\n        sVar6 = quantum_info->pad;\n        EVar4 = quantum_info->endian;\n        sVar21 = image->number_channels;\n        do {\n          local_64 = *(float *)p;\n          if (EVar4 != LSBEndian) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)p + 1),*(byte *)((int)p + 2))\n                                       ,*(byte *)((int)p + 3));\n          }\n          fVar30 = (local_64 - (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar29 = fVar14;\n          if ((fVar14 <= fVar30) && (fVar29 = DAT_002c5828, fVar30 <= DAT_002c5828)) {\n            fVar29 = fVar30;\n          }\n          q[pPVar28->offset] = (double)fVar29;\n          if (EVar4 == LSBEndian) {\n            fVar29 = *(float *)((int)p + 4);\n          }\n          else {\n            fVar29 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)((int)p + 4) << 0x18) >> 0x10\n                                                      ) | (ushort)*(byte *)((int)p + 5),\n                                              *(byte *)((int)p + 6)),*(byte *)((int)p + 7));\n          }\n          fVar29 = (fVar29 - (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar30 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)) {\n            fVar30 = fVar29;\n          }\n          q[pPVar28[1].offset] = (double)fVar30;\n          if (EVar4 == LSBEndian) {\n            local_60 = *(float *)((int)p + 8);\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)((int)p + 8) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)p + 9),\n                                                *(byte *)((int)p + 10)),*(byte *)((int)p + 0xb));\n          }\n          fVar29 = (local_60 - (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar30 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)) {\n            fVar30 = fVar29;\n          }\n          q[pPVar28[2].offset] = (double)fVar30;\n          if (EVar4 == LSBEndian) {\n            fVar29 = *(float *)((int)p + 0xc);\n            local_6c = SUB41(fVar29,0);\n            bStack_6b = (byte)((uint)fVar29 >> 8);\n            uStack_6a = (ushort)((uint)fVar29 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)((int)p + 0xc) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)p + 0xd);\n            bStack_6b = *(byte *)((int)p + 0xe);\n            local_6c = *(byte *)((int)p + 0xf);\n          }\n          fVar29 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar30 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)) {\n            fVar30 = fVar29;\n          }\n          if (pPVar28[4].traits != UndefinedPixelTrait) {\n            q[pPVar28[4].offset] = (double)(DAT_0029f710 - fVar30);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          p = (uchar *)((int)p + sVar6 + 0x10);\n          q = q + sVar21;\n        } while (local_5c != (double *)(int)number_pixels);\n      }\n      break;\n    }" { (if_statement "if (0 < (int)number_pixels) {\n        pPVar28 = image->channel_map;\n        local_5c = (double *)0x0;\n        sVar6 = quantum_info->pad;\n        EVar4 = quantum_info->endian;\n        sVar21 = image->number_channels;\n        do {\n          local_64 = *(float *)p;\n          if (EVar4 != LSBEndian) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)p + 1),*(byte *)((int)p + 2))\n                                       ,*(byte *)((int)p + 3));\n          }\n          fVar30 = (local_64 - (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar29 = fVar14;\n          if ((fVar14 <= fVar30) && (fVar29 = DAT_002c5828, fVar30 <= DAT_002c5828)) {\n            fVar29 = fVar30;\n          }\n          q[pPVar28->offset] = (double)fVar29;\n          if (EVar4 == LSBEndian) {\n            fVar29 = *(float *)((int)p + 4);\n          }\n          else {\n            fVar29 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)((int)p + 4) << 0x18) >> 0x10\n                                                      ) | (ushort)*(byte *)((int)p + 5),\n                                              *(byte *)((int)p + 6)),*(byte *)((int)p + 7));\n          }\n          fVar29 = (fVar29 - (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar30 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)) {\n            fVar30 = fVar29;\n          }\n          q[pPVar28[1].offset] = (double)fVar30;\n          if (EVar4 == LSBEndian) {\n            local_60 = *(float *)((int)p + 8);\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)((int)p + 8) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)p + 9),\n                                                *(byte *)((int)p + 10)),*(byte *)((int)p + 0xb));\n          }\n          fVar29 = (local_60 - (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar30 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)) {\n            fVar30 = fVar29;\n          }\n          q[pPVar28[2].offset] = (double)fVar30;\n          if (EVar4 == LSBEndian) {\n            fVar29 = *(float *)((int)p + 0xc);\n            local_6c = SUB41(fVar29,0);\n            bStack_6b = (byte)((uint)fVar29 >> 8);\n            uStack_6a = (ushort)((uint)fVar29 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)((int)p + 0xc) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)p + 0xd);\n            bStack_6b = *(byte *)((int)p + 0xe);\n            local_6c = *(byte *)((int)p + 0xf);\n          }\n          fVar29 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar30 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)) {\n            fVar30 = fVar29;\n          }\n          if (pPVar28[4].traits != UndefinedPixelTrait) {\n            q[pPVar28[4].offset] = (double)(DAT_0029f710 - fVar30);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          p = (uchar *)((int)p + sVar6 + 0x10);\n          q = q + sVar21;\n        } while (local_5c != (double *)(int)number_pixels);\n      }" if (parenthesized_expression "(0 < (int)number_pixels)" ( (binary_expression "0 < (int)number_pixels" number_literal < (cast_expression "(int)number_pixels" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        pPVar28 = image->channel_map;\n        local_5c = (double *)0x0;\n        sVar6 = quantum_info->pad;\n        EVar4 = quantum_info->endian;\n        sVar21 = image->number_channels;\n        do {\n          local_64 = *(float *)p;\n          if (EVar4 != LSBEndian) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)p + 1),*(byte *)((int)p + 2))\n                                       ,*(byte *)((int)p + 3));\n          }\n          fVar30 = (local_64 - (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar29 = fVar14;\n          if ((fVar14 <= fVar30) && (fVar29 = DAT_002c5828, fVar30 <= DAT_002c5828)) {\n            fVar29 = fVar30;\n          }\n          q[pPVar28->offset] = (double)fVar29;\n          if (EVar4 == LSBEndian) {\n            fVar29 = *(float *)((int)p + 4);\n          }\n          else {\n            fVar29 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)((int)p + 4) << 0x18) >> 0x10\n                                                      ) | (ushort)*(byte *)((int)p + 5),\n                                              *(byte *)((int)p + 6)),*(byte *)((int)p + 7));\n          }\n          fVar29 = (fVar29 - (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar30 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)) {\n            fVar30 = fVar29;\n          }\n          q[pPVar28[1].offset] = (double)fVar30;\n          if (EVar4 == LSBEndian) {\n            local_60 = *(float *)((int)p + 8);\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)((int)p + 8) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)p + 9),\n                                                *(byte *)((int)p + 10)),*(byte *)((int)p + 0xb));\n          }\n          fVar29 = (local_60 - (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar30 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)) {\n            fVar30 = fVar29;\n          }\n          q[pPVar28[2].offset] = (double)fVar30;\n          if (EVar4 == LSBEndian) {\n            fVar29 = *(float *)((int)p + 0xc);\n            local_6c = SUB41(fVar29,0);\n            bStack_6b = (byte)((uint)fVar29 >> 8);\n            uStack_6a = (ushort)((uint)fVar29 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)((int)p + 0xc) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)p + 0xd);\n            bStack_6b = *(byte *)((int)p + 0xe);\n            local_6c = *(byte *)((int)p + 0xf);\n          }\n          fVar29 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar30 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)) {\n            fVar30 = fVar29;\n          }\n          if (pPVar28[4].traits != UndefinedPixelTrait) {\n            q[pPVar28[4].offset] = (double)(DAT_0029f710 - fVar30);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          p = (uchar *)((int)p + sVar6 + 0x10);\n          q = q + sVar21;\n        } while (local_5c != (double *)(int)number_pixels);\n      }" { (expression_statement "pPVar28 = image->channel_map;" (assignment_expression "pPVar28 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) (expression_statement "local_5c = (double *)0x0;" (assignment_expression "local_5c = (double *)0x0" identifier = (cast_expression "(double *)0x0" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sVar6 = quantum_info->pad;" (assignment_expression "sVar6 = quantum_info->pad" identifier = (field_expression "quantum_info->pad" identifier -> field_identifier)) ;) (expression_statement "EVar4 = quantum_info->endian;" (assignment_expression "EVar4 = quantum_info->endian" identifier = (field_expression "quantum_info->endian" identifier -> field_identifier)) ;) (expression_statement "sVar21 = image->number_channels;" (assignment_expression "sVar21 = image->number_channels" identifier = (field_expression "image->number_channels" identifier -> field_identifier)) ;) (do_statement "do {\n          local_64 = *(float *)p;\n          if (EVar4 != LSBEndian) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)p + 1),*(byte *)((int)p + 2))\n                                       ,*(byte *)((int)p + 3));\n          }\n          fVar30 = (local_64 - (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar29 = fVar14;\n          if ((fVar14 <= fVar30) && (fVar29 = DAT_002c5828, fVar30 <= DAT_002c5828)) {\n            fVar29 = fVar30;\n          }\n          q[pPVar28->offset] = (double)fVar29;\n          if (EVar4 == LSBEndian) {\n            fVar29 = *(float *)((int)p + 4);\n          }\n          else {\n            fVar29 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)((int)p + 4) << 0x18) >> 0x10\n                                                      ) | (ushort)*(byte *)((int)p + 5),\n                                              *(byte *)((int)p + 6)),*(byte *)((int)p + 7));\n          }\n          fVar29 = (fVar29 - (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar30 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)) {\n            fVar30 = fVar29;\n          }\n          q[pPVar28[1].offset] = (double)fVar30;\n          if (EVar4 == LSBEndian) {\n            local_60 = *(float *)((int)p + 8);\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)((int)p + 8) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)p + 9),\n                                                *(byte *)((int)p + 10)),*(byte *)((int)p + 0xb));\n          }\n          fVar29 = (local_60 - (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar30 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)) {\n            fVar30 = fVar29;\n          }\n          q[pPVar28[2].offset] = (double)fVar30;\n          if (EVar4 == LSBEndian) {\n            fVar29 = *(float *)((int)p + 0xc);\n            local_6c = SUB41(fVar29,0);\n            bStack_6b = (byte)((uint)fVar29 >> 8);\n            uStack_6a = (ushort)((uint)fVar29 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)((int)p + 0xc) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)p + 0xd);\n            bStack_6b = *(byte *)((int)p + 0xe);\n            local_6c = *(byte *)((int)p + 0xf);\n          }\n          fVar29 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar30 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)) {\n            fVar30 = fVar29;\n          }\n          if (pPVar28[4].traits != UndefinedPixelTrait) {\n            q[pPVar28[4].offset] = (double)(DAT_0029f710 - fVar30);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          p = (uchar *)((int)p + sVar6 + 0x10);\n          q = q + sVar21;\n        } while (local_5c != (double *)(int)number_pixels);" do (compound_statement "{\n          local_64 = *(float *)p;\n          if (EVar4 != LSBEndian) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)p + 1),*(byte *)((int)p + 2))\n                                       ,*(byte *)((int)p + 3));\n          }\n          fVar30 = (local_64 - (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar29 = fVar14;\n          if ((fVar14 <= fVar30) && (fVar29 = DAT_002c5828, fVar30 <= DAT_002c5828)) {\n            fVar29 = fVar30;\n          }\n          q[pPVar28->offset] = (double)fVar29;\n          if (EVar4 == LSBEndian) {\n            fVar29 = *(float *)((int)p + 4);\n          }\n          else {\n            fVar29 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)((int)p + 4) << 0x18) >> 0x10\n                                                      ) | (ushort)*(byte *)((int)p + 5),\n                                              *(byte *)((int)p + 6)),*(byte *)((int)p + 7));\n          }\n          fVar29 = (fVar29 - (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar30 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)) {\n            fVar30 = fVar29;\n          }\n          q[pPVar28[1].offset] = (double)fVar30;\n          if (EVar4 == LSBEndian) {\n            local_60 = *(float *)((int)p + 8);\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)((int)p + 8) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)p + 9),\n                                                *(byte *)((int)p + 10)),*(byte *)((int)p + 0xb));\n          }\n          fVar29 = (local_60 - (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar30 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)) {\n            fVar30 = fVar29;\n          }\n          q[pPVar28[2].offset] = (double)fVar30;\n          if (EVar4 == LSBEndian) {\n            fVar29 = *(float *)((int)p + 0xc);\n            local_6c = SUB41(fVar29,0);\n            bStack_6b = (byte)((uint)fVar29 >> 8);\n            uStack_6a = (ushort)((uint)fVar29 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)((int)p + 0xc) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)p + 0xd);\n            bStack_6b = *(byte *)((int)p + 0xe);\n            local_6c = *(byte *)((int)p + 0xf);\n          }\n          fVar29 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)quantum_info->minimum) * (float)quantum_info->scale;\n          fVar30 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)) {\n            fVar30 = fVar29;\n          }\n          if (pPVar28[4].traits != UndefinedPixelTrait) {\n            q[pPVar28[4].offset] = (double)(DAT_0029f710 - fVar30);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          p = (uchar *)((int)p + sVar6 + 0x10);\n          q = q + sVar21;\n        }" { (expression_statement "local_64 = *(float *)p;" (assignment_expression "local_64 = *(float *)p" identifier = (pointer_expression "*(float *)p" * (cast_expression "(float *)p" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (EVar4 != LSBEndian) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)p + 1),*(byte *)((int)p + 2))\n                                       ,*(byte *)((int)p + 3));\n          }" if (parenthesized_expression "(EVar4 != LSBEndian)" ( (binary_expression "EVar4 != LSBEndian" identifier != identifier) )) (compound_statement "{\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)p + 1),*(byte *)((int)p + 2))\n                                       ,*(byte *)((int)p + 3));\n          }" { (expression_statement "local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)p + 1),*(byte *)((int)p + 2))\n                                       ,*(byte *)((int)p + 3));" (assignment_expression "local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)p + 1),*(byte *)((int)p + 2))\n                                       ,*(byte *)((int)p + 3))" identifier = (cast_expression "(float)CONCAT31(CONCAT21((ushort)(((uint)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)p + 1),*(byte *)((int)p + 2))\n                                       ,*(byte *)((int)p + 3))" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT31(CONCAT21((ushort)(((uint)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)p + 1),*(byte *)((int)p + 2))\n                                       ,*(byte *)((int)p + 3))" identifier (argument_list "(CONCAT21((ushort)(((uint)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)p + 1),*(byte *)((int)p + 2))\n                                       ,*(byte *)((int)p + 3))" ( (call_expression "CONCAT21((ushort)(((uint)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)p + 1),*(byte *)((int)p + 2))" identifier (argument_list "((ushort)(((uint)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)p + 1),*(byte *)((int)p + 2))" ( (binary_expression "(ushort)(((uint)*p << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)p + 1)" (call_expression "(ushort)(((uint)*p << 0x18) >> 0x10)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(((uint)*p << 0x18) >> 0x10)" ( (binary_expression "((uint)*p << 0x18) >> 0x10" (parenthesized_expression "((uint)*p << 0x18)" ( (binary_expression "(uint)*p << 0x18" (binary_expression "(uint)*p" (parenthesized_expression "(uint)" ( identifier )) * identifier) << number_literal) )) >> number_literal) ))) | (binary_expression "(ushort)*(byte *)((int)p + 1)" (parenthesized_expression "(ushort)" ( identifier )) * (cast_expression "(byte *)((int)p + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 1)" ( (binary_expression "(int)p + 1" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) , (pointer_expression "*(byte *)((int)p + 2)" * (cast_expression "(byte *)((int)p + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 2)" ( (binary_expression "(int)p + 2" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) , (pointer_expression "*(byte *)((int)p + 3)" * (cast_expression "(byte *)((int)p + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 3)" ( (binary_expression "(int)p + 3" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))))) ;) })) (expression_statement "fVar30 = (local_64 - (float)quantum_info->minimum) * (float)quantum_info->scale;" (assignment_expression "fVar30 = (local_64 - (float)quantum_info->minimum) * (float)quantum_info->scale" identifier = (binary_expression "(local_64 - (float)quantum_info->minimum) * (float)quantum_info->scale" (parenthesized_expression "(local_64 - (float)quantum_info->minimum)" ( (binary_expression "local_64 - (float)quantum_info->minimum" identifier - (cast_expression "(float)quantum_info->minimum" ( (type_descriptor "float" primitive_type) ) (field_expression "quantum_info->minimum" identifier -> field_identifier))) )) * (cast_expression "(float)quantum_info->scale" ( (type_descriptor "float" primitive_type) ) (field_expression "quantum_info->scale" identifier -> field_identifier)))) ;) (expression_statement "fVar29 = fVar14;" (assignment_expression "fVar29 = fVar14" identifier = identifier) ;) (if_statement "if ((fVar14 <= fVar30) && (fVar29 = DAT_002c5828, fVar30 <= DAT_002c5828)) {\n            fVar29 = fVar30;\n          }" if (parenthesized_expression "((fVar14 <= fVar30) && (fVar29 = DAT_002c5828, fVar30 <= DAT_002c5828))" ( (binary_expression "(fVar14 <= fVar30) && (fVar29 = DAT_002c5828, fVar30 <= DAT_002c5828)" (parenthesized_expression "(fVar14 <= fVar30)" ( (binary_expression "fVar14 <= fVar30" identifier <= identifier) )) && (parenthesized_expression "(fVar29 = DAT_002c5828, fVar30 <= DAT_002c5828)" ( (comma_expression "fVar29 = DAT_002c5828, fVar30 <= DAT_002c5828" (assignment_expression "fVar29 = DAT_002c5828" identifier = identifier) , (binary_expression "fVar30 <= DAT_002c5828" identifier <= identifier)) ))) )) (compound_statement "{\n            fVar29 = fVar30;\n          }" { (expression_statement "fVar29 = fVar30;" (assignment_expression "fVar29 = fVar30" identifier = identifier) ;) })) (expression_statement "q[pPVar28->offset] = (double)fVar29;" (assignment_expression "q[pPVar28->offset] = (double)fVar29" (subscript_expression "q[pPVar28->offset]" identifier [ (field_expression "pPVar28->offset" identifier -> field_identifier) ]) = (cast_expression "(double)fVar29" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (if_statement "if (EVar4 == LSBEndian) {\n            fVar29 = *(float *)((int)p + 4);\n          }\n          else {\n            fVar29 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)((int)p + 4) << 0x18) >> 0x10\n                                                      ) | (ushort)*(byte *)((int)p + 5),\n                                              *(byte *)((int)p + 6)),*(byte *)((int)p + 7));\n          }" if (parenthesized_expression "(EVar4 == LSBEndian)" ( (binary_expression "EVar4 == LSBEndian" identifier == identifier) )) (compound_statement "{\n            fVar29 = *(float *)((int)p + 4);\n          }" { (expression_statement "fVar29 = *(float *)((int)p + 4);" (assignment_expression "fVar29 = *(float *)((int)p + 4)" identifier = (pointer_expression "*(float *)((int)p + 4)" * (cast_expression "(float *)((int)p + 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 4)" ( (binary_expression "(int)p + 4" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }) (else_clause "else {\n            fVar29 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)((int)p + 4) << 0x18) >> 0x10\n                                                      ) | (ushort)*(byte *)((int)p + 5),\n                                              *(byte *)((int)p + 6)),*(byte *)((int)p + 7));\n          }" else (compound_statement "{\n            fVar29 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)((int)p + 4) << 0x18) >> 0x10\n                                                      ) | (ushort)*(byte *)((int)p + 5),\n                                              *(byte *)((int)p + 6)),*(byte *)((int)p + 7));\n          }" { (expression_statement "fVar29 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)((int)p + 4) << 0x18) >> 0x10\n                                                      ) | (ushort)*(byte *)((int)p + 5),\n                                              *(byte *)((int)p + 6)),*(byte *)((int)p + 7));" (assignment_expression "fVar29 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)((int)p + 4) << 0x18) >> 0x10\n                                                      ) | (ushort)*(byte *)((int)p + 5),\n                                              *(byte *)((int)p + 6)),*(byte *)((int)p + 7))" identifier = (cast_expression "(float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)((int)p + 4) << 0x18) >> 0x10\n                                                      ) | (ushort)*(byte *)((int)p + 5),\n                                              *(byte *)((int)p + 6)),*(byte *)((int)p + 7))" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT31(CONCAT21((ushort)(((uint)*(byte *)((int)p + 4) << 0x18) >> 0x10\n                                                      ) | (ushort)*(byte *)((int)p + 5),\n                                              *(byte *)((int)p + 6)),*(byte *)((int)p + 7))" identifier (argument_list "(CONCAT21((ushort)(((uint)*(byte *)((int)p + 4) << 0x18) >> 0x10\n                                                      ) | (ushort)*(byte *)((int)p + 5),\n                                              *(byte *)((int)p + 6)),*(byte *)((int)p + 7))" ( (call_expression "CONCAT21((ushort)(((uint)*(byte *)((int)p + 4) << 0x18) >> 0x10\n                                                      ) | (ushort)*(byte *)((int)p + 5),\n                                              *(byte *)((int)p + 6))" identifier (argument_list "((ushort)(((uint)*(byte *)((int)p + 4) << 0x18) >> 0x10\n                                                      ) | (ushort)*(byte *)((int)p + 5),\n                                              *(byte *)((int)p + 6))" ( (binary_expression "(ushort)(((uint)*(byte *)((int)p + 4) << 0x18) >> 0x10\n                                                      ) | (ushort)*(byte *)((int)p + 5)" (call_expression "(ushort)(((uint)*(byte *)((int)p + 4) << 0x18) >> 0x10\n                                                      )" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(((uint)*(byte *)((int)p + 4) << 0x18) >> 0x10\n                                                      )" ( (binary_expression "((uint)*(byte *)((int)p + 4) << 0x18) >> 0x10" (parenthesized_expression "((uint)*(byte *)((int)p + 4) << 0x18)" ( (binary_expression "(uint)*(byte *)((int)p + 4) << 0x18" (binary_expression "(uint)*(byte *)((int)p + 4)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)p + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 4)" ( (binary_expression "(int)p + 4" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) << number_literal) )) >> number_literal) ))) | (binary_expression "(ushort)*(byte *)((int)p + 5)" (parenthesized_expression "(ushort)" ( identifier )) * (cast_expression "(byte *)((int)p + 5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 5)" ( (binary_expression "(int)p + 5" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) , (pointer_expression "*(byte *)((int)p + 6)" * (cast_expression "(byte *)((int)p + 6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 6)" ( (binary_expression "(int)p + 6" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) , (pointer_expression "*(byte *)((int)p + 7)" * (cast_expression "(byte *)((int)p + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 7)" ( (binary_expression "(int)p + 7" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))))) ;) }))) (expression_statement "fVar29 = (fVar29 - (float)quantum_info->minimum) * (float)quantum_info->scale;" (assignment_expression "fVar29 = (fVar29 - (float)quantum_info->minimum) * (float)quantum_info->scale" identifier = (binary_expression "(fVar29 - (float)quantum_info->minimum) * (float)quantum_info->scale" (parenthesized_expression "(fVar29 - (float)quantum_info->minimum)" ( (binary_expression "fVar29 - (float)quantum_info->minimum" identifier - (cast_expression "(float)quantum_info->minimum" ( (type_descriptor "float" primitive_type) ) (field_expression "quantum_info->minimum" identifier -> field_identifier))) )) * (cast_expression "(float)quantum_info->scale" ( (type_descriptor "float" primitive_type) ) (field_expression "quantum_info->scale" identifier -> field_identifier)))) ;) (expression_statement "fVar30 = DAT_002c5824;" (assignment_expression "fVar30 = DAT_002c5824" identifier = identifier) ;) (if_statement "if ((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)) {\n            fVar30 = fVar29;\n          }" if (parenthesized_expression "((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828))" ( (binary_expression "(DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)" (parenthesized_expression "(DAT_002c5824 <= fVar29)" ( (binary_expression "DAT_002c5824 <= fVar29" identifier <= identifier) )) && (parenthesized_expression "(fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)" ( (comma_expression "fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828" (assignment_expression "fVar30 = DAT_002c5828" identifier = identifier) , (binary_expression "fVar29 <= DAT_002c5828" identifier <= identifier)) ))) )) (compound_statement "{\n            fVar30 = fVar29;\n          }" { (expression_statement "fVar30 = fVar29;" (assignment_expression "fVar30 = fVar29" identifier = identifier) ;) })) (expression_statement "q[pPVar28[1].offset] = (double)fVar30;" (assignment_expression "q[pPVar28[1].offset] = (double)fVar30" (subscript_expression "q[pPVar28[1].offset]" identifier [ (field_expression "pPVar28[1].offset" (subscript_expression "pPVar28[1]" identifier [ number_literal ]) . field_identifier) ]) = (cast_expression "(double)fVar30" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (if_statement "if (EVar4 == LSBEndian) {\n            local_60 = *(float *)((int)p + 8);\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)((int)p + 8) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)p + 9),\n                                                *(byte *)((int)p + 10)),*(byte *)((int)p + 0xb));\n          }" if (parenthesized_expression "(EVar4 == LSBEndian)" ( (binary_expression "EVar4 == LSBEndian" identifier == identifier) )) (compound_statement "{\n            local_60 = *(float *)((int)p + 8);\n          }" { (expression_statement "local_60 = *(float *)((int)p + 8);" (assignment_expression "local_60 = *(float *)((int)p + 8)" identifier = (pointer_expression "*(float *)((int)p + 8)" * (cast_expression "(float *)((int)p + 8)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 8)" ( (binary_expression "(int)p + 8" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }) (else_clause "else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)((int)p + 8) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)p + 9),\n                                                *(byte *)((int)p + 10)),*(byte *)((int)p + 0xb));\n          }" else (compound_statement "{\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)((int)p + 8) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)p + 9),\n                                                *(byte *)((int)p + 10)),*(byte *)((int)p + 0xb));\n          }" { (expression_statement "local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)((int)p + 8) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)p + 9),\n                                                *(byte *)((int)p + 10)),*(byte *)((int)p + 0xb));" (assignment_expression "local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)((int)p + 8) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)p + 9),\n                                                *(byte *)((int)p + 10)),*(byte *)((int)p + 0xb))" identifier = (cast_expression "(float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)((int)p + 8) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)p + 9),\n                                                *(byte *)((int)p + 10)),*(byte *)((int)p + 0xb))" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT31(CONCAT21((ushort)(((uint)*(byte *)((int)p + 8) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)p + 9),\n                                                *(byte *)((int)p + 10)),*(byte *)((int)p + 0xb))" identifier (argument_list "(CONCAT21((ushort)(((uint)*(byte *)((int)p + 8) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)p + 9),\n                                                *(byte *)((int)p + 10)),*(byte *)((int)p + 0xb))" ( (call_expression "CONCAT21((ushort)(((uint)*(byte *)((int)p + 8) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)p + 9),\n                                                *(byte *)((int)p + 10))" identifier (argument_list "((ushort)(((uint)*(byte *)((int)p + 8) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)p + 9),\n                                                *(byte *)((int)p + 10))" ( (binary_expression "(ushort)(((uint)*(byte *)((int)p + 8) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)p + 9)" (call_expression "(ushort)(((uint)*(byte *)((int)p + 8) << 0x18) >>\n                                                        0x10)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(((uint)*(byte *)((int)p + 8) << 0x18) >>\n                                                        0x10)" ( (binary_expression "((uint)*(byte *)((int)p + 8) << 0x18) >>\n                                                        0x10" (parenthesized_expression "((uint)*(byte *)((int)p + 8) << 0x18)" ( (binary_expression "(uint)*(byte *)((int)p + 8) << 0x18" (binary_expression "(uint)*(byte *)((int)p + 8)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)p + 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 8)" ( (binary_expression "(int)p + 8" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) << number_literal) )) >> number_literal) ))) | (binary_expression "(ushort)*(byte *)((int)p + 9)" (parenthesized_expression "(ushort)" ( identifier )) * (cast_expression "(byte *)((int)p + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 9)" ( (binary_expression "(int)p + 9" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) , (pointer_expression "*(byte *)((int)p + 10)" * (cast_expression "(byte *)((int)p + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 10)" ( (binary_expression "(int)p + 10" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) , (pointer_expression "*(byte *)((int)p + 0xb)" * (cast_expression "(byte *)((int)p + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 0xb)" ( (binary_expression "(int)p + 0xb" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))))) ;) }))) (expression_statement "fVar29 = (local_60 - (float)quantum_info->minimum) * (float)quantum_info->scale;" (assignment_expression "fVar29 = (local_60 - (float)quantum_info->minimum) * (float)quantum_info->scale" identifier = (binary_expression "(local_60 - (float)quantum_info->minimum) * (float)quantum_info->scale" (parenthesized_expression "(local_60 - (float)quantum_info->minimum)" ( (binary_expression "local_60 - (float)quantum_info->minimum" identifier - (cast_expression "(float)quantum_info->minimum" ( (type_descriptor "float" primitive_type) ) (field_expression "quantum_info->minimum" identifier -> field_identifier))) )) * (cast_expression "(float)quantum_info->scale" ( (type_descriptor "float" primitive_type) ) (field_expression "quantum_info->scale" identifier -> field_identifier)))) ;) (expression_statement "fVar30 = DAT_002c5824;" (assignment_expression "fVar30 = DAT_002c5824" identifier = identifier) ;) (if_statement "if ((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)) {\n            fVar30 = fVar29;\n          }" if (parenthesized_expression "((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828))" ( (binary_expression "(DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)" (parenthesized_expression "(DAT_002c5824 <= fVar29)" ( (binary_expression "DAT_002c5824 <= fVar29" identifier <= identifier) )) && (parenthesized_expression "(fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)" ( (comma_expression "fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828" (assignment_expression "fVar30 = DAT_002c5828" identifier = identifier) , (binary_expression "fVar29 <= DAT_002c5828" identifier <= identifier)) ))) )) (compound_statement "{\n            fVar30 = fVar29;\n          }" { (expression_statement "fVar30 = fVar29;" (assignment_expression "fVar30 = fVar29" identifier = identifier) ;) })) (expression_statement "q[pPVar28[2].offset] = (double)fVar30;" (assignment_expression "q[pPVar28[2].offset] = (double)fVar30" (subscript_expression "q[pPVar28[2].offset]" identifier [ (field_expression "pPVar28[2].offset" (subscript_expression "pPVar28[2]" identifier [ number_literal ]) . field_identifier) ]) = (cast_expression "(double)fVar30" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (if_statement "if (EVar4 == LSBEndian) {\n            fVar29 = *(float *)((int)p + 0xc);\n            local_6c = SUB41(fVar29,0);\n            bStack_6b = (byte)((uint)fVar29 >> 8);\n            uStack_6a = (ushort)((uint)fVar29 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)((int)p + 0xc) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)p + 0xd);\n            bStack_6b = *(byte *)((int)p + 0xe);\n            local_6c = *(byte *)((int)p + 0xf);\n          }" if (parenthesized_expression "(EVar4 == LSBEndian)" ( (binary_expression "EVar4 == LSBEndian" identifier == identifier) )) (compound_statement "{\n            fVar29 = *(float *)((int)p + 0xc);\n            local_6c = SUB41(fVar29,0);\n            bStack_6b = (byte)((uint)fVar29 >> 8);\n            uStack_6a = (ushort)((uint)fVar29 >> 0x10);\n          }" { (expression_statement "fVar29 = *(float *)((int)p + 0xc);" (assignment_expression "fVar29 = *(float *)((int)p + 0xc)" identifier = (pointer_expression "*(float *)((int)p + 0xc)" * (cast_expression "(float *)((int)p + 0xc)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 0xc)" ( (binary_expression "(int)p + 0xc" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "local_6c = SUB41(fVar29,0);" (assignment_expression "local_6c = SUB41(fVar29,0)" identifier = (call_expression "SUB41(fVar29,0)" identifier (argument_list "(fVar29,0)" ( identifier , number_literal )))) ;) (expression_statement "bStack_6b = (byte)((uint)fVar29 >> 8);" (assignment_expression "bStack_6b = (byte)((uint)fVar29 >> 8)" identifier = (call_expression "(byte)((uint)fVar29 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar29 >> 8)" ( (binary_expression "(uint)fVar29 >> 8" (cast_expression "(uint)fVar29" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uStack_6a = (ushort)((uint)fVar29 >> 0x10);" (assignment_expression "uStack_6a = (ushort)((uint)fVar29 >> 0x10)" identifier = (call_expression "(ushort)((uint)fVar29 >> 0x10)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "((uint)fVar29 >> 0x10)" ( (binary_expression "(uint)fVar29 >> 0x10" (cast_expression "(uint)fVar29" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) }) (else_clause "else {\n            uStack_6a = (ushort)(((uint)*(byte *)((int)p + 0xc) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)p + 0xd);\n            bStack_6b = *(byte *)((int)p + 0xe);\n            local_6c = *(byte *)((int)p + 0xf);\n          }" else (compound_statement "{\n            uStack_6a = (ushort)(((uint)*(byte *)((int)p + 0xc) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)p + 0xd);\n            bStack_6b = *(byte *)((int)p + 0xe);\n            local_6c = *(byte *)((int)p + 0xf);\n          }" { (expression_statement "uStack_6a = (ushort)(((uint)*(byte *)((int)p + 0xc) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)p + 0xd);" (assignment_expression "uStack_6a = (ushort)(((uint)*(byte *)((int)p + 0xc) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)p + 0xd)" identifier = (binary_expression "(ushort)(((uint)*(byte *)((int)p + 0xc) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)p + 0xd)" (call_expression "(ushort)(((uint)*(byte *)((int)p + 0xc) << 0x18) >> 0x10)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(((uint)*(byte *)((int)p + 0xc) << 0x18) >> 0x10)" ( (binary_expression "((uint)*(byte *)((int)p + 0xc) << 0x18) >> 0x10" (parenthesized_expression "((uint)*(byte *)((int)p + 0xc) << 0x18)" ( (binary_expression "(uint)*(byte *)((int)p + 0xc) << 0x18" (binary_expression "(uint)*(byte *)((int)p + 0xc)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)p + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 0xc)" ( (binary_expression "(int)p + 0xc" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) << number_literal) )) >> number_literal) ))) | (binary_expression "(ushort)*(byte *)((int)p + 0xd)" (parenthesized_expression "(ushort)" ( identifier )) * (cast_expression "(byte *)((int)p + 0xd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 0xd)" ( (binary_expression "(int)p + 0xd" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ;) (expression_statement "bStack_6b = *(byte *)((int)p + 0xe);" (assignment_expression "bStack_6b = *(byte *)((int)p + 0xe)" identifier = (pointer_expression "*(byte *)((int)p + 0xe)" * (cast_expression "(byte *)((int)p + 0xe)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 0xe)" ( (binary_expression "(int)p + 0xe" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "local_6c = *(byte *)((int)p + 0xf);" (assignment_expression "local_6c = *(byte *)((int)p + 0xf)" identifier = (pointer_expression "*(byte *)((int)p + 0xf)" * (cast_expression "(byte *)((int)p + 0xf)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 0xf)" ( (binary_expression "(int)p + 0xf" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }))) (expression_statement "fVar29 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)quantum_info->minimum) * (float)quantum_info->scale;" (assignment_expression "fVar29 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)quantum_info->minimum) * (float)quantum_info->scale" identifier = (binary_expression "((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)quantum_info->minimum) * (float)quantum_info->scale" (parenthesized_expression "((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)quantum_info->minimum)" ( (binary_expression "(float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)quantum_info->minimum" (cast_expression "(float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" identifier (argument_list "(uStack_6a,CONCAT11(bStack_6b,local_6c))" ( identifier , (call_expression "CONCAT11(bStack_6b,local_6c)" identifier (argument_list "(bStack_6b,local_6c)" ( identifier , identifier ))) )))) - (cast_expression "(float)quantum_info->minimum" ( (type_descriptor "float" primitive_type) ) (field_expression "quantum_info->minimum" identifier -> field_identifier))) )) * (cast_expression "(float)quantum_info->scale" ( (type_descriptor "float" primitive_type) ) (field_expression "quantum_info->scale" identifier -> field_identifier)))) ;) (expression_statement "fVar30 = DAT_002c5824;" (assignment_expression "fVar30 = DAT_002c5824" identifier = identifier) ;) (if_statement "if ((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)) {\n            fVar30 = fVar29;\n          }" if (parenthesized_expression "((DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828))" ( (binary_expression "(DAT_002c5824 <= fVar29) && (fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)" (parenthesized_expression "(DAT_002c5824 <= fVar29)" ( (binary_expression "DAT_002c5824 <= fVar29" identifier <= identifier) )) && (parenthesized_expression "(fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828)" ( (comma_expression "fVar30 = DAT_002c5828, fVar29 <= DAT_002c5828" (assignment_expression "fVar30 = DAT_002c5828" identifier = identifier) , (binary_expression "fVar29 <= DAT_002c5828" identifier <= identifier)) ))) )) (compound_statement "{\n            fVar30 = fVar29;\n          }" { (expression_statement "fVar30 = fVar29;" (assignment_expression "fVar30 = fVar29" identifier = identifier) ;) })) (if_statement "if (pPVar28[4].traits != UndefinedPixelTrait) {\n            q[pPVar28[4].offset] = (double)(DAT_0029f710 - fVar30);\n          }" if (parenthesized_expression "(pPVar28[4].traits != UndefinedPixelTrait)" ( (binary_expression "pPVar28[4].traits != UndefinedPixelTrait" (field_expression "pPVar28[4].traits" (subscript_expression "pPVar28[4]" identifier [ number_literal ]) . field_identifier) != identifier) )) (compound_statement "{\n            q[pPVar28[4].offset] = (double)(DAT_0029f710 - fVar30);\n          }" { (expression_statement "q[pPVar28[4].offset] = (double)(DAT_0029f710 - fVar30);" (assignment_expression "q[pPVar28[4].offset] = (double)(DAT_0029f710 - fVar30)" (subscript_expression "q[pPVar28[4].offset]" identifier [ (field_expression "pPVar28[4].offset" (subscript_expression "pPVar28[4]" identifier [ number_literal ]) . field_identifier) ]) = (cast_expression "(double)(DAT_0029f710 - fVar30)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(DAT_0029f710 - fVar30)" ( (binary_expression "DAT_0029f710 - fVar30" identifier - identifier) )))) ;) })) (expression_statement "local_5c = (double *)((int)local_5c + 1);" (assignment_expression "local_5c = (double *)((int)local_5c + 1)" identifier = (cast_expression "(double *)((int)local_5c + 1)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_5c + 1)" ( (binary_expression "(int)local_5c + 1" (cast_expression "(int)local_5c" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "p = (uchar *)((int)p + sVar6 + 0x10);" (assignment_expression "p = (uchar *)((int)p + sVar6 + 0x10)" identifier = (cast_expression "(uchar *)((int)p + sVar6 + 0x10)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + sVar6 + 0x10)" ( (binary_expression "(int)p + sVar6 + 0x10" (binary_expression "(int)p + sVar6" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ;) (expression_statement "q = q + sVar21;" (assignment_expression "q = q + sVar21" identifier = (binary_expression "q + sVar21" identifier + identifier)) ;) }) while (parenthesized_expression "(local_5c != (double *)(int)number_pixels)" ( (binary_expression "local_5c != (double *)(int)number_pixels" identifier != (cast_expression "(double *)(int)number_pixels" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)number_pixels" ( (type_descriptor "int" primitive_type) ) identifier))) )) ;) })) (break_statement "break;" break ;) })) (labeled_statement "LAB_001616dd:\n    if (0 < (int)number_pixels) {\n      pPVar28 = image->channel_map;\n      EVar4 = quantum_info->endian;\n      sVar6 = quantum_info->pad;\n      sVar21 = image->number_channels;\n      iVar18 = pPVar28->offset;\n      iVar5 = pPVar28[1].offset;\n      iVar7 = pPVar28[2].offset;\n      PVar8 = pPVar28[4].traits;\n      iVar27 = 0;\n      do {\n        fVar29 = DAT_002a7fec;\n        uVar23 = *(uint *)((int)p + 0xc);\n        uVar25 = *(uint *)((int)p + 4);\n        uVar22 = *(uint *)((int)p + 8);\n        uVar17 = *(uint *)p;\n        if (EVar4 == LSBEndian) {\n          q[iVar18] = (double)((float)uVar17 / DAT_002a7fec);\n          q[iVar5] = (double)((float)uVar25 / fVar29);\n          q[iVar7] = (double)((float)uVar22 / fVar29);\n        }\n        else {\n          uVar15 = (ushort)(uVar17 >> 8);\n          uStack_6a = uVar15 & 0xff | (ushort)((uVar17 << 0x18) >> 0x10);\n          uVar23 = uVar23 >> 0x18 | (uVar23 & 0xff0000) >> 8 | (uVar23 & 0xff00) << 8 |\n                   uVar23 << 0x18;\n          q[iVar18] = (double)((float)CONCAT22(uStack_6a,\n                                               (ushort)(byte)(uVar17 >> 0x18) | uVar15 & 0xff00) /\n                              fVar30);\n          q[iVar5] = (double)((float)(uVar25 >> 0x18 | (uVar25 & 0xff0000) >> 8 |\n                                      (uVar25 & 0xff00) << 8 | uVar25 << 0x18) / fVar30);\n          q[iVar7] = (double)((float)(uVar22 >> 0x18 | (uVar22 & 0xff0000) >> 8 |\n                                      (uVar22 & 0xff00) << 8 | uVar22 << 0x18) / fVar30);\n        }\n        if (PVar8 != UndefinedPixelTrait) {\n          q[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)uVar23 / DAT_002a7fec);\n        }\n        p = (uchar *)((int)p + sVar6 + 0x10);\n        iVar27 = iVar27 + 1;\n        q = q + sVar21;\n      } while (iVar27 != (int)number_pixels);\n    }" statement_identifier : (if_statement "if (0 < (int)number_pixels) {\n      pPVar28 = image->channel_map;\n      EVar4 = quantum_info->endian;\n      sVar6 = quantum_info->pad;\n      sVar21 = image->number_channels;\n      iVar18 = pPVar28->offset;\n      iVar5 = pPVar28[1].offset;\n      iVar7 = pPVar28[2].offset;\n      PVar8 = pPVar28[4].traits;\n      iVar27 = 0;\n      do {\n        fVar29 = DAT_002a7fec;\n        uVar23 = *(uint *)((int)p + 0xc);\n        uVar25 = *(uint *)((int)p + 4);\n        uVar22 = *(uint *)((int)p + 8);\n        uVar17 = *(uint *)p;\n        if (EVar4 == LSBEndian) {\n          q[iVar18] = (double)((float)uVar17 / DAT_002a7fec);\n          q[iVar5] = (double)((float)uVar25 / fVar29);\n          q[iVar7] = (double)((float)uVar22 / fVar29);\n        }\n        else {\n          uVar15 = (ushort)(uVar17 >> 8);\n          uStack_6a = uVar15 & 0xff | (ushort)((uVar17 << 0x18) >> 0x10);\n          uVar23 = uVar23 >> 0x18 | (uVar23 & 0xff0000) >> 8 | (uVar23 & 0xff00) << 8 |\n                   uVar23 << 0x18;\n          q[iVar18] = (double)((float)CONCAT22(uStack_6a,\n                                               (ushort)(byte)(uVar17 >> 0x18) | uVar15 & 0xff00) /\n                              fVar30);\n          q[iVar5] = (double)((float)(uVar25 >> 0x18 | (uVar25 & 0xff0000) >> 8 |\n                                      (uVar25 & 0xff00) << 8 | uVar25 << 0x18) / fVar30);\n          q[iVar7] = (double)((float)(uVar22 >> 0x18 | (uVar22 & 0xff0000) >> 8 |\n                                      (uVar22 & 0xff00) << 8 | uVar22 << 0x18) / fVar30);\n        }\n        if (PVar8 != UndefinedPixelTrait) {\n          q[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)uVar23 / DAT_002a7fec);\n        }\n        p = (uchar *)((int)p + sVar6 + 0x10);\n        iVar27 = iVar27 + 1;\n        q = q + sVar21;\n      } while (iVar27 != (int)number_pixels);\n    }" if (parenthesized_expression "(0 < (int)number_pixels)" ( (binary_expression "0 < (int)number_pixels" number_literal < (cast_expression "(int)number_pixels" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      pPVar28 = image->channel_map;\n      EVar4 = quantum_info->endian;\n      sVar6 = quantum_info->pad;\n      sVar21 = image->number_channels;\n      iVar18 = pPVar28->offset;\n      iVar5 = pPVar28[1].offset;\n      iVar7 = pPVar28[2].offset;\n      PVar8 = pPVar28[4].traits;\n      iVar27 = 0;\n      do {\n        fVar29 = DAT_002a7fec;\n        uVar23 = *(uint *)((int)p + 0xc);\n        uVar25 = *(uint *)((int)p + 4);\n        uVar22 = *(uint *)((int)p + 8);\n        uVar17 = *(uint *)p;\n        if (EVar4 == LSBEndian) {\n          q[iVar18] = (double)((float)uVar17 / DAT_002a7fec);\n          q[iVar5] = (double)((float)uVar25 / fVar29);\n          q[iVar7] = (double)((float)uVar22 / fVar29);\n        }\n        else {\n          uVar15 = (ushort)(uVar17 >> 8);\n          uStack_6a = uVar15 & 0xff | (ushort)((uVar17 << 0x18) >> 0x10);\n          uVar23 = uVar23 >> 0x18 | (uVar23 & 0xff0000) >> 8 | (uVar23 & 0xff00) << 8 |\n                   uVar23 << 0x18;\n          q[iVar18] = (double)((float)CONCAT22(uStack_6a,\n                                               (ushort)(byte)(uVar17 >> 0x18) | uVar15 & 0xff00) /\n                              fVar30);\n          q[iVar5] = (double)((float)(uVar25 >> 0x18 | (uVar25 & 0xff0000) >> 8 |\n                                      (uVar25 & 0xff00) << 8 | uVar25 << 0x18) / fVar30);\n          q[iVar7] = (double)((float)(uVar22 >> 0x18 | (uVar22 & 0xff0000) >> 8 |\n                                      (uVar22 & 0xff00) << 8 | uVar22 << 0x18) / fVar30);\n        }\n        if (PVar8 != UndefinedPixelTrait) {\n          q[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)uVar23 / DAT_002a7fec);\n        }\n        p = (uchar *)((int)p + sVar6 + 0x10);\n        iVar27 = iVar27 + 1;\n        q = q + sVar21;\n      } while (iVar27 != (int)number_pixels);\n    }" { (expression_statement "pPVar28 = image->channel_map;" (assignment_expression "pPVar28 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) (expression_statement "EVar4 = quantum_info->endian;" (assignment_expression "EVar4 = quantum_info->endian" identifier = (field_expression "quantum_info->endian" identifier -> field_identifier)) ;) (expression_statement "sVar6 = quantum_info->pad;" (assignment_expression "sVar6 = quantum_info->pad" identifier = (field_expression "quantum_info->pad" identifier -> field_identifier)) ;) (expression_statement "sVar21 = image->number_channels;" (assignment_expression "sVar21 = image->number_channels" identifier = (field_expression "image->number_channels" identifier -> field_identifier)) ;) (expression_statement "iVar18 = pPVar28->offset;" (assignment_expression "iVar18 = pPVar28->offset" identifier = (field_expression "pPVar28->offset" identifier -> field_identifier)) ;) (expression_statement "iVar5 = pPVar28[1].offset;" (assignment_expression "iVar5 = pPVar28[1].offset" identifier = (field_expression "pPVar28[1].offset" (subscript_expression "pPVar28[1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "iVar7 = pPVar28[2].offset;" (assignment_expression "iVar7 = pPVar28[2].offset" identifier = (field_expression "pPVar28[2].offset" (subscript_expression "pPVar28[2]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "PVar8 = pPVar28[4].traits;" (assignment_expression "PVar8 = pPVar28[4].traits" identifier = (field_expression "pPVar28[4].traits" (subscript_expression "pPVar28[4]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" identifier = number_literal) ;) (do_statement "do {\n        fVar29 = DAT_002a7fec;\n        uVar23 = *(uint *)((int)p + 0xc);\n        uVar25 = *(uint *)((int)p + 4);\n        uVar22 = *(uint *)((int)p + 8);\n        uVar17 = *(uint *)p;\n        if (EVar4 == LSBEndian) {\n          q[iVar18] = (double)((float)uVar17 / DAT_002a7fec);\n          q[iVar5] = (double)((float)uVar25 / fVar29);\n          q[iVar7] = (double)((float)uVar22 / fVar29);\n        }\n        else {\n          uVar15 = (ushort)(uVar17 >> 8);\n          uStack_6a = uVar15 & 0xff | (ushort)((uVar17 << 0x18) >> 0x10);\n          uVar23 = uVar23 >> 0x18 | (uVar23 & 0xff0000) >> 8 | (uVar23 & 0xff00) << 8 |\n                   uVar23 << 0x18;\n          q[iVar18] = (double)((float)CONCAT22(uStack_6a,\n                                               (ushort)(byte)(uVar17 >> 0x18) | uVar15 & 0xff00) /\n                              fVar30);\n          q[iVar5] = (double)((float)(uVar25 >> 0x18 | (uVar25 & 0xff0000) >> 8 |\n                                      (uVar25 & 0xff00) << 8 | uVar25 << 0x18) / fVar30);\n          q[iVar7] = (double)((float)(uVar22 >> 0x18 | (uVar22 & 0xff0000) >> 8 |\n                                      (uVar22 & 0xff00) << 8 | uVar22 << 0x18) / fVar30);\n        }\n        if (PVar8 != UndefinedPixelTrait) {\n          q[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)uVar23 / DAT_002a7fec);\n        }\n        p = (uchar *)((int)p + sVar6 + 0x10);\n        iVar27 = iVar27 + 1;\n        q = q + sVar21;\n      } while (iVar27 != (int)number_pixels);" do (compound_statement "{\n        fVar29 = DAT_002a7fec;\n        uVar23 = *(uint *)((int)p + 0xc);\n        uVar25 = *(uint *)((int)p + 4);\n        uVar22 = *(uint *)((int)p + 8);\n        uVar17 = *(uint *)p;\n        if (EVar4 == LSBEndian) {\n          q[iVar18] = (double)((float)uVar17 / DAT_002a7fec);\n          q[iVar5] = (double)((float)uVar25 / fVar29);\n          q[iVar7] = (double)((float)uVar22 / fVar29);\n        }\n        else {\n          uVar15 = (ushort)(uVar17 >> 8);\n          uStack_6a = uVar15 & 0xff | (ushort)((uVar17 << 0x18) >> 0x10);\n          uVar23 = uVar23 >> 0x18 | (uVar23 & 0xff0000) >> 8 | (uVar23 & 0xff00) << 8 |\n                   uVar23 << 0x18;\n          q[iVar18] = (double)((float)CONCAT22(uStack_6a,\n                                               (ushort)(byte)(uVar17 >> 0x18) | uVar15 & 0xff00) /\n                              fVar30);\n          q[iVar5] = (double)((float)(uVar25 >> 0x18 | (uVar25 & 0xff0000) >> 8 |\n                                      (uVar25 & 0xff00) << 8 | uVar25 << 0x18) / fVar30);\n          q[iVar7] = (double)((float)(uVar22 >> 0x18 | (uVar22 & 0xff0000) >> 8 |\n                                      (uVar22 & 0xff00) << 8 | uVar22 << 0x18) / fVar30);\n        }\n        if (PVar8 != UndefinedPixelTrait) {\n          q[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)uVar23 / DAT_002a7fec);\n        }\n        p = (uchar *)((int)p + sVar6 + 0x10);\n        iVar27 = iVar27 + 1;\n        q = q + sVar21;\n      }" { (expression_statement "fVar29 = DAT_002a7fec;" (assignment_expression "fVar29 = DAT_002a7fec" identifier = identifier) ;) (expression_statement "uVar23 = *(uint *)((int)p + 0xc);" (assignment_expression "uVar23 = *(uint *)((int)p + 0xc)" identifier = (pointer_expression "*(uint *)((int)p + 0xc)" * (cast_expression "(uint *)((int)p + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 0xc)" ( (binary_expression "(int)p + 0xc" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "uVar25 = *(uint *)((int)p + 4);" (assignment_expression "uVar25 = *(uint *)((int)p + 4)" identifier = (pointer_expression "*(uint *)((int)p + 4)" * (cast_expression "(uint *)((int)p + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 4)" ( (binary_expression "(int)p + 4" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "uVar22 = *(uint *)((int)p + 8);" (assignment_expression "uVar22 = *(uint *)((int)p + 8)" identifier = (pointer_expression "*(uint *)((int)p + 8)" * (cast_expression "(uint *)((int)p + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 8)" ( (binary_expression "(int)p + 8" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "uVar17 = *(uint *)p;" (assignment_expression "uVar17 = *(uint *)p" identifier = (pointer_expression "*(uint *)p" * (cast_expression "(uint *)p" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (EVar4 == LSBEndian) {\n          q[iVar18] = (double)((float)uVar17 / DAT_002a7fec);\n          q[iVar5] = (double)((float)uVar25 / fVar29);\n          q[iVar7] = (double)((float)uVar22 / fVar29);\n        }\n        else {\n          uVar15 = (ushort)(uVar17 >> 8);\n          uStack_6a = uVar15 & 0xff | (ushort)((uVar17 << 0x18) >> 0x10);\n          uVar23 = uVar23 >> 0x18 | (uVar23 & 0xff0000) >> 8 | (uVar23 & 0xff00) << 8 |\n                   uVar23 << 0x18;\n          q[iVar18] = (double)((float)CONCAT22(uStack_6a,\n                                               (ushort)(byte)(uVar17 >> 0x18) | uVar15 & 0xff00) /\n                              fVar30);\n          q[iVar5] = (double)((float)(uVar25 >> 0x18 | (uVar25 & 0xff0000) >> 8 |\n                                      (uVar25 & 0xff00) << 8 | uVar25 << 0x18) / fVar30);\n          q[iVar7] = (double)((float)(uVar22 >> 0x18 | (uVar22 & 0xff0000) >> 8 |\n                                      (uVar22 & 0xff00) << 8 | uVar22 << 0x18) / fVar30);\n        }" if (parenthesized_expression "(EVar4 == LSBEndian)" ( (binary_expression "EVar4 == LSBEndian" identifier == identifier) )) (compound_statement "{\n          q[iVar18] = (double)((float)uVar17 / DAT_002a7fec);\n          q[iVar5] = (double)((float)uVar25 / fVar29);\n          q[iVar7] = (double)((float)uVar22 / fVar29);\n        }" { (expression_statement "q[iVar18] = (double)((float)uVar17 / DAT_002a7fec);" (assignment_expression "q[iVar18] = (double)((float)uVar17 / DAT_002a7fec)" (subscript_expression "q[iVar18]" identifier [ identifier ]) = (cast_expression "(double)((float)uVar17 / DAT_002a7fec)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((float)uVar17 / DAT_002a7fec)" ( (binary_expression "(float)uVar17 / DAT_002a7fec" (cast_expression "(float)uVar17" ( (type_descriptor "float" primitive_type) ) identifier) / identifier) )))) ;) (expression_statement "q[iVar5] = (double)((float)uVar25 / fVar29);" (assignment_expression "q[iVar5] = (double)((float)uVar25 / fVar29)" (subscript_expression "q[iVar5]" identifier [ identifier ]) = (cast_expression "(double)((float)uVar25 / fVar29)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((float)uVar25 / fVar29)" ( (binary_expression "(float)uVar25 / fVar29" (cast_expression "(float)uVar25" ( (type_descriptor "float" primitive_type) ) identifier) / identifier) )))) ;) (expression_statement "q[iVar7] = (double)((float)uVar22 / fVar29);" (assignment_expression "q[iVar7] = (double)((float)uVar22 / fVar29)" (subscript_expression "q[iVar7]" identifier [ identifier ]) = (cast_expression "(double)((float)uVar22 / fVar29)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((float)uVar22 / fVar29)" ( (binary_expression "(float)uVar22 / fVar29" (cast_expression "(float)uVar22" ( (type_descriptor "float" primitive_type) ) identifier) / identifier) )))) ;) }) (else_clause "else {\n          uVar15 = (ushort)(uVar17 >> 8);\n          uStack_6a = uVar15 & 0xff | (ushort)((uVar17 << 0x18) >> 0x10);\n          uVar23 = uVar23 >> 0x18 | (uVar23 & 0xff0000) >> 8 | (uVar23 & 0xff00) << 8 |\n                   uVar23 << 0x18;\n          q[iVar18] = (double)((float)CONCAT22(uStack_6a,\n                                               (ushort)(byte)(uVar17 >> 0x18) | uVar15 & 0xff00) /\n                              fVar30);\n          q[iVar5] = (double)((float)(uVar25 >> 0x18 | (uVar25 & 0xff0000) >> 8 |\n                                      (uVar25 & 0xff00) << 8 | uVar25 << 0x18) / fVar30);\n          q[iVar7] = (double)((float)(uVar22 >> 0x18 | (uVar22 & 0xff0000) >> 8 |\n                                      (uVar22 & 0xff00) << 8 | uVar22 << 0x18) / fVar30);\n        }" else (compound_statement "{\n          uVar15 = (ushort)(uVar17 >> 8);\n          uStack_6a = uVar15 & 0xff | (ushort)((uVar17 << 0x18) >> 0x10);\n          uVar23 = uVar23 >> 0x18 | (uVar23 & 0xff0000) >> 8 | (uVar23 & 0xff00) << 8 |\n                   uVar23 << 0x18;\n          q[iVar18] = (double)((float)CONCAT22(uStack_6a,\n                                               (ushort)(byte)(uVar17 >> 0x18) | uVar15 & 0xff00) /\n                              fVar30);\n          q[iVar5] = (double)((float)(uVar25 >> 0x18 | (uVar25 & 0xff0000) >> 8 |\n                                      (uVar25 & 0xff00) << 8 | uVar25 << 0x18) / fVar30);\n          q[iVar7] = (double)((float)(uVar22 >> 0x18 | (uVar22 & 0xff0000) >> 8 |\n                                      (uVar22 & 0xff00) << 8 | uVar22 << 0x18) / fVar30);\n        }" { (expression_statement "uVar15 = (ushort)(uVar17 >> 8);" (assignment_expression "uVar15 = (ushort)(uVar17 >> 8)" identifier = (call_expression "(ushort)(uVar17 >> 8)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(uVar17 >> 8)" ( (binary_expression "uVar17 >> 8" identifier >> number_literal) )))) ;) (expression_statement "uStack_6a = uVar15 & 0xff | (ushort)((uVar17 << 0x18) >> 0x10);" (assignment_expression "uStack_6a = uVar15 & 0xff | (ushort)((uVar17 << 0x18) >> 0x10)" identifier = (binary_expression "uVar15 & 0xff | (ushort)((uVar17 << 0x18) >> 0x10)" (binary_expression "uVar15 & 0xff" identifier & number_literal) | (call_expression "(ushort)((uVar17 << 0x18) >> 0x10)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "((uVar17 << 0x18) >> 0x10)" ( (binary_expression "(uVar17 << 0x18) >> 0x10" (parenthesized_expression "(uVar17 << 0x18)" ( (binary_expression "uVar17 << 0x18" identifier << number_literal) )) >> number_literal) ))))) ;) (expression_statement "uVar23 = uVar23 >> 0x18 | (uVar23 & 0xff0000) >> 8 | (uVar23 & 0xff00) << 8 |\n                   uVar23 << 0x18;" (assignment_expression "uVar23 = uVar23 >> 0x18 | (uVar23 & 0xff0000) >> 8 | (uVar23 & 0xff00) << 8 |\n                   uVar23 << 0x18" identifier = (binary_expression "uVar23 >> 0x18 | (uVar23 & 0xff0000) >> 8 | (uVar23 & 0xff00) << 8 |\n                   uVar23 << 0x18" (binary_expression "uVar23 >> 0x18 | (uVar23 & 0xff0000) >> 8 | (uVar23 & 0xff00) << 8" (binary_expression "uVar23 >> 0x18 | (uVar23 & 0xff0000) >> 8" (binary_expression "uVar23 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar23 & 0xff0000) >> 8" (parenthesized_expression "(uVar23 & 0xff0000)" ( (binary_expression "uVar23 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar23 & 0xff00) << 8" (parenthesized_expression "(uVar23 & 0xff00)" ( (binary_expression "uVar23 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar23 << 0x18" identifier << number_literal))) ;) (expression_statement "q[iVar18] = (double)((float)CONCAT22(uStack_6a,\n                                               (ushort)(byte)(uVar17 >> 0x18) | uVar15 & 0xff00) /\n                              fVar30);" (assignment_expression "q[iVar18] = (double)((float)CONCAT22(uStack_6a,\n                                               (ushort)(byte)(uVar17 >> 0x18) | uVar15 & 0xff00) /\n                              fVar30)" (subscript_expression "q[iVar18]" identifier [ identifier ]) = (cast_expression "(double)((float)CONCAT22(uStack_6a,\n                                               (ushort)(byte)(uVar17 >> 0x18) | uVar15 & 0xff00) /\n                              fVar30)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((float)CONCAT22(uStack_6a,\n                                               (ushort)(byte)(uVar17 >> 0x18) | uVar15 & 0xff00) /\n                              fVar30)" ( (binary_expression "(float)CONCAT22(uStack_6a,\n                                               (ushort)(byte)(uVar17 >> 0x18) | uVar15 & 0xff00) /\n                              fVar30" (cast_expression "(float)CONCAT22(uStack_6a,\n                                               (ushort)(byte)(uVar17 >> 0x18) | uVar15 & 0xff00)" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT22(uStack_6a,\n                                               (ushort)(byte)(uVar17 >> 0x18) | uVar15 & 0xff00)" identifier (argument_list "(uStack_6a,\n                                               (ushort)(byte)(uVar17 >> 0x18) | uVar15 & 0xff00)" ( identifier , (binary_expression "(ushort)(byte)(uVar17 >> 0x18) | uVar15 & 0xff00" (call_expression "(ushort)(byte)(uVar17 >> 0x18)" (call_expression "(ushort)(byte)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(uVar17 >> 0x18)" ( (binary_expression "uVar17 >> 0x18" identifier >> number_literal) ))) | (binary_expression "uVar15 & 0xff00" identifier & number_literal)) )))) / identifier) )))) ;) (expression_statement "q[iVar5] = (double)((float)(uVar25 >> 0x18 | (uVar25 & 0xff0000) >> 8 |\n                                      (uVar25 & 0xff00) << 8 | uVar25 << 0x18) / fVar30);" (assignment_expression "q[iVar5] = (double)((float)(uVar25 >> 0x18 | (uVar25 & 0xff0000) >> 8 |\n                                      (uVar25 & 0xff00) << 8 | uVar25 << 0x18) / fVar30)" (subscript_expression "q[iVar5]" identifier [ identifier ]) = (cast_expression "(double)((float)(uVar25 >> 0x18 | (uVar25 & 0xff0000) >> 8 |\n                                      (uVar25 & 0xff00) << 8 | uVar25 << 0x18) / fVar30)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((float)(uVar25 >> 0x18 | (uVar25 & 0xff0000) >> 8 |\n                                      (uVar25 & 0xff00) << 8 | uVar25 << 0x18) / fVar30)" ( (binary_expression "(float)(uVar25 >> 0x18 | (uVar25 & 0xff0000) >> 8 |\n                                      (uVar25 & 0xff00) << 8 | uVar25 << 0x18) / fVar30" (cast_expression "(float)(uVar25 >> 0x18 | (uVar25 & 0xff0000) >> 8 |\n                                      (uVar25 & 0xff00) << 8 | uVar25 << 0x18)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(uVar25 >> 0x18 | (uVar25 & 0xff0000) >> 8 |\n                                      (uVar25 & 0xff00) << 8 | uVar25 << 0x18)" ( (binary_expression "uVar25 >> 0x18 | (uVar25 & 0xff0000) >> 8 |\n                                      (uVar25 & 0xff00) << 8 | uVar25 << 0x18" (binary_expression "uVar25 >> 0x18 | (uVar25 & 0xff0000) >> 8 |\n                                      (uVar25 & 0xff00) << 8" (binary_expression "uVar25 >> 0x18 | (uVar25 & 0xff0000) >> 8" (binary_expression "uVar25 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar25 & 0xff0000) >> 8" (parenthesized_expression "(uVar25 & 0xff0000)" ( (binary_expression "uVar25 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar25 & 0xff00) << 8" (parenthesized_expression "(uVar25 & 0xff00)" ( (binary_expression "uVar25 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar25 << 0x18" identifier << number_literal)) ))) / identifier) )))) ;) (expression_statement "q[iVar7] = (double)((float)(uVar22 >> 0x18 | (uVar22 & 0xff0000) >> 8 |\n                                      (uVar22 & 0xff00) << 8 | uVar22 << 0x18) / fVar30);" (assignment_expression "q[iVar7] = (double)((float)(uVar22 >> 0x18 | (uVar22 & 0xff0000) >> 8 |\n                                      (uVar22 & 0xff00) << 8 | uVar22 << 0x18) / fVar30)" (subscript_expression "q[iVar7]" identifier [ identifier ]) = (cast_expression "(double)((float)(uVar22 >> 0x18 | (uVar22 & 0xff0000) >> 8 |\n                                      (uVar22 & 0xff00) << 8 | uVar22 << 0x18) / fVar30)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((float)(uVar22 >> 0x18 | (uVar22 & 0xff0000) >> 8 |\n                                      (uVar22 & 0xff00) << 8 | uVar22 << 0x18) / fVar30)" ( (binary_expression "(float)(uVar22 >> 0x18 | (uVar22 & 0xff0000) >> 8 |\n                                      (uVar22 & 0xff00) << 8 | uVar22 << 0x18) / fVar30" (cast_expression "(float)(uVar22 >> 0x18 | (uVar22 & 0xff0000) >> 8 |\n                                      (uVar22 & 0xff00) << 8 | uVar22 << 0x18)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(uVar22 >> 0x18 | (uVar22 & 0xff0000) >> 8 |\n                                      (uVar22 & 0xff00) << 8 | uVar22 << 0x18)" ( (binary_expression "uVar22 >> 0x18 | (uVar22 & 0xff0000) >> 8 |\n                                      (uVar22 & 0xff00) << 8 | uVar22 << 0x18" (binary_expression "uVar22 >> 0x18 | (uVar22 & 0xff0000) >> 8 |\n                                      (uVar22 & 0xff00) << 8" (binary_expression "uVar22 >> 0x18 | (uVar22 & 0xff0000) >> 8" (binary_expression "uVar22 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar22 & 0xff0000) >> 8" (parenthesized_expression "(uVar22 & 0xff0000)" ( (binary_expression "uVar22 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar22 & 0xff00) << 8" (parenthesized_expression "(uVar22 & 0xff00)" ( (binary_expression "uVar22 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar22 << 0x18" identifier << number_literal)) ))) / identifier) )))) ;) }))) (if_statement "if (PVar8 != UndefinedPixelTrait) {\n          q[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)uVar23 / DAT_002a7fec);\n        }" if (parenthesized_expression "(PVar8 != UndefinedPixelTrait)" ( (binary_expression "PVar8 != UndefinedPixelTrait" identifier != identifier) )) (compound_statement "{\n          q[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)uVar23 / DAT_002a7fec);\n        }" { (expression_statement "q[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)uVar23 / DAT_002a7fec);" (assignment_expression "q[pPVar28[4].offset] = (double)(DAT_0029f710 - (float)uVar23 / DAT_002a7fec)" (subscript_expression "q[pPVar28[4].offset]" identifier [ (field_expression "pPVar28[4].offset" (subscript_expression "pPVar28[4]" identifier [ number_literal ]) . field_identifier) ]) = (cast_expression "(double)(DAT_0029f710 - (float)uVar23 / DAT_002a7fec)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(DAT_0029f710 - (float)uVar23 / DAT_002a7fec)" ( (binary_expression "DAT_0029f710 - (float)uVar23 / DAT_002a7fec" identifier - (binary_expression "(float)uVar23 / DAT_002a7fec" (cast_expression "(float)uVar23" ( (type_descriptor "float" primitive_type) ) identifier) / identifier)) )))) ;) })) (expression_statement "p = (uchar *)((int)p + sVar6 + 0x10);" (assignment_expression "p = (uchar *)((int)p + sVar6 + 0x10)" identifier = (cast_expression "(uchar *)((int)p + sVar6 + 0x10)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + sVar6 + 0x10)" ( (binary_expression "(int)p + sVar6 + 0x10" (binary_expression "(int)p + sVar6" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ;) (expression_statement "iVar27 = iVar27 + 1;" (assignment_expression "iVar27 = iVar27 + 1" identifier = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) (expression_statement "q = q + sVar21;" (assignment_expression "q = q + sVar21" identifier = (binary_expression "q + sVar21" identifier + identifier)) ;) }) while (parenthesized_expression "(iVar27 != (int)number_pixels)" ( (binary_expression "iVar27 != (int)number_pixels" identifier != (cast_expression "(int)number_pixels" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) }))) (break_statement "break;" break ;)) (case_statement "case 0x40:\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if (0 < (int)number_pixels) {\n        iVar18 = 0;\n        do {\n          puVar19 = PushDoublePixel(quantum_info,p,(double *)&pixel);\n          q[image->channel_map->offset] = (Quantum)CONCAT44(uStack_28,pixel);\n          puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel);\n          q[image->channel_map[1].offset] = (Quantum)CONCAT44(uStack_28,pixel);\n          puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel);\n          q[image->channel_map[2].offset] = (Quantum)CONCAT44(uStack_28,pixel);\n          puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel);\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            q[image->channel_map[4].offset] =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,pixel));\n          }\n          p = puVar19 + quantum_info->pad;\n          iVar18 = iVar18 + 1;\n          q = q + image->number_channels;\n        } while (iVar18 != (int)number_pixels);\n      }\n      break;\n    }\nLAB_00161285:\n    uVar25 = 0;\n    if (uVar23 < 0x41) {\n      uVar25 = uVar23;\n    }\n    bVar20 = (byte)(uVar25 - 1);\n    bVar9 = bVar20 & 0x1f;\n    uVar16 = 2 << (bVar20 & 0x1f);\n    uVar17 = uVar16;\n    uVar22 = 0 << bVar9 | 2U >> 0x20 - bVar9;\n    if ((uVar25 - 1 & 0x20) != 0) {\n      uVar17 = 0;\n      uVar22 = uVar16;\n    }\n    iVar18 = uVar17 - 1;\n    iStack_68 = (uVar22 - 1) + (uint)(uVar17 != 0);\n    local_6c = (byte)iVar18;\n    bStack_6b = (byte)((uint)iVar18 >> 8);\n    uStack_6a = (ushort)((uint)iVar18 >> 0x10);\nLAB_001612bc:\n    if (0 < (int)number_pixels) {\n      pPVar28 = image->channel_map;\n      local_64 = 0.0;\n      iVar18 = pPVar28->offset;\n      iVar5 = pPVar28[1].offset;\n      sVar6 = image->number_channels;\n      do {\n        pdVar24 = local_78 + iVar18;\n        if ((int)uVar23 < 1) {\n          fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (iStack_68 < 0) {\n            fVar29 = fVar29 + DAT_0029f714;\n          }\n          local_3c = (double)fVar29;\n          if (local_3c < dVar12) {\n            *pdVar24 = 0.0;\n          }\n          else {\n            dVar11 = 0.0;\nLAB_00161f72:\n            *pdVar24 = ((double)DAT_0029f718 / local_3c) * dVar11 * (double)DAT_0029f710;\n            if (0 < (int)uVar23) goto LAB_00161938;\n          }\n          dVar11 = 0.0;\n          local_5c = local_78 + pPVar28[2].offset;\nLAB_00161a0c:\n          dVar10 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar10 = (double)DAT_0029f718 / local_3c;\n          }\n          local_78[iVar5] = dVar10 * dVar11 * (double)DAT_0029f710;\n          if (0 < (int)uVar23) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar11 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar11 = 0.0;\nLAB_00161c0a:\n          dVar10 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar10 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar11 = dVar10 * dVar11 * (double)DAT_0029f710;\n        }\n        else {\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              (quantum_info->state).pixel = uVar17;\n              sVar21 = 8;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = sVar21;\n            if (uVar25 <= sVar21) {\n              uVar16 = uVar25;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          if ((iStack_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar22)) {\n            *pdVar24 = (double)DAT_0029f710;\n          }\n          else {\n            dVar11 = (double)uVar22;\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar24 = dVar11 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              sVar21 = 8;\n              (quantum_info->state).pixel = uVar17;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = sVar21;\n            if (uVar25 <= sVar21) {\n              uVar16 = uVar25;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          local_5c = local_78 + pPVar28[2].offset;\n          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            goto LAB_00161a0c;\n          }\n          local_78[iVar5] = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              (quantum_info->state).pixel = uVar17;\n              sVar21 = 8;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = uVar25;\n            if (sVar21 <= uVar25) {\n              uVar16 = sVar21;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar11 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar23 < 1) {\n                dVar11 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar11 * (double)DAT_0029f710;\n            if (0 < (int)uVar23) goto LAB_00161b52;\n            dVar11 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              sVar21 = 8;\n              (quantum_info->state).pixel = uVar17;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = uVar25;\n            if (sVar21 <= uVar25) {\n              uVar16 = sVar21;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            goto LAB_00161c0a;\n          }\n          dVar11 = (double)DAT_0029f710;\n        }\n        if (pPVar28[4].traits != UndefinedPixelTrait) {\n          local_78[pPVar28[4].offset] = (double)DAT_0029f710 - dVar11;\n        }\n        local_64 = (float)((int)local_64 + 1);\n        local_78 = local_78 + sVar6;\n      } while (local_64 != (float)(int)number_pixels);\n    }" case number_literal : (if_statement "if (quantum_info->format == FloatingPointQuantumFormat) {\n      if (0 < (int)number_pixels) {\n        iVar18 = 0;\n        do {\n          puVar19 = PushDoublePixel(quantum_info,p,(double *)&pixel);\n          q[image->channel_map->offset] = (Quantum)CONCAT44(uStack_28,pixel);\n          puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel);\n          q[image->channel_map[1].offset] = (Quantum)CONCAT44(uStack_28,pixel);\n          puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel);\n          q[image->channel_map[2].offset] = (Quantum)CONCAT44(uStack_28,pixel);\n          puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel);\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            q[image->channel_map[4].offset] =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,pixel));\n          }\n          p = puVar19 + quantum_info->pad;\n          iVar18 = iVar18 + 1;\n          q = q + image->number_channels;\n        } while (iVar18 != (int)number_pixels);\n      }\n      break;\n    }" if (parenthesized_expression "(quantum_info->format == FloatingPointQuantumFormat)" ( (binary_expression "quantum_info->format == FloatingPointQuantumFormat" (field_expression "quantum_info->format" identifier -> field_identifier) == identifier) )) (compound_statement "{\n      if (0 < (int)number_pixels) {\n        iVar18 = 0;\n        do {\n          puVar19 = PushDoublePixel(quantum_info,p,(double *)&pixel);\n          q[image->channel_map->offset] = (Quantum)CONCAT44(uStack_28,pixel);\n          puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel);\n          q[image->channel_map[1].offset] = (Quantum)CONCAT44(uStack_28,pixel);\n          puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel);\n          q[image->channel_map[2].offset] = (Quantum)CONCAT44(uStack_28,pixel);\n          puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel);\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            q[image->channel_map[4].offset] =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,pixel));\n          }\n          p = puVar19 + quantum_info->pad;\n          iVar18 = iVar18 + 1;\n          q = q + image->number_channels;\n        } while (iVar18 != (int)number_pixels);\n      }\n      break;\n    }" { (if_statement "if (0 < (int)number_pixels) {\n        iVar18 = 0;\n        do {\n          puVar19 = PushDoublePixel(quantum_info,p,(double *)&pixel);\n          q[image->channel_map->offset] = (Quantum)CONCAT44(uStack_28,pixel);\n          puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel);\n          q[image->channel_map[1].offset] = (Quantum)CONCAT44(uStack_28,pixel);\n          puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel);\n          q[image->channel_map[2].offset] = (Quantum)CONCAT44(uStack_28,pixel);\n          puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel);\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            q[image->channel_map[4].offset] =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,pixel));\n          }\n          p = puVar19 + quantum_info->pad;\n          iVar18 = iVar18 + 1;\n          q = q + image->number_channels;\n        } while (iVar18 != (int)number_pixels);\n      }" if (parenthesized_expression "(0 < (int)number_pixels)" ( (binary_expression "0 < (int)number_pixels" number_literal < (cast_expression "(int)number_pixels" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        iVar18 = 0;\n        do {\n          puVar19 = PushDoublePixel(quantum_info,p,(double *)&pixel);\n          q[image->channel_map->offset] = (Quantum)CONCAT44(uStack_28,pixel);\n          puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel);\n          q[image->channel_map[1].offset] = (Quantum)CONCAT44(uStack_28,pixel);\n          puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel);\n          q[image->channel_map[2].offset] = (Quantum)CONCAT44(uStack_28,pixel);\n          puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel);\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            q[image->channel_map[4].offset] =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,pixel));\n          }\n          p = puVar19 + quantum_info->pad;\n          iVar18 = iVar18 + 1;\n          q = q + image->number_channels;\n        } while (iVar18 != (int)number_pixels);\n      }" { (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" identifier = number_literal) ;) (do_statement "do {\n          puVar19 = PushDoublePixel(quantum_info,p,(double *)&pixel);\n          q[image->channel_map->offset] = (Quantum)CONCAT44(uStack_28,pixel);\n          puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel);\n          q[image->channel_map[1].offset] = (Quantum)CONCAT44(uStack_28,pixel);\n          puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel);\n          q[image->channel_map[2].offset] = (Quantum)CONCAT44(uStack_28,pixel);\n          puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel);\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            q[image->channel_map[4].offset] =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,pixel));\n          }\n          p = puVar19 + quantum_info->pad;\n          iVar18 = iVar18 + 1;\n          q = q + image->number_channels;\n        } while (iVar18 != (int)number_pixels);" do (compound_statement "{\n          puVar19 = PushDoublePixel(quantum_info,p,(double *)&pixel);\n          q[image->channel_map->offset] = (Quantum)CONCAT44(uStack_28,pixel);\n          puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel);\n          q[image->channel_map[1].offset] = (Quantum)CONCAT44(uStack_28,pixel);\n          puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel);\n          q[image->channel_map[2].offset] = (Quantum)CONCAT44(uStack_28,pixel);\n          puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel);\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            q[image->channel_map[4].offset] =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,pixel));\n          }\n          p = puVar19 + quantum_info->pad;\n          iVar18 = iVar18 + 1;\n          q = q + image->number_channels;\n        }" { (expression_statement "puVar19 = PushDoublePixel(quantum_info,p,(double *)&pixel);" (assignment_expression "puVar19 = PushDoublePixel(quantum_info,p,(double *)&pixel)" identifier = (call_expression "PushDoublePixel(quantum_info,p,(double *)&pixel)" identifier (argument_list "(quantum_info,p,(double *)&pixel)" ( identifier , identifier , (cast_expression "(double *)&pixel" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pixel" & identifier)) )))) ;) (expression_statement "q[image->channel_map->offset] = (Quantum)CONCAT44(uStack_28,pixel);" (assignment_expression "q[image->channel_map->offset] = (Quantum)CONCAT44(uStack_28,pixel)" (subscript_expression "q[image->channel_map->offset]" identifier [ (field_expression "image->channel_map->offset" (field_expression "image->channel_map" identifier -> field_identifier) -> field_identifier) ]) = (cast_expression "(Quantum)CONCAT44(uStack_28,pixel)" ( (type_descriptor "Quantum" type_identifier) ) (call_expression "CONCAT44(uStack_28,pixel)" identifier (argument_list "(uStack_28,pixel)" ( identifier , identifier ))))) ;) (expression_statement "puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel);" (assignment_expression "puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel)" identifier = (call_expression "PushDoublePixel(quantum_info,puVar19,(double *)&pixel)" identifier (argument_list "(quantum_info,puVar19,(double *)&pixel)" ( identifier , identifier , (cast_expression "(double *)&pixel" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pixel" & identifier)) )))) ;) (expression_statement "q[image->channel_map[1].offset] = (Quantum)CONCAT44(uStack_28,pixel);" (assignment_expression "q[image->channel_map[1].offset] = (Quantum)CONCAT44(uStack_28,pixel)" (subscript_expression "q[image->channel_map[1].offset]" identifier [ (field_expression "image->channel_map[1].offset" (subscript_expression "image->channel_map[1]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ]) = (cast_expression "(Quantum)CONCAT44(uStack_28,pixel)" ( (type_descriptor "Quantum" type_identifier) ) (call_expression "CONCAT44(uStack_28,pixel)" identifier (argument_list "(uStack_28,pixel)" ( identifier , identifier ))))) ;) (expression_statement "puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel);" (assignment_expression "puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel)" identifier = (call_expression "PushDoublePixel(quantum_info,puVar19,(double *)&pixel)" identifier (argument_list "(quantum_info,puVar19,(double *)&pixel)" ( identifier , identifier , (cast_expression "(double *)&pixel" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pixel" & identifier)) )))) ;) (expression_statement "q[image->channel_map[2].offset] = (Quantum)CONCAT44(uStack_28,pixel);" (assignment_expression "q[image->channel_map[2].offset] = (Quantum)CONCAT44(uStack_28,pixel)" (subscript_expression "q[image->channel_map[2].offset]" identifier [ (field_expression "image->channel_map[2].offset" (subscript_expression "image->channel_map[2]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ]) = (cast_expression "(Quantum)CONCAT44(uStack_28,pixel)" ( (type_descriptor "Quantum" type_identifier) ) (call_expression "CONCAT44(uStack_28,pixel)" identifier (argument_list "(uStack_28,pixel)" ( identifier , identifier ))))) ;) (expression_statement "puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel);" (assignment_expression "puVar19 = PushDoublePixel(quantum_info,puVar19,(double *)&pixel)" identifier = (call_expression "PushDoublePixel(quantum_info,puVar19,(double *)&pixel)" identifier (argument_list "(quantum_info,puVar19,(double *)&pixel)" ( identifier , identifier , (cast_expression "(double *)&pixel" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pixel" & identifier)) )))) ;) (if_statement "if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            q[image->channel_map[4].offset] =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,pixel));\n          }" if (parenthesized_expression "(image->channel_map[4].traits != UndefinedPixelTrait)" ( (binary_expression "image->channel_map[4].traits != UndefinedPixelTrait" (field_expression "image->channel_map[4].traits" (subscript_expression "image->channel_map[4]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) != identifier) )) (compound_statement "{\n            q[image->channel_map[4].offset] =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,pixel));\n          }" { (expression_statement "q[image->channel_map[4].offset] =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,pixel));" (assignment_expression "q[image->channel_map[4].offset] =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,pixel))" (subscript_expression "q[image->channel_map[4].offset]" identifier [ (field_expression "image->channel_map[4].offset" (subscript_expression "image->channel_map[4]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ]) = (cast_expression "(double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,pixel))" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,pixel))" ( (binary_expression "DAT_0029f710 - (float)(double)CONCAT44(uStack_28,pixel)" identifier - (cast_expression "(float)(double)CONCAT44(uStack_28,pixel)" ( (type_descriptor "float" primitive_type) ) (cast_expression "(double)CONCAT44(uStack_28,pixel)" ( (type_descriptor "double" primitive_type) ) (call_expression "CONCAT44(uStack_28,pixel)" identifier (argument_list "(uStack_28,pixel)" ( identifier , identifier )))))) )))) ;) })) (expression_statement "p = puVar19 + quantum_info->pad;" (assignment_expression "p = puVar19 + quantum_info->pad" identifier = (binary_expression "puVar19 + quantum_info->pad" identifier + (field_expression "quantum_info->pad" identifier -> field_identifier))) ;) (expression_statement "iVar18 = iVar18 + 1;" (assignment_expression "iVar18 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ;) (expression_statement "q = q + image->number_channels;" (assignment_expression "q = q + image->number_channels" identifier = (binary_expression "q + image->number_channels" identifier + (field_expression "image->number_channels" identifier -> field_identifier))) ;) }) while (parenthesized_expression "(iVar18 != (int)number_pixels)" ( (binary_expression "iVar18 != (int)number_pixels" identifier != (cast_expression "(int)number_pixels" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })) (break_statement "break;" break ;) })) (labeled_statement "LAB_00161285:\n    uVar25 = 0;" statement_identifier : (expression_statement "uVar25 = 0;" (assignment_expression "uVar25 = 0" identifier = number_literal) ;)) (if_statement "if (uVar23 < 0x41) {\n      uVar25 = uVar23;\n    }" if (parenthesized_expression "(uVar23 < 0x41)" ( (binary_expression "uVar23 < 0x41" identifier < number_literal) )) (compound_statement "{\n      uVar25 = uVar23;\n    }" { (expression_statement "uVar25 = uVar23;" (assignment_expression "uVar25 = uVar23" identifier = identifier) ;) })) (expression_statement "bVar20 = (byte)(uVar25 - 1);" (assignment_expression "bVar20 = (byte)(uVar25 - 1)" identifier = (call_expression "(byte)(uVar25 - 1)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar25 - 1)" ( (binary_expression "uVar25 - 1" identifier - number_literal) )))) ;) (expression_statement "bVar9 = bVar20 & 0x1f;" (assignment_expression "bVar9 = bVar20 & 0x1f" identifier = (binary_expression "bVar20 & 0x1f" identifier & number_literal)) ;) (expression_statement "uVar16 = 2 << (bVar20 & 0x1f);" (assignment_expression "uVar16 = 2 << (bVar20 & 0x1f)" identifier = (binary_expression "2 << (bVar20 & 0x1f)" number_literal << (parenthesized_expression "(bVar20 & 0x1f)" ( (binary_expression "bVar20 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar17 = uVar16;" (assignment_expression "uVar17 = uVar16" identifier = identifier) ;) (expression_statement "uVar22 = 0 << bVar9 | 2U >> 0x20 - bVar9;" (assignment_expression "uVar22 = 0 << bVar9 | 2U >> 0x20 - bVar9" identifier = (binary_expression "0 << bVar9 | 2U >> 0x20 - bVar9" (binary_expression "0 << bVar9" number_literal << identifier) | (binary_expression "2U >> 0x20 - bVar9" number_literal >> (binary_expression "0x20 - bVar9" number_literal - identifier)))) ;) (if_statement "if ((uVar25 - 1 & 0x20) != 0) {\n      uVar17 = 0;\n      uVar22 = uVar16;\n    }" if (parenthesized_expression "((uVar25 - 1 & 0x20) != 0)" ( (binary_expression "(uVar25 - 1 & 0x20) != 0" (parenthesized_expression "(uVar25 - 1 & 0x20)" ( (binary_expression "uVar25 - 1 & 0x20" (binary_expression "uVar25 - 1" identifier - number_literal) & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar17 = 0;\n      uVar22 = uVar16;\n    }" { (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (expression_statement "uVar22 = uVar16;" (assignment_expression "uVar22 = uVar16" identifier = identifier) ;) })) (expression_statement "iVar18 = uVar17 - 1;" (assignment_expression "iVar18 = uVar17 - 1" identifier = (binary_expression "uVar17 - 1" identifier - number_literal)) ;) (expression_statement "iStack_68 = (uVar22 - 1) + (uint)(uVar17 != 0);" (assignment_expression "iStack_68 = (uVar22 - 1) + (uint)(uVar17 != 0)" identifier = (binary_expression "(uVar22 - 1) + (uint)(uVar17 != 0)" (parenthesized_expression "(uVar22 - 1)" ( (binary_expression "uVar22 - 1" identifier - number_literal) )) + (call_expression "(uint)(uVar17 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar17 != 0)" ( (binary_expression "uVar17 != 0" identifier != number_literal) ))))) ;) (expression_statement "local_6c = (byte)iVar18;" (assignment_expression "local_6c = (byte)iVar18" identifier = (cast_expression "(byte)iVar18" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "bStack_6b = (byte)((uint)iVar18 >> 8);" (assignment_expression "bStack_6b = (byte)((uint)iVar18 >> 8)" identifier = (call_expression "(byte)((uint)iVar18 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)iVar18 >> 8)" ( (binary_expression "(uint)iVar18 >> 8" (cast_expression "(uint)iVar18" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uStack_6a = (ushort)((uint)iVar18 >> 0x10);" (assignment_expression "uStack_6a = (ushort)((uint)iVar18 >> 0x10)" identifier = (call_expression "(ushort)((uint)iVar18 >> 0x10)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "((uint)iVar18 >> 0x10)" ( (binary_expression "(uint)iVar18 >> 0x10" (cast_expression "(uint)iVar18" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (labeled_statement "LAB_001612bc:\n    if (0 < (int)number_pixels) {\n      pPVar28 = image->channel_map;\n      local_64 = 0.0;\n      iVar18 = pPVar28->offset;\n      iVar5 = pPVar28[1].offset;\n      sVar6 = image->number_channels;\n      do {\n        pdVar24 = local_78 + iVar18;\n        if ((int)uVar23 < 1) {\n          fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (iStack_68 < 0) {\n            fVar29 = fVar29 + DAT_0029f714;\n          }\n          local_3c = (double)fVar29;\n          if (local_3c < dVar12) {\n            *pdVar24 = 0.0;\n          }\n          else {\n            dVar11 = 0.0;\nLAB_00161f72:\n            *pdVar24 = ((double)DAT_0029f718 / local_3c) * dVar11 * (double)DAT_0029f710;\n            if (0 < (int)uVar23) goto LAB_00161938;\n          }\n          dVar11 = 0.0;\n          local_5c = local_78 + pPVar28[2].offset;\nLAB_00161a0c:\n          dVar10 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar10 = (double)DAT_0029f718 / local_3c;\n          }\n          local_78[iVar5] = dVar10 * dVar11 * (double)DAT_0029f710;\n          if (0 < (int)uVar23) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar11 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar11 = 0.0;\nLAB_00161c0a:\n          dVar10 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar10 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar11 = dVar10 * dVar11 * (double)DAT_0029f710;\n        }\n        else {\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              (quantum_info->state).pixel = uVar17;\n              sVar21 = 8;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = sVar21;\n            if (uVar25 <= sVar21) {\n              uVar16 = uVar25;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          if ((iStack_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar22)) {\n            *pdVar24 = (double)DAT_0029f710;\n          }\n          else {\n            dVar11 = (double)uVar22;\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar24 = dVar11 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              sVar21 = 8;\n              (quantum_info->state).pixel = uVar17;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = sVar21;\n            if (uVar25 <= sVar21) {\n              uVar16 = uVar25;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          local_5c = local_78 + pPVar28[2].offset;\n          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            goto LAB_00161a0c;\n          }\n          local_78[iVar5] = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              (quantum_info->state).pixel = uVar17;\n              sVar21 = 8;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = uVar25;\n            if (sVar21 <= uVar25) {\n              uVar16 = sVar21;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar11 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar23 < 1) {\n                dVar11 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar11 * (double)DAT_0029f710;\n            if (0 < (int)uVar23) goto LAB_00161b52;\n            dVar11 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              sVar21 = 8;\n              (quantum_info->state).pixel = uVar17;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = uVar25;\n            if (sVar21 <= uVar25) {\n              uVar16 = sVar21;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            goto LAB_00161c0a;\n          }\n          dVar11 = (double)DAT_0029f710;\n        }\n        if (pPVar28[4].traits != UndefinedPixelTrait) {\n          local_78[pPVar28[4].offset] = (double)DAT_0029f710 - dVar11;\n        }\n        local_64 = (float)((int)local_64 + 1);\n        local_78 = local_78 + sVar6;\n      } while (local_64 != (float)(int)number_pixels);\n    }" statement_identifier : (if_statement "if (0 < (int)number_pixels) {\n      pPVar28 = image->channel_map;\n      local_64 = 0.0;\n      iVar18 = pPVar28->offset;\n      iVar5 = pPVar28[1].offset;\n      sVar6 = image->number_channels;\n      do {\n        pdVar24 = local_78 + iVar18;\n        if ((int)uVar23 < 1) {\n          fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (iStack_68 < 0) {\n            fVar29 = fVar29 + DAT_0029f714;\n          }\n          local_3c = (double)fVar29;\n          if (local_3c < dVar12) {\n            *pdVar24 = 0.0;\n          }\n          else {\n            dVar11 = 0.0;\nLAB_00161f72:\n            *pdVar24 = ((double)DAT_0029f718 / local_3c) * dVar11 * (double)DAT_0029f710;\n            if (0 < (int)uVar23) goto LAB_00161938;\n          }\n          dVar11 = 0.0;\n          local_5c = local_78 + pPVar28[2].offset;\nLAB_00161a0c:\n          dVar10 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar10 = (double)DAT_0029f718 / local_3c;\n          }\n          local_78[iVar5] = dVar10 * dVar11 * (double)DAT_0029f710;\n          if (0 < (int)uVar23) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar11 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar11 = 0.0;\nLAB_00161c0a:\n          dVar10 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar10 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar11 = dVar10 * dVar11 * (double)DAT_0029f710;\n        }\n        else {\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              (quantum_info->state).pixel = uVar17;\n              sVar21 = 8;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = sVar21;\n            if (uVar25 <= sVar21) {\n              uVar16 = uVar25;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          if ((iStack_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar22)) {\n            *pdVar24 = (double)DAT_0029f710;\n          }\n          else {\n            dVar11 = (double)uVar22;\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar24 = dVar11 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              sVar21 = 8;\n              (quantum_info->state).pixel = uVar17;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = sVar21;\n            if (uVar25 <= sVar21) {\n              uVar16 = uVar25;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          local_5c = local_78 + pPVar28[2].offset;\n          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            goto LAB_00161a0c;\n          }\n          local_78[iVar5] = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              (quantum_info->state).pixel = uVar17;\n              sVar21 = 8;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = uVar25;\n            if (sVar21 <= uVar25) {\n              uVar16 = sVar21;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar11 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar23 < 1) {\n                dVar11 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar11 * (double)DAT_0029f710;\n            if (0 < (int)uVar23) goto LAB_00161b52;\n            dVar11 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              sVar21 = 8;\n              (quantum_info->state).pixel = uVar17;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = uVar25;\n            if (sVar21 <= uVar25) {\n              uVar16 = sVar21;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            goto LAB_00161c0a;\n          }\n          dVar11 = (double)DAT_0029f710;\n        }\n        if (pPVar28[4].traits != UndefinedPixelTrait) {\n          local_78[pPVar28[4].offset] = (double)DAT_0029f710 - dVar11;\n        }\n        local_64 = (float)((int)local_64 + 1);\n        local_78 = local_78 + sVar6;\n      } while (local_64 != (float)(int)number_pixels);\n    }" if (parenthesized_expression "(0 < (int)number_pixels)" ( (binary_expression "0 < (int)number_pixels" number_literal < (cast_expression "(int)number_pixels" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      pPVar28 = image->channel_map;\n      local_64 = 0.0;\n      iVar18 = pPVar28->offset;\n      iVar5 = pPVar28[1].offset;\n      sVar6 = image->number_channels;\n      do {\n        pdVar24 = local_78 + iVar18;\n        if ((int)uVar23 < 1) {\n          fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (iStack_68 < 0) {\n            fVar29 = fVar29 + DAT_0029f714;\n          }\n          local_3c = (double)fVar29;\n          if (local_3c < dVar12) {\n            *pdVar24 = 0.0;\n          }\n          else {\n            dVar11 = 0.0;\nLAB_00161f72:\n            *pdVar24 = ((double)DAT_0029f718 / local_3c) * dVar11 * (double)DAT_0029f710;\n            if (0 < (int)uVar23) goto LAB_00161938;\n          }\n          dVar11 = 0.0;\n          local_5c = local_78 + pPVar28[2].offset;\nLAB_00161a0c:\n          dVar10 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar10 = (double)DAT_0029f718 / local_3c;\n          }\n          local_78[iVar5] = dVar10 * dVar11 * (double)DAT_0029f710;\n          if (0 < (int)uVar23) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar11 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar11 = 0.0;\nLAB_00161c0a:\n          dVar10 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar10 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar11 = dVar10 * dVar11 * (double)DAT_0029f710;\n        }\n        else {\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              (quantum_info->state).pixel = uVar17;\n              sVar21 = 8;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = sVar21;\n            if (uVar25 <= sVar21) {\n              uVar16 = uVar25;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          if ((iStack_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar22)) {\n            *pdVar24 = (double)DAT_0029f710;\n          }\n          else {\n            dVar11 = (double)uVar22;\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar24 = dVar11 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              sVar21 = 8;\n              (quantum_info->state).pixel = uVar17;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = sVar21;\n            if (uVar25 <= sVar21) {\n              uVar16 = uVar25;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          local_5c = local_78 + pPVar28[2].offset;\n          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            goto LAB_00161a0c;\n          }\n          local_78[iVar5] = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              (quantum_info->state).pixel = uVar17;\n              sVar21 = 8;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = uVar25;\n            if (sVar21 <= uVar25) {\n              uVar16 = sVar21;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar11 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar23 < 1) {\n                dVar11 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar11 * (double)DAT_0029f710;\n            if (0 < (int)uVar23) goto LAB_00161b52;\n            dVar11 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              sVar21 = 8;\n              (quantum_info->state).pixel = uVar17;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = uVar25;\n            if (sVar21 <= uVar25) {\n              uVar16 = sVar21;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            goto LAB_00161c0a;\n          }\n          dVar11 = (double)DAT_0029f710;\n        }\n        if (pPVar28[4].traits != UndefinedPixelTrait) {\n          local_78[pPVar28[4].offset] = (double)DAT_0029f710 - dVar11;\n        }\n        local_64 = (float)((int)local_64 + 1);\n        local_78 = local_78 + sVar6;\n      } while (local_64 != (float)(int)number_pixels);\n    }" { (expression_statement "pPVar28 = image->channel_map;" (assignment_expression "pPVar28 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) (expression_statement "local_64 = 0.0;" (assignment_expression "local_64 = 0.0" identifier = number_literal) ;) (expression_statement "iVar18 = pPVar28->offset;" (assignment_expression "iVar18 = pPVar28->offset" identifier = (field_expression "pPVar28->offset" identifier -> field_identifier)) ;) (expression_statement "iVar5 = pPVar28[1].offset;" (assignment_expression "iVar5 = pPVar28[1].offset" identifier = (field_expression "pPVar28[1].offset" (subscript_expression "pPVar28[1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "sVar6 = image->number_channels;" (assignment_expression "sVar6 = image->number_channels" identifier = (field_expression "image->number_channels" identifier -> field_identifier)) ;) (do_statement "do {\n        pdVar24 = local_78 + iVar18;\n        if ((int)uVar23 < 1) {\n          fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (iStack_68 < 0) {\n            fVar29 = fVar29 + DAT_0029f714;\n          }\n          local_3c = (double)fVar29;\n          if (local_3c < dVar12) {\n            *pdVar24 = 0.0;\n          }\n          else {\n            dVar11 = 0.0;\nLAB_00161f72:\n            *pdVar24 = ((double)DAT_0029f718 / local_3c) * dVar11 * (double)DAT_0029f710;\n            if (0 < (int)uVar23) goto LAB_00161938;\n          }\n          dVar11 = 0.0;\n          local_5c = local_78 + pPVar28[2].offset;\nLAB_00161a0c:\n          dVar10 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar10 = (double)DAT_0029f718 / local_3c;\n          }\n          local_78[iVar5] = dVar10 * dVar11 * (double)DAT_0029f710;\n          if (0 < (int)uVar23) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar11 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar11 = 0.0;\nLAB_00161c0a:\n          dVar10 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar10 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar11 = dVar10 * dVar11 * (double)DAT_0029f710;\n        }\n        else {\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              (quantum_info->state).pixel = uVar17;\n              sVar21 = 8;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = sVar21;\n            if (uVar25 <= sVar21) {\n              uVar16 = uVar25;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          if ((iStack_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar22)) {\n            *pdVar24 = (double)DAT_0029f710;\n          }\n          else {\n            dVar11 = (double)uVar22;\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar24 = dVar11 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              sVar21 = 8;\n              (quantum_info->state).pixel = uVar17;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = sVar21;\n            if (uVar25 <= sVar21) {\n              uVar16 = uVar25;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          local_5c = local_78 + pPVar28[2].offset;\n          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            goto LAB_00161a0c;\n          }\n          local_78[iVar5] = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              (quantum_info->state).pixel = uVar17;\n              sVar21 = 8;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = uVar25;\n            if (sVar21 <= uVar25) {\n              uVar16 = sVar21;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar11 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar23 < 1) {\n                dVar11 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar11 * (double)DAT_0029f710;\n            if (0 < (int)uVar23) goto LAB_00161b52;\n            dVar11 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              sVar21 = 8;\n              (quantum_info->state).pixel = uVar17;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = uVar25;\n            if (sVar21 <= uVar25) {\n              uVar16 = sVar21;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            goto LAB_00161c0a;\n          }\n          dVar11 = (double)DAT_0029f710;\n        }\n        if (pPVar28[4].traits != UndefinedPixelTrait) {\n          local_78[pPVar28[4].offset] = (double)DAT_0029f710 - dVar11;\n        }\n        local_64 = (float)((int)local_64 + 1);\n        local_78 = local_78 + sVar6;\n      } while (local_64 != (float)(int)number_pixels);" do (compound_statement "{\n        pdVar24 = local_78 + iVar18;\n        if ((int)uVar23 < 1) {\n          fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (iStack_68 < 0) {\n            fVar29 = fVar29 + DAT_0029f714;\n          }\n          local_3c = (double)fVar29;\n          if (local_3c < dVar12) {\n            *pdVar24 = 0.0;\n          }\n          else {\n            dVar11 = 0.0;\nLAB_00161f72:\n            *pdVar24 = ((double)DAT_0029f718 / local_3c) * dVar11 * (double)DAT_0029f710;\n            if (0 < (int)uVar23) goto LAB_00161938;\n          }\n          dVar11 = 0.0;\n          local_5c = local_78 + pPVar28[2].offset;\nLAB_00161a0c:\n          dVar10 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar10 = (double)DAT_0029f718 / local_3c;\n          }\n          local_78[iVar5] = dVar10 * dVar11 * (double)DAT_0029f710;\n          if (0 < (int)uVar23) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar11 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar11 = 0.0;\nLAB_00161c0a:\n          dVar10 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar10 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar11 = dVar10 * dVar11 * (double)DAT_0029f710;\n        }\n        else {\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              (quantum_info->state).pixel = uVar17;\n              sVar21 = 8;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = sVar21;\n            if (uVar25 <= sVar21) {\n              uVar16 = uVar25;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          if ((iStack_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar22)) {\n            *pdVar24 = (double)DAT_0029f710;\n          }\n          else {\n            dVar11 = (double)uVar22;\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar24 = dVar11 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              sVar21 = 8;\n              (quantum_info->state).pixel = uVar17;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = sVar21;\n            if (uVar25 <= sVar21) {\n              uVar16 = uVar25;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          local_5c = local_78 + pPVar28[2].offset;\n          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            goto LAB_00161a0c;\n          }\n          local_78[iVar5] = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              (quantum_info->state).pixel = uVar17;\n              sVar21 = 8;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = uVar25;\n            if (sVar21 <= uVar25) {\n              uVar16 = sVar21;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar11 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar23 < 1) {\n                dVar11 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar11 * (double)DAT_0029f710;\n            if (0 < (int)uVar23) goto LAB_00161b52;\n            dVar11 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              sVar21 = 8;\n              (quantum_info->state).pixel = uVar17;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = uVar25;\n            if (sVar21 <= uVar25) {\n              uVar16 = sVar21;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            goto LAB_00161c0a;\n          }\n          dVar11 = (double)DAT_0029f710;\n        }\n        if (pPVar28[4].traits != UndefinedPixelTrait) {\n          local_78[pPVar28[4].offset] = (double)DAT_0029f710 - dVar11;\n        }\n        local_64 = (float)((int)local_64 + 1);\n        local_78 = local_78 + sVar6;\n      }" { (expression_statement "pdVar24 = local_78 + iVar18;" (assignment_expression "pdVar24 = local_78 + iVar18" identifier = (binary_expression "local_78 + iVar18" identifier + identifier)) ;) (if_statement "if ((int)uVar23 < 1) {\n          fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (iStack_68 < 0) {\n            fVar29 = fVar29 + DAT_0029f714;\n          }\n          local_3c = (double)fVar29;\n          if (local_3c < dVar12) {\n            *pdVar24 = 0.0;\n          }\n          else {\n            dVar11 = 0.0;\nLAB_00161f72:\n            *pdVar24 = ((double)DAT_0029f718 / local_3c) * dVar11 * (double)DAT_0029f710;\n            if (0 < (int)uVar23) goto LAB_00161938;\n          }\n          dVar11 = 0.0;\n          local_5c = local_78 + pPVar28[2].offset;\nLAB_00161a0c:\n          dVar10 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar10 = (double)DAT_0029f718 / local_3c;\n          }\n          local_78[iVar5] = dVar10 * dVar11 * (double)DAT_0029f710;\n          if (0 < (int)uVar23) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar11 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar11 = 0.0;\nLAB_00161c0a:\n          dVar10 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar10 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar11 = dVar10 * dVar11 * (double)DAT_0029f710;\n        }\n        else {\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              (quantum_info->state).pixel = uVar17;\n              sVar21 = 8;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = sVar21;\n            if (uVar25 <= sVar21) {\n              uVar16 = uVar25;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          if ((iStack_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar22)) {\n            *pdVar24 = (double)DAT_0029f710;\n          }\n          else {\n            dVar11 = (double)uVar22;\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar24 = dVar11 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              sVar21 = 8;\n              (quantum_info->state).pixel = uVar17;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = sVar21;\n            if (uVar25 <= sVar21) {\n              uVar16 = uVar25;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          local_5c = local_78 + pPVar28[2].offset;\n          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            goto LAB_00161a0c;\n          }\n          local_78[iVar5] = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              (quantum_info->state).pixel = uVar17;\n              sVar21 = 8;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = uVar25;\n            if (sVar21 <= uVar25) {\n              uVar16 = sVar21;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar11 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar23 < 1) {\n                dVar11 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar11 * (double)DAT_0029f710;\n            if (0 < (int)uVar23) goto LAB_00161b52;\n            dVar11 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              sVar21 = 8;\n              (quantum_info->state).pixel = uVar17;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = uVar25;\n            if (sVar21 <= uVar25) {\n              uVar16 = sVar21;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            goto LAB_00161c0a;\n          }\n          dVar11 = (double)DAT_0029f710;\n        }" if (parenthesized_expression "((int)uVar23 < 1)" ( (binary_expression "(int)uVar23 < 1" (cast_expression "(int)uVar23" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (iStack_68 < 0) {\n            fVar29 = fVar29 + DAT_0029f714;\n          }\n          local_3c = (double)fVar29;\n          if (local_3c < dVar12) {\n            *pdVar24 = 0.0;\n          }\n          else {\n            dVar11 = 0.0;\nLAB_00161f72:\n            *pdVar24 = ((double)DAT_0029f718 / local_3c) * dVar11 * (double)DAT_0029f710;\n            if (0 < (int)uVar23) goto LAB_00161938;\n          }\n          dVar11 = 0.0;\n          local_5c = local_78 + pPVar28[2].offset;\nLAB_00161a0c:\n          dVar10 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar10 = (double)DAT_0029f718 / local_3c;\n          }\n          local_78[iVar5] = dVar10 * dVar11 * (double)DAT_0029f710;\n          if (0 < (int)uVar23) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar11 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar11 = 0.0;\nLAB_00161c0a:\n          dVar10 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar10 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar11 = dVar10 * dVar11 * (double)DAT_0029f710;\n        }" { (expression_statement "fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));" (assignment_expression "fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" identifier = (cast_expression "(float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" identifier (argument_list "(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" ( identifier , (call_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" identifier (argument_list "(uStack_6a,CONCAT11(bStack_6b,local_6c))" ( identifier , (call_expression "CONCAT11(bStack_6b,local_6c)" identifier (argument_list "(bStack_6b,local_6c)" ( identifier , identifier ))) ))) ))))) ;) (if_statement "if (iStack_68 < 0) {\n            fVar29 = fVar29 + DAT_0029f714;\n          }" if (parenthesized_expression "(iStack_68 < 0)" ( (binary_expression "iStack_68 < 0" identifier < number_literal) )) (compound_statement "{\n            fVar29 = fVar29 + DAT_0029f714;\n          }" { (expression_statement "fVar29 = fVar29 + DAT_0029f714;" (assignment_expression "fVar29 = fVar29 + DAT_0029f714" identifier = (binary_expression "fVar29 + DAT_0029f714" identifier + identifier)) ;) })) (expression_statement "local_3c = (double)fVar29;" (assignment_expression "local_3c = (double)fVar29" identifier = (cast_expression "(double)fVar29" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (if_statement "if (local_3c < dVar12) {\n            *pdVar24 = 0.0;\n          }\n          else {\n            dVar11 = 0.0;\nLAB_00161f72:\n            *pdVar24 = ((double)DAT_0029f718 / local_3c) * dVar11 * (double)DAT_0029f710;\n            if (0 < (int)uVar23) goto LAB_00161938;\n          }" if (parenthesized_expression "(local_3c < dVar12)" ( (binary_expression "local_3c < dVar12" identifier < identifier) )) (compound_statement "{\n            *pdVar24 = 0.0;\n          }" { (expression_statement "*pdVar24 = 0.0;" (assignment_expression "*pdVar24 = 0.0" (pointer_expression "*pdVar24" * identifier) = number_literal) ;) }) (else_clause "else {\n            dVar11 = 0.0;\nLAB_00161f72:\n            *pdVar24 = ((double)DAT_0029f718 / local_3c) * dVar11 * (double)DAT_0029f710;\n            if (0 < (int)uVar23) goto LAB_00161938;\n          }" else (compound_statement "{\n            dVar11 = 0.0;\nLAB_00161f72:\n            *pdVar24 = ((double)DAT_0029f718 / local_3c) * dVar11 * (double)DAT_0029f710;\n            if (0 < (int)uVar23) goto LAB_00161938;\n          }" { (expression_statement "dVar11 = 0.0;" (assignment_expression "dVar11 = 0.0" identifier = number_literal) ;) (labeled_statement "LAB_00161f72:\n            *pdVar24 = ((double)DAT_0029f718 / local_3c) * dVar11 * (double)DAT_0029f710;" statement_identifier : (expression_statement "*pdVar24 = ((double)DAT_0029f718 / local_3c) * dVar11 * (double)DAT_0029f710;" (assignment_expression "*pdVar24 = ((double)DAT_0029f718 / local_3c) * dVar11 * (double)DAT_0029f710" (pointer_expression "*pdVar24" * identifier) = (binary_expression "((double)DAT_0029f718 / local_3c) * dVar11 * (double)DAT_0029f710" (binary_expression "((double)DAT_0029f718 / local_3c) * dVar11" (parenthesized_expression "((double)DAT_0029f718 / local_3c)" ( (binary_expression "(double)DAT_0029f718 / local_3c" (cast_expression "(double)DAT_0029f718" ( (type_descriptor "double" primitive_type) ) identifier) / identifier) )) * identifier) * (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;)) (if_statement "if (0 < (int)uVar23) goto LAB_00161938;" if (parenthesized_expression "(0 < (int)uVar23)" ( (binary_expression "0 < (int)uVar23" number_literal < (cast_expression "(int)uVar23" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_00161938;" goto statement_identifier ;)) }))) (expression_statement "dVar11 = 0.0;" (assignment_expression "dVar11 = 0.0" identifier = number_literal) ;) (expression_statement "local_5c = local_78 + pPVar28[2].offset;" (assignment_expression "local_5c = local_78 + pPVar28[2].offset" identifier = (binary_expression "local_78 + pPVar28[2].offset" identifier + (field_expression "pPVar28[2].offset" (subscript_expression "pPVar28[2]" identifier [ number_literal ]) . field_identifier))) ;) (labeled_statement "LAB_00161a0c:\n          dVar10 = DAT_0029f738;" statement_identifier : (expression_statement "dVar10 = DAT_0029f738;" (assignment_expression "dVar10 = DAT_0029f738" identifier = identifier) ;)) (if_statement "if (DAT_0029f138 <= local_3c) {\n            dVar10 = (double)DAT_0029f718 / local_3c;\n          }" if (parenthesized_expression "(DAT_0029f138 <= local_3c)" ( (binary_expression "DAT_0029f138 <= local_3c" identifier <= identifier) )) (compound_statement "{\n            dVar10 = (double)DAT_0029f718 / local_3c;\n          }" { (expression_statement "dVar10 = (double)DAT_0029f718 / local_3c;" (assignment_expression "dVar10 = (double)DAT_0029f718 / local_3c" identifier = (binary_expression "(double)DAT_0029f718 / local_3c" (cast_expression "(double)DAT_0029f718" ( (type_descriptor "double" primitive_type) ) identifier) / identifier)) ;) })) (expression_statement "local_78[iVar5] = dVar10 * dVar11 * (double)DAT_0029f710;" (assignment_expression "local_78[iVar5] = dVar10 * dVar11 * (double)DAT_0029f710" (subscript_expression "local_78[iVar5]" identifier [ identifier ]) = (binary_expression "dVar10 * dVar11 * (double)DAT_0029f710" (binary_expression "dVar10 * dVar11" identifier * identifier) * (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (0 < (int)uVar23) goto LAB_00161a4a;" if (parenthesized_expression "(0 < (int)uVar23)" ( (binary_expression "0 < (int)uVar23" number_literal < (cast_expression "(int)uVar23" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_00161a4a;" goto statement_identifier ;)) (if_statement "if (DAT_0029f138 <= local_3c) {\n            dVar11 = 0.0;\n            goto LAB_00161ed0;\n          }" if (parenthesized_expression "(DAT_0029f138 <= local_3c)" ( (binary_expression "DAT_0029f138 <= local_3c" identifier <= identifier) )) (compound_statement "{\n            dVar11 = 0.0;\n            goto LAB_00161ed0;\n          }" { (expression_statement "dVar11 = 0.0;" (assignment_expression "dVar11 = 0.0" identifier = number_literal) ;) (goto_statement "goto LAB_00161ed0;" goto statement_identifier ;) })) (expression_statement "*local_5c = 0.0;" (assignment_expression "*local_5c = 0.0" (pointer_expression "*local_5c" * identifier) = number_literal) ;) (expression_statement "dVar11 = 0.0;" (assignment_expression "dVar11 = 0.0" identifier = number_literal) ;) (labeled_statement "LAB_00161c0a:\n          dVar10 = DAT_0029f738;" statement_identifier : (expression_statement "dVar10 = DAT_0029f738;" (assignment_expression "dVar10 = DAT_0029f738" identifier = identifier) ;)) (if_statement "if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar10 = (double)DAT_0029f718 / local_3c;\n          }" if (parenthesized_expression "(DAT_0029f138 <= local_3c)" ( (binary_expression "DAT_0029f138 <= local_3c" identifier <= identifier) )) (compound_statement "{\nLAB_00161f00:\n            dVar10 = (double)DAT_0029f718 / local_3c;\n          }" { (labeled_statement "LAB_00161f00:\n            dVar10 = (double)DAT_0029f718 / local_3c;" statement_identifier : (expression_statement "dVar10 = (double)DAT_0029f718 / local_3c;" (assignment_expression "dVar10 = (double)DAT_0029f718 / local_3c" identifier = (binary_expression "(double)DAT_0029f718 / local_3c" (cast_expression "(double)DAT_0029f718" ( (type_descriptor "double" primitive_type) ) identifier) / identifier)) ;)) })) (expression_statement "dVar11 = dVar10 * dVar11 * (double)DAT_0029f710;" (assignment_expression "dVar11 = dVar10 * dVar11 * (double)DAT_0029f710" identifier = (binary_expression "dVar10 * dVar11 * (double)DAT_0029f710" (binary_expression "dVar10 * dVar11" identifier * identifier) * (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) }) (else_clause "else {\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              (quantum_info->state).pixel = uVar17;\n              sVar21 = 8;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = sVar21;\n            if (uVar25 <= sVar21) {\n              uVar16 = uVar25;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          if ((iStack_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar22)) {\n            *pdVar24 = (double)DAT_0029f710;\n          }\n          else {\n            dVar11 = (double)uVar22;\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar24 = dVar11 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              sVar21 = 8;\n              (quantum_info->state).pixel = uVar17;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = sVar21;\n            if (uVar25 <= sVar21) {\n              uVar16 = uVar25;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          local_5c = local_78 + pPVar28[2].offset;\n          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            goto LAB_00161a0c;\n          }\n          local_78[iVar5] = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              (quantum_info->state).pixel = uVar17;\n              sVar21 = 8;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = uVar25;\n            if (sVar21 <= uVar25) {\n              uVar16 = sVar21;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar11 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar23 < 1) {\n                dVar11 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar11 * (double)DAT_0029f710;\n            if (0 < (int)uVar23) goto LAB_00161b52;\n            dVar11 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              sVar21 = 8;\n              (quantum_info->state).pixel = uVar17;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = uVar25;\n            if (sVar21 <= uVar25) {\n              uVar16 = sVar21;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            goto LAB_00161c0a;\n          }\n          dVar11 = (double)DAT_0029f710;\n        }" else (compound_statement "{\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              (quantum_info->state).pixel = uVar17;\n              sVar21 = 8;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = sVar21;\n            if (uVar25 <= sVar21) {\n              uVar16 = uVar25;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          if ((iStack_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar22)) {\n            *pdVar24 = (double)DAT_0029f710;\n          }\n          else {\n            dVar11 = (double)uVar22;\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar24 = dVar11 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              sVar21 = 8;\n              (quantum_info->state).pixel = uVar17;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = sVar21;\n            if (uVar25 <= sVar21) {\n              uVar16 = uVar25;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          local_5c = local_78 + pPVar28[2].offset;\n          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            goto LAB_00161a0c;\n          }\n          local_78[iVar5] = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              (quantum_info->state).pixel = uVar17;\n              sVar21 = 8;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = uVar25;\n            if (sVar21 <= uVar25) {\n              uVar16 = sVar21;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar11 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar23 < 1) {\n                dVar11 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar11 * (double)DAT_0029f710;\n            if (0 < (int)uVar23) goto LAB_00161b52;\n            dVar11 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar22 = 0;\n          sVar21 = (quantum_info->state).bits;\n          uVar25 = uVar23;\n          do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              sVar21 = 8;\n              (quantum_info->state).pixel = uVar17;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = uVar25;\n            if (sVar21 <= uVar25) {\n              uVar16 = sVar21;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);\n          (quantum_info->state).bits = sVar21;\n          if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            goto LAB_00161c0a;\n          }\n          dVar11 = (double)DAT_0029f710;\n        }" { (expression_statement "uVar22 = 0;" (assignment_expression "uVar22 = 0" identifier = number_literal) ;) (expression_statement "sVar21 = (quantum_info->state).bits;" (assignment_expression "sVar21 = (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 "uVar25 = uVar23;" (assignment_expression "uVar25 = uVar23" identifier = identifier) ;) (do_statement "do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              (quantum_info->state).pixel = uVar17;\n              sVar21 = 8;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = sVar21;\n            if (uVar25 <= sVar21) {\n              uVar16 = uVar25;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);" do (compound_statement "{\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              (quantum_info->state).pixel = uVar17;\n              sVar21 = 8;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = sVar21;\n            if (uVar25 <= sVar21) {\n              uVar16 = uVar25;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          }" { (if_statement "if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              (quantum_info->state).pixel = uVar17;\n              sVar21 = 8;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }" if (parenthesized_expression "(sVar21 == 0)" ( (binary_expression "sVar21 == 0" identifier == number_literal) )) (compound_statement "{\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              (quantum_info->state).pixel = uVar17;\n              sVar21 = 8;\n            }" { (expression_statement "uVar17 = (uint)(byte)*local_80;" (assignment_expression "uVar17 = (uint)(byte)*local_80" identifier = (binary_expression "(uint)(byte)*local_80" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) * identifier)) ;) (expression_statement "local_80 = (uint *)((int)local_80 + 1);" (assignment_expression "local_80 = (uint *)((int)local_80 + 1)" identifier = (cast_expression "(uint *)((int)local_80 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + 1)" ( (binary_expression "(int)local_80 + 1" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "(quantum_info->state).pixel = uVar17;" (assignment_expression "(quantum_info->state).pixel = uVar17" (field_expression "(quantum_info->state).pixel" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "sVar21 = 8;" (assignment_expression "sVar21 = 8" identifier = number_literal) ;) }) (else_clause "else {\n              uVar17 = (quantum_info->state).pixel;\n            }" else (compound_statement "{\n              uVar17 = (quantum_info->state).pixel;\n            }" { (expression_statement "uVar17 = (quantum_info->state).pixel;" (assignment_expression "uVar17 = (quantum_info->state).pixel" identifier = (field_expression "(quantum_info->state).pixel" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier)) ;) }))) (expression_statement "uVar16 = sVar21;" (assignment_expression "uVar16 = sVar21" identifier = identifier) ;) (if_statement "if (uVar25 <= sVar21) {\n              uVar16 = uVar25;\n            }" if (parenthesized_expression "(uVar25 <= sVar21)" ( (binary_expression "uVar25 <= sVar21" identifier <= identifier) )) (compound_statement "{\n              uVar16 = uVar25;\n            }" { (expression_statement "uVar16 = uVar25;" (assignment_expression "uVar16 = uVar25" identifier = identifier) ;) })) (expression_statement "sVar21 = sVar21 - uVar16;" (assignment_expression "sVar21 = sVar21 - uVar16" identifier = (binary_expression "sVar21 - uVar16" identifier - identifier)) ;) (expression_statement "uVar25 = uVar25 - uVar16;" (assignment_expression "uVar25 = uVar25 - uVar16" identifier = (binary_expression "uVar25 - uVar16" identifier - identifier)) ;) (expression_statement "uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);" (assignment_expression "uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f)" identifier = (binary_expression "uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f)" (binary_expression "uVar22 << ((byte)uVar16 & 0x1f)" identifier << (parenthesized_expression "((byte)uVar16 & 0x1f)" ( (binary_expression "(byte)uVar16 & 0x1f" (cast_expression "(byte)uVar16" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) | (binary_expression "~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f)" (unary_expression "~(-1 << ((byte)uVar16 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar16 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar16 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar16 & 0x1f)" ( (binary_expression "(byte)uVar16 & 0x1f" (cast_expression "(byte)uVar16" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & (binary_expression "uVar17 >> ((byte)sVar21 & 0x1f)" identifier >> (parenthesized_expression "((byte)sVar21 & 0x1f)" ( (binary_expression "(byte)sVar21 & 0x1f" (cast_expression "(byte)sVar21" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))))) ;) }) while (parenthesized_expression "(0 < (int)uVar25)" ( (binary_expression "0 < (int)uVar25" number_literal < (cast_expression "(int)uVar25" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "(quantum_info->state).bits = sVar21;" (assignment_expression "(quantum_info->state).bits = sVar21" (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 ((iStack_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar22)) {\n            *pdVar24 = (double)DAT_0029f710;\n          }\n          else {\n            dVar11 = (double)uVar22;\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar24 = dVar11 * DAT_0029f738 * (double)DAT_0029f710;\n          }" if (parenthesized_expression "((iStack_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar22))" ( (binary_expression "(iStack_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar22)" (parenthesized_expression "(iStack_68 == 0)" ( (binary_expression "iStack_68 == 0" identifier == number_literal) )) && (parenthesized_expression "(CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar22)" ( (binary_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar22" (call_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" identifier (argument_list "(uStack_6a,CONCAT11(bStack_6b,local_6c))" ( identifier , (call_expression "CONCAT11(bStack_6b,local_6c)" identifier (argument_list "(bStack_6b,local_6c)" ( identifier , identifier ))) ))) < identifier) ))) )) (compound_statement "{\n            *pdVar24 = (double)DAT_0029f710;\n          }" { (expression_statement "*pdVar24 = (double)DAT_0029f710;" (assignment_expression "*pdVar24 = (double)DAT_0029f710" (pointer_expression "*pdVar24" * identifier) = (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier)) ;) }) (else_clause "else {\n            dVar11 = (double)uVar22;\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar24 = dVar11 * DAT_0029f738 * (double)DAT_0029f710;\n          }" else (compound_statement "{\n            dVar11 = (double)uVar22;\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar24 = dVar11 * DAT_0029f738 * (double)DAT_0029f710;\n          }" { (expression_statement "dVar11 = (double)uVar22;" (assignment_expression "dVar11 = (double)uVar22" identifier = (cast_expression "(double)uVar22" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));" (assignment_expression "fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" identifier = (cast_expression "(float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" identifier (argument_list "(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" ( identifier , (call_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" identifier (argument_list "(uStack_6a,CONCAT11(bStack_6b,local_6c))" ( identifier , (call_expression "CONCAT11(bStack_6b,local_6c)" identifier (argument_list "(bStack_6b,local_6c)" ( identifier , identifier ))) ))) ))))) ;) (if_statement "if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }" if (parenthesized_expression "(iStack_68 < 0)" ( (binary_expression "iStack_68 < 0" identifier < number_literal) )) (compound_statement "{\n              fVar29 = fVar29 + DAT_0029f714;\n            }" { (expression_statement "fVar29 = fVar29 + DAT_0029f714;" (assignment_expression "fVar29 = fVar29 + DAT_0029f714" identifier = (binary_expression "fVar29 + DAT_0029f714" identifier + identifier)) ;) })) (expression_statement "local_3c = (double)fVar29;" (assignment_expression "local_3c = (double)fVar29" identifier = (cast_expression "(double)fVar29" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (if_statement "if (DAT_0029f138 <= local_3c) goto LAB_00161f72;" if (parenthesized_expression "(DAT_0029f138 <= local_3c)" ( (binary_expression "DAT_0029f138 <= local_3c" identifier <= identifier) )) (goto_statement "goto LAB_00161f72;" goto statement_identifier ;)) (expression_statement "*pdVar24 = dVar11 * DAT_0029f738 * (double)DAT_0029f710;" (assignment_expression "*pdVar24 = dVar11 * DAT_0029f738 * (double)DAT_0029f710" (pointer_expression "*pdVar24" * identifier) = (binary_expression "dVar11 * DAT_0029f738 * (double)DAT_0029f710" (binary_expression "dVar11 * DAT_0029f738" identifier * identifier) * (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) }))) (labeled_statement "LAB_00161938:\n          uVar22 = 0;" statement_identifier : (expression_statement "uVar22 = 0;" (assignment_expression "uVar22 = 0" identifier = number_literal) ;)) (expression_statement "sVar21 = (quantum_info->state).bits;" (assignment_expression "sVar21 = (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 "uVar25 = uVar23;" (assignment_expression "uVar25 = uVar23" identifier = identifier) ;) (do_statement "do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              sVar21 = 8;\n              (quantum_info->state).pixel = uVar17;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = sVar21;\n            if (uVar25 <= sVar21) {\n              uVar16 = uVar25;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);" do (compound_statement "{\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              sVar21 = 8;\n              (quantum_info->state).pixel = uVar17;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = sVar21;\n            if (uVar25 <= sVar21) {\n              uVar16 = uVar25;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          }" { (if_statement "if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              sVar21 = 8;\n              (quantum_info->state).pixel = uVar17;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }" if (parenthesized_expression "(sVar21 == 0)" ( (binary_expression "sVar21 == 0" identifier == number_literal) )) (compound_statement "{\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              sVar21 = 8;\n              (quantum_info->state).pixel = uVar17;\n            }" { (expression_statement "uVar17 = (uint)(byte)*local_80;" (assignment_expression "uVar17 = (uint)(byte)*local_80" identifier = (binary_expression "(uint)(byte)*local_80" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) * identifier)) ;) (expression_statement "local_80 = (uint *)((int)local_80 + 1);" (assignment_expression "local_80 = (uint *)((int)local_80 + 1)" identifier = (cast_expression "(uint *)((int)local_80 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + 1)" ( (binary_expression "(int)local_80 + 1" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "sVar21 = 8;" (assignment_expression "sVar21 = 8" identifier = number_literal) ;) (expression_statement "(quantum_info->state).pixel = uVar17;" (assignment_expression "(quantum_info->state).pixel = uVar17" (field_expression "(quantum_info->state).pixel" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) }) (else_clause "else {\n              uVar17 = (quantum_info->state).pixel;\n            }" else (compound_statement "{\n              uVar17 = (quantum_info->state).pixel;\n            }" { (expression_statement "uVar17 = (quantum_info->state).pixel;" (assignment_expression "uVar17 = (quantum_info->state).pixel" identifier = (field_expression "(quantum_info->state).pixel" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier)) ;) }))) (expression_statement "uVar16 = sVar21;" (assignment_expression "uVar16 = sVar21" identifier = identifier) ;) (if_statement "if (uVar25 <= sVar21) {\n              uVar16 = uVar25;\n            }" if (parenthesized_expression "(uVar25 <= sVar21)" ( (binary_expression "uVar25 <= sVar21" identifier <= identifier) )) (compound_statement "{\n              uVar16 = uVar25;\n            }" { (expression_statement "uVar16 = uVar25;" (assignment_expression "uVar16 = uVar25" identifier = identifier) ;) })) (expression_statement "sVar21 = sVar21 - uVar16;" (assignment_expression "sVar21 = sVar21 - uVar16" identifier = (binary_expression "sVar21 - uVar16" identifier - identifier)) ;) (expression_statement "uVar25 = uVar25 - uVar16;" (assignment_expression "uVar25 = uVar25 - uVar16" identifier = (binary_expression "uVar25 - uVar16" identifier - identifier)) ;) (expression_statement "uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);" (assignment_expression "uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f)" identifier = (binary_expression "uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f)" (binary_expression "uVar22 << ((byte)uVar16 & 0x1f)" identifier << (parenthesized_expression "((byte)uVar16 & 0x1f)" ( (binary_expression "(byte)uVar16 & 0x1f" (cast_expression "(byte)uVar16" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) | (binary_expression "~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f)" (unary_expression "~(-1 << ((byte)uVar16 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar16 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar16 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar16 & 0x1f)" ( (binary_expression "(byte)uVar16 & 0x1f" (cast_expression "(byte)uVar16" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & (binary_expression "uVar17 >> ((byte)sVar21 & 0x1f)" identifier >> (parenthesized_expression "((byte)sVar21 & 0x1f)" ( (binary_expression "(byte)sVar21 & 0x1f" (cast_expression "(byte)sVar21" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))))) ;) }) while (parenthesized_expression "(0 < (int)uVar25)" ( (binary_expression "0 < (int)uVar25" number_literal < (cast_expression "(int)uVar25" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "(quantum_info->state).bits = sVar21;" (assignment_expression "(quantum_info->state).bits = sVar21" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "local_5c = local_78 + pPVar28[2].offset;" (assignment_expression "local_5c = local_78 + pPVar28[2].offset" identifier = (binary_expression "local_78 + pPVar28[2].offset" identifier + (field_expression "pPVar28[2].offset" (subscript_expression "pPVar28[2]" identifier [ number_literal ]) . field_identifier))) ;) (if_statement "if ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            goto LAB_00161a0c;\n          }" if (parenthesized_expression "((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))))" ( (binary_expression "(iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" (parenthesized_expression "(iStack_68 != 0)" ( (binary_expression "iStack_68 != 0" identifier != number_literal) )) || (parenthesized_expression "(uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" ( (binary_expression "uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" identifier <= (call_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" identifier (argument_list "(uStack_6a,CONCAT11(bStack_6b,local_6c))" ( identifier , (call_expression "CONCAT11(bStack_6b,local_6c)" identifier (argument_list "(bStack_6b,local_6c)" ( identifier , identifier ))) )))) ))) )) (compound_statement "{\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            goto LAB_00161a0c;\n          }" { (expression_statement "fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));" (assignment_expression "fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" identifier = (cast_expression "(float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" identifier (argument_list "(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" ( identifier , (call_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" identifier (argument_list "(uStack_6a,CONCAT11(bStack_6b,local_6c))" ( identifier , (call_expression "CONCAT11(bStack_6b,local_6c)" identifier (argument_list "(bStack_6b,local_6c)" ( identifier , identifier ))) ))) ))))) ;) (if_statement "if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }" if (parenthesized_expression "(iStack_68 < 0)" ( (binary_expression "iStack_68 < 0" identifier < number_literal) )) (compound_statement "{\n              fVar29 = fVar29 + DAT_0029f714;\n            }" { (expression_statement "fVar29 = fVar29 + DAT_0029f714;" (assignment_expression "fVar29 = fVar29 + DAT_0029f714" identifier = (binary_expression "fVar29 + DAT_0029f714" identifier + identifier)) ;) })) (expression_statement "local_3c = (double)fVar29;" (assignment_expression "local_3c = (double)fVar29" identifier = (cast_expression "(double)fVar29" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "dVar11 = (double)uVar22;" (assignment_expression "dVar11 = (double)uVar22" identifier = (cast_expression "(double)uVar22" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (goto_statement "goto LAB_00161a0c;" goto statement_identifier ;) })) (expression_statement "local_78[iVar5] = (double)DAT_0029f710;" (assignment_expression "local_78[iVar5] = (double)DAT_0029f710" (subscript_expression "local_78[iVar5]" identifier [ identifier ]) = (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (labeled_statement "LAB_00161a4a:\n          uVar22 = 0;" statement_identifier : (expression_statement "uVar22 = 0;" (assignment_expression "uVar22 = 0" identifier = number_literal) ;)) (expression_statement "sVar21 = (quantum_info->state).bits;" (assignment_expression "sVar21 = (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 "uVar25 = uVar23;" (assignment_expression "uVar25 = uVar23" identifier = identifier) ;) (do_statement "do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              (quantum_info->state).pixel = uVar17;\n              sVar21 = 8;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = uVar25;\n            if (sVar21 <= uVar25) {\n              uVar16 = sVar21;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);" do (compound_statement "{\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              (quantum_info->state).pixel = uVar17;\n              sVar21 = 8;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = uVar25;\n            if (sVar21 <= uVar25) {\n              uVar16 = sVar21;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          }" { (if_statement "if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              (quantum_info->state).pixel = uVar17;\n              sVar21 = 8;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }" if (parenthesized_expression "(sVar21 == 0)" ( (binary_expression "sVar21 == 0" identifier == number_literal) )) (compound_statement "{\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              (quantum_info->state).pixel = uVar17;\n              sVar21 = 8;\n            }" { (expression_statement "uVar17 = (uint)(byte)*local_80;" (assignment_expression "uVar17 = (uint)(byte)*local_80" identifier = (binary_expression "(uint)(byte)*local_80" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) * identifier)) ;) (expression_statement "local_80 = (uint *)((int)local_80 + 1);" (assignment_expression "local_80 = (uint *)((int)local_80 + 1)" identifier = (cast_expression "(uint *)((int)local_80 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + 1)" ( (binary_expression "(int)local_80 + 1" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "(quantum_info->state).pixel = uVar17;" (assignment_expression "(quantum_info->state).pixel = uVar17" (field_expression "(quantum_info->state).pixel" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "sVar21 = 8;" (assignment_expression "sVar21 = 8" identifier = number_literal) ;) }) (else_clause "else {\n              uVar17 = (quantum_info->state).pixel;\n            }" else (compound_statement "{\n              uVar17 = (quantum_info->state).pixel;\n            }" { (expression_statement "uVar17 = (quantum_info->state).pixel;" (assignment_expression "uVar17 = (quantum_info->state).pixel" identifier = (field_expression "(quantum_info->state).pixel" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier)) ;) }))) (expression_statement "uVar16 = uVar25;" (assignment_expression "uVar16 = uVar25" identifier = identifier) ;) (if_statement "if (sVar21 <= uVar25) {\n              uVar16 = sVar21;\n            }" if (parenthesized_expression "(sVar21 <= uVar25)" ( (binary_expression "sVar21 <= uVar25" identifier <= identifier) )) (compound_statement "{\n              uVar16 = sVar21;\n            }" { (expression_statement "uVar16 = sVar21;" (assignment_expression "uVar16 = sVar21" identifier = identifier) ;) })) (expression_statement "sVar21 = sVar21 - uVar16;" (assignment_expression "sVar21 = sVar21 - uVar16" identifier = (binary_expression "sVar21 - uVar16" identifier - identifier)) ;) (expression_statement "uVar25 = uVar25 - uVar16;" (assignment_expression "uVar25 = uVar25 - uVar16" identifier = (binary_expression "uVar25 - uVar16" identifier - identifier)) ;) (expression_statement "uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);" (assignment_expression "uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f)" identifier = (binary_expression "uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f)" (binary_expression "uVar22 << ((byte)uVar16 & 0x1f)" identifier << (parenthesized_expression "((byte)uVar16 & 0x1f)" ( (binary_expression "(byte)uVar16 & 0x1f" (cast_expression "(byte)uVar16" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) | (binary_expression "~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f)" (unary_expression "~(-1 << ((byte)uVar16 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar16 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar16 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar16 & 0x1f)" ( (binary_expression "(byte)uVar16 & 0x1f" (cast_expression "(byte)uVar16" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & (binary_expression "uVar17 >> ((byte)sVar21 & 0x1f)" identifier >> (parenthesized_expression "((byte)sVar21 & 0x1f)" ( (binary_expression "(byte)sVar21 & 0x1f" (cast_expression "(byte)sVar21" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))))) ;) }) while (parenthesized_expression "(0 < (int)uVar25)" ( (binary_expression "0 < (int)uVar25" number_literal < (cast_expression "(int)uVar25" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "(quantum_info->state).bits = sVar21;" (assignment_expression "(quantum_info->state).bits = sVar21" (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 ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar11 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar23 < 1) {\n                dVar11 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar11 * (double)DAT_0029f710;\n            if (0 < (int)uVar23) goto LAB_00161b52;\n            dVar11 = 0.0;\n            goto LAB_00161f00;\n          }" if (parenthesized_expression "((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))))" ( (binary_expression "(iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" (parenthesized_expression "(iStack_68 != 0)" ( (binary_expression "iStack_68 != 0" identifier != number_literal) )) || (parenthesized_expression "(uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" ( (binary_expression "uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" identifier <= (call_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" identifier (argument_list "(uStack_6a,CONCAT11(bStack_6b,local_6c))" ( identifier , (call_expression "CONCAT11(bStack_6b,local_6c)" identifier (argument_list "(bStack_6b,local_6c)" ( identifier , identifier ))) )))) ))) )) (compound_statement "{\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar11 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar23 < 1) {\n                dVar11 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar11 * (double)DAT_0029f710;\n            if (0 < (int)uVar23) goto LAB_00161b52;\n            dVar11 = 0.0;\n            goto LAB_00161f00;\n          }" { (expression_statement "fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));" (assignment_expression "fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" identifier = (cast_expression "(float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" identifier (argument_list "(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" ( identifier , (call_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" identifier (argument_list "(uStack_6a,CONCAT11(bStack_6b,local_6c))" ( identifier , (call_expression "CONCAT11(bStack_6b,local_6c)" identifier (argument_list "(bStack_6b,local_6c)" ( identifier , identifier ))) ))) ))))) ;) (if_statement "if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }" if (parenthesized_expression "(iStack_68 < 0)" ( (binary_expression "iStack_68 < 0" identifier < number_literal) )) (compound_statement "{\n              fVar29 = fVar29 + DAT_0029f714;\n            }" { (expression_statement "fVar29 = fVar29 + DAT_0029f714;" (assignment_expression "fVar29 = fVar29 + DAT_0029f714" identifier = (binary_expression "fVar29 + DAT_0029f714" identifier + identifier)) ;) })) (expression_statement "local_3c = (double)fVar29;" (assignment_expression "local_3c = (double)fVar29" identifier = (cast_expression "(double)fVar29" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "dVar11 = (double)uVar22;" (assignment_expression "dVar11 = (double)uVar22" identifier = (cast_expression "(double)uVar22" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (if_statement "if (local_3c < DAT_0029f138) {\n              *local_5c = dVar11 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar23 < 1) {\n                dVar11 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }" if (parenthesized_expression "(local_3c < DAT_0029f138)" ( (binary_expression "local_3c < DAT_0029f138" identifier < identifier) )) (compound_statement "{\n              *local_5c = dVar11 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar23 < 1) {\n                dVar11 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }" { (expression_statement "*local_5c = dVar11 * DAT_0029f738 * (double)DAT_0029f710;" (assignment_expression "*local_5c = dVar11 * DAT_0029f738 * (double)DAT_0029f710" (pointer_expression "*local_5c" * identifier) = (binary_expression "dVar11 * DAT_0029f738 * (double)DAT_0029f710" (binary_expression "dVar11 * DAT_0029f738" identifier * identifier) * (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((int)uVar23 < 1) {\n                dVar11 = 0.0;\n                goto LAB_00161c0a;\n              }" if (parenthesized_expression "((int)uVar23 < 1)" ( (binary_expression "(int)uVar23 < 1" (cast_expression "(int)uVar23" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                dVar11 = 0.0;\n                goto LAB_00161c0a;\n              }" { (expression_statement "dVar11 = 0.0;" (assignment_expression "dVar11 = 0.0" identifier = number_literal) ;) (goto_statement "goto LAB_00161c0a;" goto statement_identifier ;) })) (goto_statement "goto LAB_00161b52;" goto statement_identifier ;) })) (labeled_statement "LAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar11 * (double)DAT_0029f710;" statement_identifier : (expression_statement "*local_5c = ((double)DAT_0029f718 / local_3c) * dVar11 * (double)DAT_0029f710;" (assignment_expression "*local_5c = ((double)DAT_0029f718 / local_3c) * dVar11 * (double)DAT_0029f710" (pointer_expression "*local_5c" * identifier) = (binary_expression "((double)DAT_0029f718 / local_3c) * dVar11 * (double)DAT_0029f710" (binary_expression "((double)DAT_0029f718 / local_3c) * dVar11" (parenthesized_expression "((double)DAT_0029f718 / local_3c)" ( (binary_expression "(double)DAT_0029f718 / local_3c" (cast_expression "(double)DAT_0029f718" ( (type_descriptor "double" primitive_type) ) identifier) / identifier) )) * identifier) * (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;)) (if_statement "if (0 < (int)uVar23) goto LAB_00161b52;" if (parenthesized_expression "(0 < (int)uVar23)" ( (binary_expression "0 < (int)uVar23" number_literal < (cast_expression "(int)uVar23" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_00161b52;" goto statement_identifier ;)) (expression_statement "dVar11 = 0.0;" (assignment_expression "dVar11 = 0.0" identifier = number_literal) ;) (goto_statement "goto LAB_00161f00;" goto statement_identifier ;) })) (expression_statement "*local_5c = (double)DAT_0029f710;" (assignment_expression "*local_5c = (double)DAT_0029f710" (pointer_expression "*local_5c" * identifier) = (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (labeled_statement "LAB_00161b52:\n          uVar22 = 0;" statement_identifier : (expression_statement "uVar22 = 0;" (assignment_expression "uVar22 = 0" identifier = number_literal) ;)) (expression_statement "sVar21 = (quantum_info->state).bits;" (assignment_expression "sVar21 = (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 "uVar25 = uVar23;" (assignment_expression "uVar25 = uVar23" identifier = identifier) ;) (do_statement "do {\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              sVar21 = 8;\n              (quantum_info->state).pixel = uVar17;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = uVar25;\n            if (sVar21 <= uVar25) {\n              uVar16 = sVar21;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          } while (0 < (int)uVar25);" do (compound_statement "{\n            if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              sVar21 = 8;\n              (quantum_info->state).pixel = uVar17;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }\n            uVar16 = uVar25;\n            if (sVar21 <= uVar25) {\n              uVar16 = sVar21;\n            }\n            sVar21 = sVar21 - uVar16;\n            uVar25 = uVar25 - uVar16;\n            uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);\n          }" { (if_statement "if (sVar21 == 0) {\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              sVar21 = 8;\n              (quantum_info->state).pixel = uVar17;\n            }\n            else {\n              uVar17 = (quantum_info->state).pixel;\n            }" if (parenthesized_expression "(sVar21 == 0)" ( (binary_expression "sVar21 == 0" identifier == number_literal) )) (compound_statement "{\n              uVar17 = (uint)(byte)*local_80;\n              local_80 = (uint *)((int)local_80 + 1);\n              sVar21 = 8;\n              (quantum_info->state).pixel = uVar17;\n            }" { (expression_statement "uVar17 = (uint)(byte)*local_80;" (assignment_expression "uVar17 = (uint)(byte)*local_80" identifier = (binary_expression "(uint)(byte)*local_80" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) * identifier)) ;) (expression_statement "local_80 = (uint *)((int)local_80 + 1);" (assignment_expression "local_80 = (uint *)((int)local_80 + 1)" identifier = (cast_expression "(uint *)((int)local_80 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + 1)" ( (binary_expression "(int)local_80 + 1" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "sVar21 = 8;" (assignment_expression "sVar21 = 8" identifier = number_literal) ;) (expression_statement "(quantum_info->state).pixel = uVar17;" (assignment_expression "(quantum_info->state).pixel = uVar17" (field_expression "(quantum_info->state).pixel" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) }) (else_clause "else {\n              uVar17 = (quantum_info->state).pixel;\n            }" else (compound_statement "{\n              uVar17 = (quantum_info->state).pixel;\n            }" { (expression_statement "uVar17 = (quantum_info->state).pixel;" (assignment_expression "uVar17 = (quantum_info->state).pixel" identifier = (field_expression "(quantum_info->state).pixel" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier)) ;) }))) (expression_statement "uVar16 = uVar25;" (assignment_expression "uVar16 = uVar25" identifier = identifier) ;) (if_statement "if (sVar21 <= uVar25) {\n              uVar16 = sVar21;\n            }" if (parenthesized_expression "(sVar21 <= uVar25)" ( (binary_expression "sVar21 <= uVar25" identifier <= identifier) )) (compound_statement "{\n              uVar16 = sVar21;\n            }" { (expression_statement "uVar16 = sVar21;" (assignment_expression "uVar16 = sVar21" identifier = identifier) ;) })) (expression_statement "sVar21 = sVar21 - uVar16;" (assignment_expression "sVar21 = sVar21 - uVar16" identifier = (binary_expression "sVar21 - uVar16" identifier - identifier)) ;) (expression_statement "uVar25 = uVar25 - uVar16;" (assignment_expression "uVar25 = uVar25 - uVar16" identifier = (binary_expression "uVar25 - uVar16" identifier - identifier)) ;) (expression_statement "uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f);" (assignment_expression "uVar22 = uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f)" identifier = (binary_expression "uVar22 << ((byte)uVar16 & 0x1f) |\n                     ~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f)" (binary_expression "uVar22 << ((byte)uVar16 & 0x1f)" identifier << (parenthesized_expression "((byte)uVar16 & 0x1f)" ( (binary_expression "(byte)uVar16 & 0x1f" (cast_expression "(byte)uVar16" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) | (binary_expression "~(-1 << ((byte)uVar16 & 0x1f)) & uVar17 >> ((byte)sVar21 & 0x1f)" (unary_expression "~(-1 << ((byte)uVar16 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar16 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar16 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar16 & 0x1f)" ( (binary_expression "(byte)uVar16 & 0x1f" (cast_expression "(byte)uVar16" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & (binary_expression "uVar17 >> ((byte)sVar21 & 0x1f)" identifier >> (parenthesized_expression "((byte)sVar21 & 0x1f)" ( (binary_expression "(byte)sVar21 & 0x1f" (cast_expression "(byte)sVar21" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))))) ;) }) while (parenthesized_expression "(0 < (int)uVar25)" ( (binary_expression "0 < (int)uVar25" number_literal < (cast_expression "(int)uVar25" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "(quantum_info->state).bits = sVar21;" (assignment_expression "(quantum_info->state).bits = sVar21" (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 ((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            goto LAB_00161c0a;\n          }" if (parenthesized_expression "((iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))))" ( (binary_expression "(iStack_68 != 0) || (uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" (parenthesized_expression "(iStack_68 != 0)" ( (binary_expression "iStack_68 != 0" identifier != number_literal) )) || (parenthesized_expression "(uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" ( (binary_expression "uVar22 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" identifier <= (call_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" identifier (argument_list "(uStack_6a,CONCAT11(bStack_6b,local_6c))" ( identifier , (call_expression "CONCAT11(bStack_6b,local_6c)" identifier (argument_list "(bStack_6b,local_6c)" ( identifier , identifier ))) )))) ))) )) (compound_statement "{\n            fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }\n            local_3c = (double)fVar29;\n            dVar11 = (double)uVar22;\n            goto LAB_00161c0a;\n          }" { (expression_statement "fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));" (assignment_expression "fVar29 = (float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" identifier = (cast_expression "(float)CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT44(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" identifier (argument_list "(iStack_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" ( identifier , (call_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" identifier (argument_list "(uStack_6a,CONCAT11(bStack_6b,local_6c))" ( identifier , (call_expression "CONCAT11(bStack_6b,local_6c)" identifier (argument_list "(bStack_6b,local_6c)" ( identifier , identifier ))) ))) ))))) ;) (if_statement "if (iStack_68 < 0) {\n              fVar29 = fVar29 + DAT_0029f714;\n            }" if (parenthesized_expression "(iStack_68 < 0)" ( (binary_expression "iStack_68 < 0" identifier < number_literal) )) (compound_statement "{\n              fVar29 = fVar29 + DAT_0029f714;\n            }" { (expression_statement "fVar29 = fVar29 + DAT_0029f714;" (assignment_expression "fVar29 = fVar29 + DAT_0029f714" identifier = (binary_expression "fVar29 + DAT_0029f714" identifier + identifier)) ;) })) (expression_statement "local_3c = (double)fVar29;" (assignment_expression "local_3c = (double)fVar29" identifier = (cast_expression "(double)fVar29" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "dVar11 = (double)uVar22;" (assignment_expression "dVar11 = (double)uVar22" identifier = (cast_expression "(double)uVar22" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (goto_statement "goto LAB_00161c0a;" goto statement_identifier ;) })) (expression_statement "dVar11 = (double)DAT_0029f710;" (assignment_expression "dVar11 = (double)DAT_0029f710" identifier = (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier)) ;) }))) (if_statement "if (pPVar28[4].traits != UndefinedPixelTrait) {\n          local_78[pPVar28[4].offset] = (double)DAT_0029f710 - dVar11;\n        }" if (parenthesized_expression "(pPVar28[4].traits != UndefinedPixelTrait)" ( (binary_expression "pPVar28[4].traits != UndefinedPixelTrait" (field_expression "pPVar28[4].traits" (subscript_expression "pPVar28[4]" identifier [ number_literal ]) . field_identifier) != identifier) )) (compound_statement "{\n          local_78[pPVar28[4].offset] = (double)DAT_0029f710 - dVar11;\n        }" { (expression_statement "local_78[pPVar28[4].offset] = (double)DAT_0029f710 - dVar11;" (assignment_expression "local_78[pPVar28[4].offset] = (double)DAT_0029f710 - dVar11" (subscript_expression "local_78[pPVar28[4].offset]" identifier [ (field_expression "pPVar28[4].offset" (subscript_expression "pPVar28[4]" identifier [ number_literal ]) . field_identifier) ]) = (binary_expression "(double)DAT_0029f710 - dVar11" (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier) - identifier)) ;) })) (expression_statement "local_64 = (float)((int)local_64 + 1);" (assignment_expression "local_64 = (float)((int)local_64 + 1)" identifier = (cast_expression "(float)((int)local_64 + 1)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((int)local_64 + 1)" ( (binary_expression "(int)local_64 + 1" (cast_expression "(int)local_64" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "local_78 = local_78 + sVar6;" (assignment_expression "local_78 = local_78 + sVar6" identifier = (binary_expression "local_78 + sVar6" identifier + identifier)) ;) }) while (parenthesized_expression "(local_64 != (float)(int)number_pixels)" ( (binary_expression "local_64 != (float)(int)number_pixels" identifier != (cast_expression "(float)(int)number_pixels" ( (type_descriptor "float" primitive_type) ) (cast_expression "(int)number_pixels" ( (type_descriptor "int" primitive_type) ) identifier))) )) ;) })))) })) (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" { comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void __regparm2\nFUN_00160f20(int param_1,uint *param_2,int param_3,undefined4 param_4,float *param_5,int param_6)\n\n{\n  float *pfVar1;\n  int iVar2;\n  ushort uVar3;\n  ushort uVar4;\n  ushort uVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  float fVar9;\n  float fVar10;\n  float fVar11;\n  byte bVar12;\n  float fVar13;\n  double dVar14;\n  double dVar15;\n  double dVar16;\n  float fVar17;\n  uint uVar18;\n  uint uVar19;\n  int iVar20;\n  double *pdVar21;\n  uint uVar22;\n  byte bVar23;\n  int iVar24;\n  uint uVar25;\n  uint uVar26;\n  float fVar27;\n  double *pdVar28;\n  uint uVar29;\n  double *pdVar30;\n  ushort uVar31;\n  int iVar32;\n  int iVar33;\n  int in_GS_OFFSET;\n  longdouble lVar34;\n  float *local_80;\n  int local_78;\n  byte local_6c;\n  byte bStack_6b;\n  ushort uStack_6a;\n  int local_68;\n  float local_64;\n  float local_60;\n  double *local_5c;\n  double local_3c;\n  float fStack_2c;\n  undefined4 uStack_28;\n  \n  fVar10 = DAT_002c5824;\n  fVar9 = DAT_002a7ff0;\n  fVar13 = DAT_002a7fec;\n  fVar27 = DAT_0029f710;\n  dVar16 = DAT_0029f138;\n  local_80 = param_5;\n  local_78 = param_6;\n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_1 == 0) {\n                    \n    __assert_fail("image != (Image *) NULL","MagickCore/quantum-import.c",0x1123,"ImportRGBOQuantum"\n                 );\n  }\n  if (*(int *)(param_1 + 0x3344) != -0x54535255) {\n                    \n    __assert_fail("image->signature == MagickCoreSignature","MagickCore/quantum-import.c",0x1124,\n                  "ImportRGBOQuantum");\n  }\n  uVar22 = *param_2;\n  switch(uVar22) {\n  case 8:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar32 = 0;\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      uVar22 = param_2[9];\n      do {\n        bVar12 = *(byte *)((int)param_5 + 1);\n        bVar23 = *(byte *)((int)param_5 + 2);\n        *(double *)(param_6 + iVar24 * 8) = (double)((float)*(byte *)param_5 * fVar9);\n        *(double *)(param_6 + iVar6 * 8) = (double)((float)bVar12 * fVar9);\n        *(double *)(param_6 + iVar7 * 8) = (double)((float)bVar23 * fVar9);\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9);\n        }\n        param_5 = (float *)((int)param_5 + uVar22 + 4);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;\n  default:\n    local_6c = 0;\n    bStack_6b = 0;\n    uStack_6a = 0;\n    local_68 = 0;\n    if (uVar22 != 0) goto LAB_00161285;\n    goto LAB_001612bc;\n  case 10:\n    if (param_2[0xb] == 0) {\n      if (0 < param_3) {\n        fVar27 = 0.0;\n        local_6c = 0;\n        bStack_6b = 0;\n        uStack_6a = 0;\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        uVar22 = param_2[9];\n        iVar33 = *(int *)(param_1 + 0x298);\n        uVar26 = 0;\n        do {\n          iVar24 = 0;\n          uVar29 = uVar26;\ncode_r0x001620a2:\n          if (uVar29 % 3 == 1) {\n            uVar26 = (uint)fVar27 >> 6 & 0xffc0;\ncode_r0x001620cb:\n            dVar16 = (double)uVar26;\n            if (iVar24 != 2) goto code_r0x001620d7;\ncode_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;\ncode_r0x001620f8:\n            uVar29 = uVar29 + 1;\n            iVar24 = iVar24 + 1;\n            goto code_r0x001620a2;\n          }\n          if (uVar29 % 3 == 2) {\n            uVar26 = ((uint)fVar27 & 0xffc) << 4;\n            goto code_r0x001620cb;\n          }\n          pfVar1 = local_80 + 1;\n          fVar27 = *local_80;\n          if (param_2[0x10] != 1) {\n            fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          }\n          dVar16 = (double)(((uint)fVar27 >> 0x16) << 6);\n          local_80 = pfVar1;\n          if (iVar24 == 2) goto code_r0x00162130;\ncode_r0x001620d7:\n          uVar26 = uVar29 + 1;\n          if (iVar24 != 3) {\n            if (iVar24 == 1) {\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }\n            else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }\n            goto code_r0x001620f8;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;\n          }\ncode_r0x0016217a:\n          iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar24;\n          bStack_6b = (byte)((uint)iVar24 >> 8);\n          uStack_6a = (ushort)((uint)iVar24 >> 0x10);\n          local_80 = (float *)((int)local_80 + uVar22);\n          local_78 = local_78 + iVar33 * 8;\n        } while (iVar24 != param_3);\n      }\n    }\n    else if (0 < param_3) {\n      iVar33 = *(int *)(param_1 + 0x2a8);\n      iVar20 = 0;\n      iVar24 = *(int *)(iVar33 + 8);\n      iVar6 = *(int *)(param_1 + 0x298);\n      iVar7 = *(int *)(iVar33 + 0x34);\n      iVar8 = *(int *)(iVar33 + 0x20);\n      iVar32 = *(int *)(iVar33 + 0x14);\n      do {\n        uVar29 = 0;\n        uVar26 = 10;\n        uVar22 = param_2[0x14];\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar26 <= uVar22) {\n            uVar18 = uVar26;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar24 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar32 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        uVar26 = 0;\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar8 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar29 <= uVar22) {\n            uVar18 = uVar29;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar29 = uVar29 - uVar18;\n          uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar29);\n        param_2[0x14] = uVar22;\n        if (iVar7 != 0) {\n          *(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));\n        }\n        iVar20 = iVar20 + 1;\n        local_78 = local_78 + iVar6 * 8;\n      } while (iVar20 != param_3);\n    }\n    break;\n  case 0x10:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        uVar22 = param_2[0x10];\n        do {\n          if (uVar22 == 1) {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          else {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          lVar34 = (longdouble)FUN_00159350();\n          if (*(int *)(iVar33 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n    }\n    else if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(iVar20 + 0x20);\n      iVar7 = *(int *)(iVar20 + 8);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        uVar3 = *(ushort *)(param_5 + 1);\n        uVar31 = *(ushort *)((int)param_5 + 6);\n        uVar4 = *(ushort *)param_5;\n        pdVar21 = (double *)(iVar24 * 8 + param_6);\n        uVar5 = *(ushort *)((int)param_5 + 2);\n        pdVar28 = (double *)(iVar6 * 8 + param_6);\n        pdVar30 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)uVar4;\n          *pdVar21 = (double)uVar5;\n          *pdVar28 = (double)uVar3;\n        }\n        else {\n          uVar31 = uVar31 << 8 | uVar31 >> 8;\n          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);\n          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);\n          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 8);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;\n  case 0x18:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }\n    goto code_r0x001616dd;\n  case 0x20:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        local_5c = (double *)0x0;\n        uVar22 = param_2[9];\n        uVar26 = param_2[0x10];\n        iVar33 = *(int *)(param_1 + 0x298);\n        do {\n          local_64 = *param_5;\n          if (uVar26 != 1) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3));\n          }\n          fVar13 = (local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar27 = fVar10;\n          if ((fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)) {\n            fVar27 = fVar13;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 8) * 8) = (double)fVar27;\n          if (uVar26 == 1) {\n            fVar27 = param_5[1];\n          }\n          else {\n            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));\n          }\n          fVar27 = (fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            local_60 = param_5[2];\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));\n          }\n          fVar27 = (local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            fVar27 = param_5[3];\n            local_6c = SUB41(fVar27,0);\n            bStack_6b = (byte)((uint)fVar27 >> 8);\n            uStack_6a = (ushort)((uint)fVar27 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);\n            bStack_6b = *(byte *)((int)param_5 + 0xe);\n            local_6c = *(byte *)((int)param_5 + 0xf);\n          }\n          fVar27 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          param_5 = (float *)((int)param_5 + uVar22 + 0x10);\n          param_6 = param_6 + iVar33 * 8;\n        } while (local_5c != (double *)param_3);\n      }\n      break;\n    }\ncode_r0x001616dd:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        fVar17 = DAT_002a7fec;\n        fVar27 = param_5[3];\n        fVar9 = param_5[1];\n        pdVar21 = (double *)(iVar6 * 8 + param_6);\n        fVar10 = param_5[2];\n        pdVar30 = (double *)(iVar24 * 8 + param_6);\n        fVar11 = *param_5;\n        pdVar28 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec);\n          *pdVar21 = (double)((float)(uint)fVar9 / fVar17);\n          *pdVar28 = (double)((float)(uint)fVar10 / fVar17);\n        }\n        else {\n          uVar3 = (ushort)((uint)fVar11 >> 8);\n          uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);\n          fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          *pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13);\n          *pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);\n          *pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 0x10);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;\n  case 0x40:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }\nLAB_00161285:\n    uVar26 = 0;\n    if (uVar22 < 0x41) {\n      uVar26 = uVar22;\n    }\n    bVar23 = (byte)(uVar26 - 1);\n    bVar12 = bVar23 & 0x1f;\n    uVar18 = 2 << (bVar23 & 0x1f);\n    uVar19 = uVar18;\n    uVar29 = 0 << bVar12 | 2U >> 0x20 - bVar12;\n    if ((uVar26 - 1 & 0x20) != 0) {\n      uVar19 = 0;\n      uVar29 = uVar18;\n    }\n    iVar20 = uVar19 - 1;\n    local_68 = (uVar29 - 1) + (uint)(uVar19 != 0);\n    local_6c = (byte)iVar20;\n    bStack_6b = (byte)((uint)iVar20 >> 8);\n    uStack_6a = (ushort)((uint)iVar20 >> 0x10);\nLAB_001612bc:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      local_64 = 0.0;\n      iVar33 = *(int *)(iVar20 + 8);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(param_1 + 0x298);\n      do {\n        pdVar28 = (double *)(iVar33 * 8 + local_78);\n        pdVar21 = (double *)(local_78 + iVar24 * 8);\n        if ((int)uVar22 < 1) {\n          fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (local_68 < 0) {\n            fVar27 = fVar27 + DAT_0029f714;\n          }\n          local_3c = (double)fVar27;\n          if (local_3c < dVar16) {\n            *pdVar28 = 0.0;\n          }\n          else {\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }\n          dVar15 = 0.0;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\nLAB_00161a0c:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          *pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710;\n          if (0 < (int)uVar22) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar15 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar15 = 0.0;\nLAB_00161c0a:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar15 = dVar14 * dVar15 * (double)DAT_0029f710;\n        }\n        else {\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {\n            *pdVar28 = (double)DAT_0029f710;\n          }\n          else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }\n          *pdVar21 = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }\n          dVar15 = (double)DAT_0029f710;\n        }\n        if (*(int *)(iVar20 + 0x34) != 0) {\n          *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15;\n        }\n        local_64 = (float)((int)local_64 + 1);\n        local_78 = local_78 + iVar6 * 8;\n      } while (local_64 != (float)param_3);\n    }\n  }\n  if (iVar2 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0029eab0();\n  }\n  return;\n}\n\n" (function_definition "void __regparm2\nFUN_00160f20(int param_1,uint *param_2,int param_3,undefined4 param_4,float *param_5,int param_6)\n\n{\n  float *pfVar1;\n  int iVar2;\n  ushort uVar3;\n  ushort uVar4;\n  ushort uVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  float fVar9;\n  float fVar10;\n  float fVar11;\n  byte bVar12;\n  float fVar13;\n  double dVar14;\n  double dVar15;\n  double dVar16;\n  float fVar17;\n  uint uVar18;\n  uint uVar19;\n  int iVar20;\n  double *pdVar21;\n  uint uVar22;\n  byte bVar23;\n  int iVar24;\n  uint uVar25;\n  uint uVar26;\n  float fVar27;\n  double *pdVar28;\n  uint uVar29;\n  double *pdVar30;\n  ushort uVar31;\n  int iVar32;\n  int iVar33;\n  int in_GS_OFFSET;\n  longdouble lVar34;\n  float *local_80;\n  int local_78;\n  byte local_6c;\n  byte bStack_6b;\n  ushort uStack_6a;\n  int local_68;\n  float local_64;\n  float local_60;\n  double *local_5c;\n  double local_3c;\n  float fStack_2c;\n  undefined4 uStack_28;\n  \n  fVar10 = DAT_002c5824;\n  fVar9 = DAT_002a7ff0;\n  fVar13 = DAT_002a7fec;\n  fVar27 = DAT_0029f710;\n  dVar16 = DAT_0029f138;\n  local_80 = param_5;\n  local_78 = param_6;\n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_1 == 0) {\n                    \n    __assert_fail("image != (Image *) NULL","MagickCore/quantum-import.c",0x1123,"ImportRGBOQuantum"\n                 );\n  }\n  if (*(int *)(param_1 + 0x3344) != -0x54535255) {\n                    \n    __assert_fail("image->signature == MagickCoreSignature","MagickCore/quantum-import.c",0x1124,\n                  "ImportRGBOQuantum");\n  }\n  uVar22 = *param_2;\n  switch(uVar22) {\n  case 8:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar32 = 0;\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      uVar22 = param_2[9];\n      do {\n        bVar12 = *(byte *)((int)param_5 + 1);\n        bVar23 = *(byte *)((int)param_5 + 2);\n        *(double *)(param_6 + iVar24 * 8) = (double)((float)*(byte *)param_5 * fVar9);\n        *(double *)(param_6 + iVar6 * 8) = (double)((float)bVar12 * fVar9);\n        *(double *)(param_6 + iVar7 * 8) = (double)((float)bVar23 * fVar9);\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9);\n        }\n        param_5 = (float *)((int)param_5 + uVar22 + 4);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;\n  default:\n    local_6c = 0;\n    bStack_6b = 0;\n    uStack_6a = 0;\n    local_68 = 0;\n    if (uVar22 != 0) goto LAB_00161285;\n    goto LAB_001612bc;\n  case 10:\n    if (param_2[0xb] == 0) {\n      if (0 < param_3) {\n        fVar27 = 0.0;\n        local_6c = 0;\n        bStack_6b = 0;\n        uStack_6a = 0;\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        uVar22 = param_2[9];\n        iVar33 = *(int *)(param_1 + 0x298);\n        uVar26 = 0;\n        do {\n          iVar24 = 0;\n          uVar29 = uVar26;\ncode_r0x001620a2:\n          if (uVar29 % 3 == 1) {\n            uVar26 = (uint)fVar27 >> 6 & 0xffc0;\ncode_r0x001620cb:\n            dVar16 = (double)uVar26;\n            if (iVar24 != 2) goto code_r0x001620d7;\ncode_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;\ncode_r0x001620f8:\n            uVar29 = uVar29 + 1;\n            iVar24 = iVar24 + 1;\n            goto code_r0x001620a2;\n          }\n          if (uVar29 % 3 == 2) {\n            uVar26 = ((uint)fVar27 & 0xffc) << 4;\n            goto code_r0x001620cb;\n          }\n          pfVar1 = local_80 + 1;\n          fVar27 = *local_80;\n          if (param_2[0x10] != 1) {\n            fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          }\n          dVar16 = (double)(((uint)fVar27 >> 0x16) << 6);\n          local_80 = pfVar1;\n          if (iVar24 == 2) goto code_r0x00162130;\ncode_r0x001620d7:\n          uVar26 = uVar29 + 1;\n          if (iVar24 != 3) {\n            if (iVar24 == 1) {\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }\n            else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }\n            goto code_r0x001620f8;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;\n          }\ncode_r0x0016217a:\n          iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar24;\n          bStack_6b = (byte)((uint)iVar24 >> 8);\n          uStack_6a = (ushort)((uint)iVar24 >> 0x10);\n          local_80 = (float *)((int)local_80 + uVar22);\n          local_78 = local_78 + iVar33 * 8;\n        } while (iVar24 != param_3);\n      }\n    }\n    else if (0 < param_3) {\n      iVar33 = *(int *)(param_1 + 0x2a8);\n      iVar20 = 0;\n      iVar24 = *(int *)(iVar33 + 8);\n      iVar6 = *(int *)(param_1 + 0x298);\n      iVar7 = *(int *)(iVar33 + 0x34);\n      iVar8 = *(int *)(iVar33 + 0x20);\n      iVar32 = *(int *)(iVar33 + 0x14);\n      do {\n        uVar29 = 0;\n        uVar26 = 10;\n        uVar22 = param_2[0x14];\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar26 <= uVar22) {\n            uVar18 = uVar26;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar24 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar32 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        uVar26 = 0;\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar8 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar29 <= uVar22) {\n            uVar18 = uVar29;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar29 = uVar29 - uVar18;\n          uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar29);\n        param_2[0x14] = uVar22;\n        if (iVar7 != 0) {\n          *(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));\n        }\n        iVar20 = iVar20 + 1;\n        local_78 = local_78 + iVar6 * 8;\n      } while (iVar20 != param_3);\n    }\n    break;\n  case 0x10:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        uVar22 = param_2[0x10];\n        do {\n          if (uVar22 == 1) {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          else {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          lVar34 = (longdouble)FUN_00159350();\n          if (*(int *)(iVar33 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n    }\n    else if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(iVar20 + 0x20);\n      iVar7 = *(int *)(iVar20 + 8);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        uVar3 = *(ushort *)(param_5 + 1);\n        uVar31 = *(ushort *)((int)param_5 + 6);\n        uVar4 = *(ushort *)param_5;\n        pdVar21 = (double *)(iVar24 * 8 + param_6);\n        uVar5 = *(ushort *)((int)param_5 + 2);\n        pdVar28 = (double *)(iVar6 * 8 + param_6);\n        pdVar30 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)uVar4;\n          *pdVar21 = (double)uVar5;\n          *pdVar28 = (double)uVar3;\n        }\n        else {\n          uVar31 = uVar31 << 8 | uVar31 >> 8;\n          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);\n          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);\n          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 8);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;\n  case 0x18:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }\n    goto code_r0x001616dd;\n  case 0x20:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        local_5c = (double *)0x0;\n        uVar22 = param_2[9];\n        uVar26 = param_2[0x10];\n        iVar33 = *(int *)(param_1 + 0x298);\n        do {\n          local_64 = *param_5;\n          if (uVar26 != 1) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3));\n          }\n          fVar13 = (local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar27 = fVar10;\n          if ((fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)) {\n            fVar27 = fVar13;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 8) * 8) = (double)fVar27;\n          if (uVar26 == 1) {\n            fVar27 = param_5[1];\n          }\n          else {\n            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));\n          }\n          fVar27 = (fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            local_60 = param_5[2];\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));\n          }\n          fVar27 = (local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            fVar27 = param_5[3];\n            local_6c = SUB41(fVar27,0);\n            bStack_6b = (byte)((uint)fVar27 >> 8);\n            uStack_6a = (ushort)((uint)fVar27 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);\n            bStack_6b = *(byte *)((int)param_5 + 0xe);\n            local_6c = *(byte *)((int)param_5 + 0xf);\n          }\n          fVar27 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          param_5 = (float *)((int)param_5 + uVar22 + 0x10);\n          param_6 = param_6 + iVar33 * 8;\n        } while (local_5c != (double *)param_3);\n      }\n      break;\n    }\ncode_r0x001616dd:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        fVar17 = DAT_002a7fec;\n        fVar27 = param_5[3];\n        fVar9 = param_5[1];\n        pdVar21 = (double *)(iVar6 * 8 + param_6);\n        fVar10 = param_5[2];\n        pdVar30 = (double *)(iVar24 * 8 + param_6);\n        fVar11 = *param_5;\n        pdVar28 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec);\n          *pdVar21 = (double)((float)(uint)fVar9 / fVar17);\n          *pdVar28 = (double)((float)(uint)fVar10 / fVar17);\n        }\n        else {\n          uVar3 = (ushort)((uint)fVar11 >> 8);\n          uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);\n          fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          *pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13);\n          *pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);\n          *pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 0x10);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;\n  case 0x40:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }\nLAB_00161285:\n    uVar26 = 0;\n    if (uVar22 < 0x41) {\n      uVar26 = uVar22;\n    }\n    bVar23 = (byte)(uVar26 - 1);\n    bVar12 = bVar23 & 0x1f;\n    uVar18 = 2 << (bVar23 & 0x1f);\n    uVar19 = uVar18;\n    uVar29 = 0 << bVar12 | 2U >> 0x20 - bVar12;\n    if ((uVar26 - 1 & 0x20) != 0) {\n      uVar19 = 0;\n      uVar29 = uVar18;\n    }\n    iVar20 = uVar19 - 1;\n    local_68 = (uVar29 - 1) + (uint)(uVar19 != 0);\n    local_6c = (byte)iVar20;\n    bStack_6b = (byte)((uint)iVar20 >> 8);\n    uStack_6a = (ushort)((uint)iVar20 >> 0x10);\nLAB_001612bc:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      local_64 = 0.0;\n      iVar33 = *(int *)(iVar20 + 8);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(param_1 + 0x298);\n      do {\n        pdVar28 = (double *)(iVar33 * 8 + local_78);\n        pdVar21 = (double *)(local_78 + iVar24 * 8);\n        if ((int)uVar22 < 1) {\n          fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (local_68 < 0) {\n            fVar27 = fVar27 + DAT_0029f714;\n          }\n          local_3c = (double)fVar27;\n          if (local_3c < dVar16) {\n            *pdVar28 = 0.0;\n          }\n          else {\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }\n          dVar15 = 0.0;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\nLAB_00161a0c:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          *pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710;\n          if (0 < (int)uVar22) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar15 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar15 = 0.0;\nLAB_00161c0a:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar15 = dVar14 * dVar15 * (double)DAT_0029f710;\n        }\n        else {\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {\n            *pdVar28 = (double)DAT_0029f710;\n          }\n          else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }\n          *pdVar21 = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }\n          dVar15 = (double)DAT_0029f710;\n        }\n        if (*(int *)(iVar20 + 0x34) != 0) {\n          *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15;\n        }\n        local_64 = (float)((int)local_64 + 1);\n        local_78 = local_78 + iVar6 * 8;\n      } while (local_64 != (float)param_3);\n    }\n  }\n  if (iVar2 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0029eab0();\n  }\n  return;\n}" primitive_type (ERROR "__regparm2" identifier) (function_declarator "FUN_00160f20(int param_1,uint *param_2,int param_3,undefined4 param_4,float *param_5,int param_6)" identifier (parameter_list "(int param_1,uint *param_2,int param_3,undefined4 param_4,float *param_5,int param_6)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "float *param_5" primitive_type (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "int param_6" primitive_type identifier) ))) (compound_statement "{\n  float *pfVar1;\n  int iVar2;\n  ushort uVar3;\n  ushort uVar4;\n  ushort uVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  float fVar9;\n  float fVar10;\n  float fVar11;\n  byte bVar12;\n  float fVar13;\n  double dVar14;\n  double dVar15;\n  double dVar16;\n  float fVar17;\n  uint uVar18;\n  uint uVar19;\n  int iVar20;\n  double *pdVar21;\n  uint uVar22;\n  byte bVar23;\n  int iVar24;\n  uint uVar25;\n  uint uVar26;\n  float fVar27;\n  double *pdVar28;\n  uint uVar29;\n  double *pdVar30;\n  ushort uVar31;\n  int iVar32;\n  int iVar33;\n  int in_GS_OFFSET;\n  longdouble lVar34;\n  float *local_80;\n  int local_78;\n  byte local_6c;\n  byte bStack_6b;\n  ushort uStack_6a;\n  int local_68;\n  float local_64;\n  float local_60;\n  double *local_5c;\n  double local_3c;\n  float fStack_2c;\n  undefined4 uStack_28;\n  \n  fVar10 = DAT_002c5824;\n  fVar9 = DAT_002a7ff0;\n  fVar13 = DAT_002a7fec;\n  fVar27 = DAT_0029f710;\n  dVar16 = DAT_0029f138;\n  local_80 = param_5;\n  local_78 = param_6;\n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_1 == 0) {\n                    \n    __assert_fail("image != (Image *) NULL","MagickCore/quantum-import.c",0x1123,"ImportRGBOQuantum"\n                 );\n  }\n  if (*(int *)(param_1 + 0x3344) != -0x54535255) {\n                    \n    __assert_fail("image->signature == MagickCoreSignature","MagickCore/quantum-import.c",0x1124,\n                  "ImportRGBOQuantum");\n  }\n  uVar22 = *param_2;\n  switch(uVar22) {\n  case 8:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar32 = 0;\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      uVar22 = param_2[9];\n      do {\n        bVar12 = *(byte *)((int)param_5 + 1);\n        bVar23 = *(byte *)((int)param_5 + 2);\n        *(double *)(param_6 + iVar24 * 8) = (double)((float)*(byte *)param_5 * fVar9);\n        *(double *)(param_6 + iVar6 * 8) = (double)((float)bVar12 * fVar9);\n        *(double *)(param_6 + iVar7 * 8) = (double)((float)bVar23 * fVar9);\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9);\n        }\n        param_5 = (float *)((int)param_5 + uVar22 + 4);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;\n  default:\n    local_6c = 0;\n    bStack_6b = 0;\n    uStack_6a = 0;\n    local_68 = 0;\n    if (uVar22 != 0) goto LAB_00161285;\n    goto LAB_001612bc;\n  case 10:\n    if (param_2[0xb] == 0) {\n      if (0 < param_3) {\n        fVar27 = 0.0;\n        local_6c = 0;\n        bStack_6b = 0;\n        uStack_6a = 0;\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        uVar22 = param_2[9];\n        iVar33 = *(int *)(param_1 + 0x298);\n        uVar26 = 0;\n        do {\n          iVar24 = 0;\n          uVar29 = uVar26;\ncode_r0x001620a2:\n          if (uVar29 % 3 == 1) {\n            uVar26 = (uint)fVar27 >> 6 & 0xffc0;\ncode_r0x001620cb:\n            dVar16 = (double)uVar26;\n            if (iVar24 != 2) goto code_r0x001620d7;\ncode_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;\ncode_r0x001620f8:\n            uVar29 = uVar29 + 1;\n            iVar24 = iVar24 + 1;\n            goto code_r0x001620a2;\n          }\n          if (uVar29 % 3 == 2) {\n            uVar26 = ((uint)fVar27 & 0xffc) << 4;\n            goto code_r0x001620cb;\n          }\n          pfVar1 = local_80 + 1;\n          fVar27 = *local_80;\n          if (param_2[0x10] != 1) {\n            fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          }\n          dVar16 = (double)(((uint)fVar27 >> 0x16) << 6);\n          local_80 = pfVar1;\n          if (iVar24 == 2) goto code_r0x00162130;\ncode_r0x001620d7:\n          uVar26 = uVar29 + 1;\n          if (iVar24 != 3) {\n            if (iVar24 == 1) {\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }\n            else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }\n            goto code_r0x001620f8;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;\n          }\ncode_r0x0016217a:\n          iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar24;\n          bStack_6b = (byte)((uint)iVar24 >> 8);\n          uStack_6a = (ushort)((uint)iVar24 >> 0x10);\n          local_80 = (float *)((int)local_80 + uVar22);\n          local_78 = local_78 + iVar33 * 8;\n        } while (iVar24 != param_3);\n      }\n    }\n    else if (0 < param_3) {\n      iVar33 = *(int *)(param_1 + 0x2a8);\n      iVar20 = 0;\n      iVar24 = *(int *)(iVar33 + 8);\n      iVar6 = *(int *)(param_1 + 0x298);\n      iVar7 = *(int *)(iVar33 + 0x34);\n      iVar8 = *(int *)(iVar33 + 0x20);\n      iVar32 = *(int *)(iVar33 + 0x14);\n      do {\n        uVar29 = 0;\n        uVar26 = 10;\n        uVar22 = param_2[0x14];\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar26 <= uVar22) {\n            uVar18 = uVar26;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar24 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar32 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        uVar26 = 0;\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar8 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar29 <= uVar22) {\n            uVar18 = uVar29;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar29 = uVar29 - uVar18;\n          uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar29);\n        param_2[0x14] = uVar22;\n        if (iVar7 != 0) {\n          *(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));\n        }\n        iVar20 = iVar20 + 1;\n        local_78 = local_78 + iVar6 * 8;\n      } while (iVar20 != param_3);\n    }\n    break;\n  case 0x10:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        uVar22 = param_2[0x10];\n        do {\n          if (uVar22 == 1) {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          else {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          lVar34 = (longdouble)FUN_00159350();\n          if (*(int *)(iVar33 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n    }\n    else if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(iVar20 + 0x20);\n      iVar7 = *(int *)(iVar20 + 8);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        uVar3 = *(ushort *)(param_5 + 1);\n        uVar31 = *(ushort *)((int)param_5 + 6);\n        uVar4 = *(ushort *)param_5;\n        pdVar21 = (double *)(iVar24 * 8 + param_6);\n        uVar5 = *(ushort *)((int)param_5 + 2);\n        pdVar28 = (double *)(iVar6 * 8 + param_6);\n        pdVar30 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)uVar4;\n          *pdVar21 = (double)uVar5;\n          *pdVar28 = (double)uVar3;\n        }\n        else {\n          uVar31 = uVar31 << 8 | uVar31 >> 8;\n          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);\n          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);\n          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 8);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;\n  case 0x18:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }\n    goto code_r0x001616dd;\n  case 0x20:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        local_5c = (double *)0x0;\n        uVar22 = param_2[9];\n        uVar26 = param_2[0x10];\n        iVar33 = *(int *)(param_1 + 0x298);\n        do {\n          local_64 = *param_5;\n          if (uVar26 != 1) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3));\n          }\n          fVar13 = (local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar27 = fVar10;\n          if ((fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)) {\n            fVar27 = fVar13;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 8) * 8) = (double)fVar27;\n          if (uVar26 == 1) {\n            fVar27 = param_5[1];\n          }\n          else {\n            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));\n          }\n          fVar27 = (fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            local_60 = param_5[2];\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));\n          }\n          fVar27 = (local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            fVar27 = param_5[3];\n            local_6c = SUB41(fVar27,0);\n            bStack_6b = (byte)((uint)fVar27 >> 8);\n            uStack_6a = (ushort)((uint)fVar27 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);\n            bStack_6b = *(byte *)((int)param_5 + 0xe);\n            local_6c = *(byte *)((int)param_5 + 0xf);\n          }\n          fVar27 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          param_5 = (float *)((int)param_5 + uVar22 + 0x10);\n          param_6 = param_6 + iVar33 * 8;\n        } while (local_5c != (double *)param_3);\n      }\n      break;\n    }\ncode_r0x001616dd:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        fVar17 = DAT_002a7fec;\n        fVar27 = param_5[3];\n        fVar9 = param_5[1];\n        pdVar21 = (double *)(iVar6 * 8 + param_6);\n        fVar10 = param_5[2];\n        pdVar30 = (double *)(iVar24 * 8 + param_6);\n        fVar11 = *param_5;\n        pdVar28 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec);\n          *pdVar21 = (double)((float)(uint)fVar9 / fVar17);\n          *pdVar28 = (double)((float)(uint)fVar10 / fVar17);\n        }\n        else {\n          uVar3 = (ushort)((uint)fVar11 >> 8);\n          uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);\n          fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          *pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13);\n          *pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);\n          *pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 0x10);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;\n  case 0x40:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }\nLAB_00161285:\n    uVar26 = 0;\n    if (uVar22 < 0x41) {\n      uVar26 = uVar22;\n    }\n    bVar23 = (byte)(uVar26 - 1);\n    bVar12 = bVar23 & 0x1f;\n    uVar18 = 2 << (bVar23 & 0x1f);\n    uVar19 = uVar18;\n    uVar29 = 0 << bVar12 | 2U >> 0x20 - bVar12;\n    if ((uVar26 - 1 & 0x20) != 0) {\n      uVar19 = 0;\n      uVar29 = uVar18;\n    }\n    iVar20 = uVar19 - 1;\n    local_68 = (uVar29 - 1) + (uint)(uVar19 != 0);\n    local_6c = (byte)iVar20;\n    bStack_6b = (byte)((uint)iVar20 >> 8);\n    uStack_6a = (ushort)((uint)iVar20 >> 0x10);\nLAB_001612bc:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      local_64 = 0.0;\n      iVar33 = *(int *)(iVar20 + 8);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(param_1 + 0x298);\n      do {\n        pdVar28 = (double *)(iVar33 * 8 + local_78);\n        pdVar21 = (double *)(local_78 + iVar24 * 8);\n        if ((int)uVar22 < 1) {\n          fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (local_68 < 0) {\n            fVar27 = fVar27 + DAT_0029f714;\n          }\n          local_3c = (double)fVar27;\n          if (local_3c < dVar16) {\n            *pdVar28 = 0.0;\n          }\n          else {\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }\n          dVar15 = 0.0;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\nLAB_00161a0c:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          *pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710;\n          if (0 < (int)uVar22) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar15 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar15 = 0.0;\nLAB_00161c0a:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar15 = dVar14 * dVar15 * (double)DAT_0029f710;\n        }\n        else {\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {\n            *pdVar28 = (double)DAT_0029f710;\n          }\n          else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }\n          *pdVar21 = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }\n          dVar15 = (double)DAT_0029f710;\n        }\n        if (*(int *)(iVar20 + 0x34) != 0) {\n          *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15;\n        }\n        local_64 = (float)((int)local_64 + 1);\n        local_78 = local_78 + iVar6 * 8;\n      } while (local_64 != (float)param_3);\n    }\n  }\n  if (iVar2 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0029eab0();\n  }\n  return;\n}" { (declaration "float *pfVar1;" primitive_type (pointer_declarator "*pfVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "ushort uVar3;" type_identifier identifier ;) (declaration "ushort uVar4;" type_identifier identifier ;) (declaration "ushort uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "float fVar9;" primitive_type identifier ;) (declaration "float fVar10;" primitive_type identifier ;) (declaration "float fVar11;" primitive_type identifier ;) (declaration "byte bVar12;" type_identifier identifier ;) (declaration "float fVar13;" primitive_type identifier ;) (declaration "double dVar14;" primitive_type identifier ;) (declaration "double dVar15;" primitive_type identifier ;) (declaration "double dVar16;" primitive_type identifier ;) (declaration "float fVar17;" primitive_type identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "uint uVar19;" type_identifier identifier ;) (declaration "int iVar20;" primitive_type identifier ;) (declaration "double *pdVar21;" primitive_type (pointer_declarator "*pdVar21" * identifier) ;) (declaration "uint uVar22;" type_identifier identifier ;) (declaration "byte bVar23;" type_identifier identifier ;) (declaration "int iVar24;" primitive_type identifier ;) (declaration "uint uVar25;" type_identifier identifier ;) (declaration "uint uVar26;" type_identifier identifier ;) (declaration "float fVar27;" primitive_type identifier ;) (declaration "double *pdVar28;" primitive_type (pointer_declarator "*pdVar28" * identifier) ;) (declaration "uint uVar29;" type_identifier identifier ;) (declaration "double *pdVar30;" primitive_type (pointer_declarator "*pdVar30" * identifier) ;) (declaration "ushort uVar31;" type_identifier identifier ;) (declaration "int iVar32;" primitive_type identifier ;) (declaration "int iVar33;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "longdouble lVar34;" type_identifier identifier ;) (declaration "float *local_80;" primitive_type (pointer_declarator "*local_80" * identifier) ;) (declaration "int local_78;" primitive_type identifier ;) (declaration "byte local_6c;" type_identifier identifier ;) (declaration "byte bStack_6b;" type_identifier identifier ;) (declaration "ushort uStack_6a;" type_identifier identifier ;) (declaration "int local_68;" primitive_type identifier ;) (declaration "float local_64;" primitive_type identifier ;) (declaration "float local_60;" primitive_type identifier ;) (declaration "double *local_5c;" primitive_type (pointer_declarator "*local_5c" * identifier) ;) (declaration "double local_3c;" primitive_type identifier ;) (declaration "float fStack_2c;" primitive_type identifier ;) (declaration "undefined4 uStack_28;" type_identifier identifier ;) (expression_statement "fVar10 = DAT_002c5824;" (assignment_expression "fVar10 = DAT_002c5824" identifier = identifier) ;) (expression_statement "fVar9 = DAT_002a7ff0;" (assignment_expression "fVar9 = DAT_002a7ff0" identifier = identifier) ;) (expression_statement "fVar13 = DAT_002a7fec;" (assignment_expression "fVar13 = DAT_002a7fec" identifier = identifier) ;) (expression_statement "fVar27 = DAT_0029f710;" (assignment_expression "fVar27 = DAT_0029f710" identifier = identifier) ;) (expression_statement "dVar16 = DAT_0029f138;" (assignment_expression "dVar16 = DAT_0029f138" identifier = identifier) ;) (expression_statement "local_80 = param_5;" (assignment_expression "local_80 = param_5" identifier = identifier) ;) (expression_statement "local_78 = param_6;" (assignment_expression "local_78 = param_6" identifier = identifier) ;) (expression_statement "iVar2 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar2 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (param_1 == 0) {\n                    \n    __assert_fail("image != (Image *) NULL","MagickCore/quantum-import.c",0x1123,"ImportRGBOQuantum"\n                 );\n  }" if (parenthesized_expression "(param_1 == 0)" ( (binary_expression "param_1 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n    __assert_fail("image != (Image *) NULL","MagickCore/quantum-import.c",0x1123,"ImportRGBOQuantum"\n                 );\n  }" { (expression_statement "__assert_fail("image != (Image *) NULL","MagickCore/quantum-import.c",0x1123,"ImportRGBOQuantum"\n                 );" (call_expression "__assert_fail("image != (Image *) NULL","MagickCore/quantum-import.c",0x1123,"ImportRGBOQuantum"\n                 )" identifier (argument_list "("image != (Image *) NULL","MagickCore/quantum-import.c",0x1123,"ImportRGBOQuantum"\n                 )" ( (string_literal ""image != (Image *) NULL"" " string_content ") , (string_literal ""MagickCore/quantum-import.c"" " string_content ") , number_literal , (string_literal ""ImportRGBOQuantum"" " string_content ") ))) ;) })) (if_statement "if (*(int *)(param_1 + 0x3344) != -0x54535255) {\n                    \n    __assert_fail("image->signature == MagickCoreSignature","MagickCore/quantum-import.c",0x1124,\n                  "ImportRGBOQuantum");\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x3344) != -0x54535255)" ( (binary_expression "*(int *)(param_1 + 0x3344) != -0x54535255" (pointer_expression "*(int *)(param_1 + 0x3344)" * (cast_expression "(int *)(param_1 + 0x3344)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3344)" ( (binary_expression "param_1 + 0x3344" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                    \n    __assert_fail("image->signature == MagickCoreSignature","MagickCore/quantum-import.c",0x1124,\n                  "ImportRGBOQuantum");\n  }" { (expression_statement "__assert_fail("image->signature == MagickCoreSignature","MagickCore/quantum-import.c",0x1124,\n                  "ImportRGBOQuantum");" (call_expression "__assert_fail("image->signature == MagickCoreSignature","MagickCore/quantum-import.c",0x1124,\n                  "ImportRGBOQuantum")" identifier (argument_list "("image->signature == MagickCoreSignature","MagickCore/quantum-import.c",0x1124,\n                  "ImportRGBOQuantum")" ( (string_literal ""image->signature == MagickCoreSignature"" " string_content ") , (string_literal ""MagickCore/quantum-import.c"" " string_content ") , number_literal , (string_literal ""ImportRGBOQuantum"" " string_content ") ))) ;) })) (expression_statement "uVar22 = *param_2;" (assignment_expression "uVar22 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (switch_statement "switch(uVar22) {\n  case 8:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar32 = 0;\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      uVar22 = param_2[9];\n      do {\n        bVar12 = *(byte *)((int)param_5 + 1);\n        bVar23 = *(byte *)((int)param_5 + 2);\n        *(double *)(param_6 + iVar24 * 8) = (double)((float)*(byte *)param_5 * fVar9);\n        *(double *)(param_6 + iVar6 * 8) = (double)((float)bVar12 * fVar9);\n        *(double *)(param_6 + iVar7 * 8) = (double)((float)bVar23 * fVar9);\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9);\n        }\n        param_5 = (float *)((int)param_5 + uVar22 + 4);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;\n  default:\n    local_6c = 0;\n    bStack_6b = 0;\n    uStack_6a = 0;\n    local_68 = 0;\n    if (uVar22 != 0) goto LAB_00161285;\n    goto LAB_001612bc;\n  case 10:\n    if (param_2[0xb] == 0) {\n      if (0 < param_3) {\n        fVar27 = 0.0;\n        local_6c = 0;\n        bStack_6b = 0;\n        uStack_6a = 0;\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        uVar22 = param_2[9];\n        iVar33 = *(int *)(param_1 + 0x298);\n        uVar26 = 0;\n        do {\n          iVar24 = 0;\n          uVar29 = uVar26;\ncode_r0x001620a2:\n          if (uVar29 % 3 == 1) {\n            uVar26 = (uint)fVar27 >> 6 & 0xffc0;\ncode_r0x001620cb:\n            dVar16 = (double)uVar26;\n            if (iVar24 != 2) goto code_r0x001620d7;\ncode_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;\ncode_r0x001620f8:\n            uVar29 = uVar29 + 1;\n            iVar24 = iVar24 + 1;\n            goto code_r0x001620a2;\n          }\n          if (uVar29 % 3 == 2) {\n            uVar26 = ((uint)fVar27 & 0xffc) << 4;\n            goto code_r0x001620cb;\n          }\n          pfVar1 = local_80 + 1;\n          fVar27 = *local_80;\n          if (param_2[0x10] != 1) {\n            fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          }\n          dVar16 = (double)(((uint)fVar27 >> 0x16) << 6);\n          local_80 = pfVar1;\n          if (iVar24 == 2) goto code_r0x00162130;\ncode_r0x001620d7:\n          uVar26 = uVar29 + 1;\n          if (iVar24 != 3) {\n            if (iVar24 == 1) {\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }\n            else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }\n            goto code_r0x001620f8;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;\n          }\ncode_r0x0016217a:\n          iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar24;\n          bStack_6b = (byte)((uint)iVar24 >> 8);\n          uStack_6a = (ushort)((uint)iVar24 >> 0x10);\n          local_80 = (float *)((int)local_80 + uVar22);\n          local_78 = local_78 + iVar33 * 8;\n        } while (iVar24 != param_3);\n      }\n    }\n    else if (0 < param_3) {\n      iVar33 = *(int *)(param_1 + 0x2a8);\n      iVar20 = 0;\n      iVar24 = *(int *)(iVar33 + 8);\n      iVar6 = *(int *)(param_1 + 0x298);\n      iVar7 = *(int *)(iVar33 + 0x34);\n      iVar8 = *(int *)(iVar33 + 0x20);\n      iVar32 = *(int *)(iVar33 + 0x14);\n      do {\n        uVar29 = 0;\n        uVar26 = 10;\n        uVar22 = param_2[0x14];\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar26 <= uVar22) {\n            uVar18 = uVar26;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar24 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar32 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        uVar26 = 0;\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar8 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar29 <= uVar22) {\n            uVar18 = uVar29;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar29 = uVar29 - uVar18;\n          uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar29);\n        param_2[0x14] = uVar22;\n        if (iVar7 != 0) {\n          *(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));\n        }\n        iVar20 = iVar20 + 1;\n        local_78 = local_78 + iVar6 * 8;\n      } while (iVar20 != param_3);\n    }\n    break;\n  case 0x10:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        uVar22 = param_2[0x10];\n        do {\n          if (uVar22 == 1) {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          else {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          lVar34 = (longdouble)FUN_00159350();\n          if (*(int *)(iVar33 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n    }\n    else if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(iVar20 + 0x20);\n      iVar7 = *(int *)(iVar20 + 8);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        uVar3 = *(ushort *)(param_5 + 1);\n        uVar31 = *(ushort *)((int)param_5 + 6);\n        uVar4 = *(ushort *)param_5;\n        pdVar21 = (double *)(iVar24 * 8 + param_6);\n        uVar5 = *(ushort *)((int)param_5 + 2);\n        pdVar28 = (double *)(iVar6 * 8 + param_6);\n        pdVar30 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)uVar4;\n          *pdVar21 = (double)uVar5;\n          *pdVar28 = (double)uVar3;\n        }\n        else {\n          uVar31 = uVar31 << 8 | uVar31 >> 8;\n          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);\n          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);\n          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 8);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;\n  case 0x18:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }\n    goto code_r0x001616dd;\n  case 0x20:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        local_5c = (double *)0x0;\n        uVar22 = param_2[9];\n        uVar26 = param_2[0x10];\n        iVar33 = *(int *)(param_1 + 0x298);\n        do {\n          local_64 = *param_5;\n          if (uVar26 != 1) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3));\n          }\n          fVar13 = (local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar27 = fVar10;\n          if ((fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)) {\n            fVar27 = fVar13;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 8) * 8) = (double)fVar27;\n          if (uVar26 == 1) {\n            fVar27 = param_5[1];\n          }\n          else {\n            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));\n          }\n          fVar27 = (fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            local_60 = param_5[2];\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));\n          }\n          fVar27 = (local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            fVar27 = param_5[3];\n            local_6c = SUB41(fVar27,0);\n            bStack_6b = (byte)((uint)fVar27 >> 8);\n            uStack_6a = (ushort)((uint)fVar27 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);\n            bStack_6b = *(byte *)((int)param_5 + 0xe);\n            local_6c = *(byte *)((int)param_5 + 0xf);\n          }\n          fVar27 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          param_5 = (float *)((int)param_5 + uVar22 + 0x10);\n          param_6 = param_6 + iVar33 * 8;\n        } while (local_5c != (double *)param_3);\n      }\n      break;\n    }\ncode_r0x001616dd:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        fVar17 = DAT_002a7fec;\n        fVar27 = param_5[3];\n        fVar9 = param_5[1];\n        pdVar21 = (double *)(iVar6 * 8 + param_6);\n        fVar10 = param_5[2];\n        pdVar30 = (double *)(iVar24 * 8 + param_6);\n        fVar11 = *param_5;\n        pdVar28 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec);\n          *pdVar21 = (double)((float)(uint)fVar9 / fVar17);\n          *pdVar28 = (double)((float)(uint)fVar10 / fVar17);\n        }\n        else {\n          uVar3 = (ushort)((uint)fVar11 >> 8);\n          uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);\n          fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          *pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13);\n          *pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);\n          *pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 0x10);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;\n  case 0x40:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }\nLAB_00161285:\n    uVar26 = 0;\n    if (uVar22 < 0x41) {\n      uVar26 = uVar22;\n    }\n    bVar23 = (byte)(uVar26 - 1);\n    bVar12 = bVar23 & 0x1f;\n    uVar18 = 2 << (bVar23 & 0x1f);\n    uVar19 = uVar18;\n    uVar29 = 0 << bVar12 | 2U >> 0x20 - bVar12;\n    if ((uVar26 - 1 & 0x20) != 0) {\n      uVar19 = 0;\n      uVar29 = uVar18;\n    }\n    iVar20 = uVar19 - 1;\n    local_68 = (uVar29 - 1) + (uint)(uVar19 != 0);\n    local_6c = (byte)iVar20;\n    bStack_6b = (byte)((uint)iVar20 >> 8);\n    uStack_6a = (ushort)((uint)iVar20 >> 0x10);\nLAB_001612bc:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      local_64 = 0.0;\n      iVar33 = *(int *)(iVar20 + 8);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(param_1 + 0x298);\n      do {\n        pdVar28 = (double *)(iVar33 * 8 + local_78);\n        pdVar21 = (double *)(local_78 + iVar24 * 8);\n        if ((int)uVar22 < 1) {\n          fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (local_68 < 0) {\n            fVar27 = fVar27 + DAT_0029f714;\n          }\n          local_3c = (double)fVar27;\n          if (local_3c < dVar16) {\n            *pdVar28 = 0.0;\n          }\n          else {\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }\n          dVar15 = 0.0;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\nLAB_00161a0c:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          *pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710;\n          if (0 < (int)uVar22) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar15 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar15 = 0.0;\nLAB_00161c0a:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar15 = dVar14 * dVar15 * (double)DAT_0029f710;\n        }\n        else {\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {\n            *pdVar28 = (double)DAT_0029f710;\n          }\n          else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }\n          *pdVar21 = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }\n          dVar15 = (double)DAT_0029f710;\n        }\n        if (*(int *)(iVar20 + 0x34) != 0) {\n          *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15;\n        }\n        local_64 = (float)((int)local_64 + 1);\n        local_78 = local_78 + iVar6 * 8;\n      } while (local_64 != (float)param_3);\n    }\n  }" switch (parenthesized_expression "(uVar22)" ( identifier )) (compound_statement "{\n  case 8:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar32 = 0;\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      uVar22 = param_2[9];\n      do {\n        bVar12 = *(byte *)((int)param_5 + 1);\n        bVar23 = *(byte *)((int)param_5 + 2);\n        *(double *)(param_6 + iVar24 * 8) = (double)((float)*(byte *)param_5 * fVar9);\n        *(double *)(param_6 + iVar6 * 8) = (double)((float)bVar12 * fVar9);\n        *(double *)(param_6 + iVar7 * 8) = (double)((float)bVar23 * fVar9);\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9);\n        }\n        param_5 = (float *)((int)param_5 + uVar22 + 4);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;\n  default:\n    local_6c = 0;\n    bStack_6b = 0;\n    uStack_6a = 0;\n    local_68 = 0;\n    if (uVar22 != 0) goto LAB_00161285;\n    goto LAB_001612bc;\n  case 10:\n    if (param_2[0xb] == 0) {\n      if (0 < param_3) {\n        fVar27 = 0.0;\n        local_6c = 0;\n        bStack_6b = 0;\n        uStack_6a = 0;\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        uVar22 = param_2[9];\n        iVar33 = *(int *)(param_1 + 0x298);\n        uVar26 = 0;\n        do {\n          iVar24 = 0;\n          uVar29 = uVar26;\ncode_r0x001620a2:\n          if (uVar29 % 3 == 1) {\n            uVar26 = (uint)fVar27 >> 6 & 0xffc0;\ncode_r0x001620cb:\n            dVar16 = (double)uVar26;\n            if (iVar24 != 2) goto code_r0x001620d7;\ncode_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;\ncode_r0x001620f8:\n            uVar29 = uVar29 + 1;\n            iVar24 = iVar24 + 1;\n            goto code_r0x001620a2;\n          }\n          if (uVar29 % 3 == 2) {\n            uVar26 = ((uint)fVar27 & 0xffc) << 4;\n            goto code_r0x001620cb;\n          }\n          pfVar1 = local_80 + 1;\n          fVar27 = *local_80;\n          if (param_2[0x10] != 1) {\n            fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          }\n          dVar16 = (double)(((uint)fVar27 >> 0x16) << 6);\n          local_80 = pfVar1;\n          if (iVar24 == 2) goto code_r0x00162130;\ncode_r0x001620d7:\n          uVar26 = uVar29 + 1;\n          if (iVar24 != 3) {\n            if (iVar24 == 1) {\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }\n            else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }\n            goto code_r0x001620f8;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;\n          }\ncode_r0x0016217a:\n          iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar24;\n          bStack_6b = (byte)((uint)iVar24 >> 8);\n          uStack_6a = (ushort)((uint)iVar24 >> 0x10);\n          local_80 = (float *)((int)local_80 + uVar22);\n          local_78 = local_78 + iVar33 * 8;\n        } while (iVar24 != param_3);\n      }\n    }\n    else if (0 < param_3) {\n      iVar33 = *(int *)(param_1 + 0x2a8);\n      iVar20 = 0;\n      iVar24 = *(int *)(iVar33 + 8);\n      iVar6 = *(int *)(param_1 + 0x298);\n      iVar7 = *(int *)(iVar33 + 0x34);\n      iVar8 = *(int *)(iVar33 + 0x20);\n      iVar32 = *(int *)(iVar33 + 0x14);\n      do {\n        uVar29 = 0;\n        uVar26 = 10;\n        uVar22 = param_2[0x14];\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar26 <= uVar22) {\n            uVar18 = uVar26;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar24 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar32 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        uVar26 = 0;\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar8 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar29 <= uVar22) {\n            uVar18 = uVar29;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar29 = uVar29 - uVar18;\n          uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar29);\n        param_2[0x14] = uVar22;\n        if (iVar7 != 0) {\n          *(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));\n        }\n        iVar20 = iVar20 + 1;\n        local_78 = local_78 + iVar6 * 8;\n      } while (iVar20 != param_3);\n    }\n    break;\n  case 0x10:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        uVar22 = param_2[0x10];\n        do {\n          if (uVar22 == 1) {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          else {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          lVar34 = (longdouble)FUN_00159350();\n          if (*(int *)(iVar33 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n    }\n    else if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(iVar20 + 0x20);\n      iVar7 = *(int *)(iVar20 + 8);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        uVar3 = *(ushort *)(param_5 + 1);\n        uVar31 = *(ushort *)((int)param_5 + 6);\n        uVar4 = *(ushort *)param_5;\n        pdVar21 = (double *)(iVar24 * 8 + param_6);\n        uVar5 = *(ushort *)((int)param_5 + 2);\n        pdVar28 = (double *)(iVar6 * 8 + param_6);\n        pdVar30 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)uVar4;\n          *pdVar21 = (double)uVar5;\n          *pdVar28 = (double)uVar3;\n        }\n        else {\n          uVar31 = uVar31 << 8 | uVar31 >> 8;\n          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);\n          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);\n          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 8);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;\n  case 0x18:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }\n    goto code_r0x001616dd;\n  case 0x20:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        local_5c = (double *)0x0;\n        uVar22 = param_2[9];\n        uVar26 = param_2[0x10];\n        iVar33 = *(int *)(param_1 + 0x298);\n        do {\n          local_64 = *param_5;\n          if (uVar26 != 1) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3));\n          }\n          fVar13 = (local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar27 = fVar10;\n          if ((fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)) {\n            fVar27 = fVar13;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 8) * 8) = (double)fVar27;\n          if (uVar26 == 1) {\n            fVar27 = param_5[1];\n          }\n          else {\n            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));\n          }\n          fVar27 = (fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            local_60 = param_5[2];\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));\n          }\n          fVar27 = (local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            fVar27 = param_5[3];\n            local_6c = SUB41(fVar27,0);\n            bStack_6b = (byte)((uint)fVar27 >> 8);\n            uStack_6a = (ushort)((uint)fVar27 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);\n            bStack_6b = *(byte *)((int)param_5 + 0xe);\n            local_6c = *(byte *)((int)param_5 + 0xf);\n          }\n          fVar27 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          param_5 = (float *)((int)param_5 + uVar22 + 0x10);\n          param_6 = param_6 + iVar33 * 8;\n        } while (local_5c != (double *)param_3);\n      }\n      break;\n    }\ncode_r0x001616dd:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        fVar17 = DAT_002a7fec;\n        fVar27 = param_5[3];\n        fVar9 = param_5[1];\n        pdVar21 = (double *)(iVar6 * 8 + param_6);\n        fVar10 = param_5[2];\n        pdVar30 = (double *)(iVar24 * 8 + param_6);\n        fVar11 = *param_5;\n        pdVar28 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec);\n          *pdVar21 = (double)((float)(uint)fVar9 / fVar17);\n          *pdVar28 = (double)((float)(uint)fVar10 / fVar17);\n        }\n        else {\n          uVar3 = (ushort)((uint)fVar11 >> 8);\n          uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);\n          fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          *pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13);\n          *pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);\n          *pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 0x10);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;\n  case 0x40:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }\nLAB_00161285:\n    uVar26 = 0;\n    if (uVar22 < 0x41) {\n      uVar26 = uVar22;\n    }\n    bVar23 = (byte)(uVar26 - 1);\n    bVar12 = bVar23 & 0x1f;\n    uVar18 = 2 << (bVar23 & 0x1f);\n    uVar19 = uVar18;\n    uVar29 = 0 << bVar12 | 2U >> 0x20 - bVar12;\n    if ((uVar26 - 1 & 0x20) != 0) {\n      uVar19 = 0;\n      uVar29 = uVar18;\n    }\n    iVar20 = uVar19 - 1;\n    local_68 = (uVar29 - 1) + (uint)(uVar19 != 0);\n    local_6c = (byte)iVar20;\n    bStack_6b = (byte)((uint)iVar20 >> 8);\n    uStack_6a = (ushort)((uint)iVar20 >> 0x10);\nLAB_001612bc:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      local_64 = 0.0;\n      iVar33 = *(int *)(iVar20 + 8);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(param_1 + 0x298);\n      do {\n        pdVar28 = (double *)(iVar33 * 8 + local_78);\n        pdVar21 = (double *)(local_78 + iVar24 * 8);\n        if ((int)uVar22 < 1) {\n          fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (local_68 < 0) {\n            fVar27 = fVar27 + DAT_0029f714;\n          }\n          local_3c = (double)fVar27;\n          if (local_3c < dVar16) {\n            *pdVar28 = 0.0;\n          }\n          else {\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }\n          dVar15 = 0.0;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\nLAB_00161a0c:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          *pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710;\n          if (0 < (int)uVar22) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar15 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar15 = 0.0;\nLAB_00161c0a:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar15 = dVar14 * dVar15 * (double)DAT_0029f710;\n        }\n        else {\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {\n            *pdVar28 = (double)DAT_0029f710;\n          }\n          else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }\n          *pdVar21 = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }\n          dVar15 = (double)DAT_0029f710;\n        }\n        if (*(int *)(iVar20 + 0x34) != 0) {\n          *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15;\n        }\n        local_64 = (float)((int)local_64 + 1);\n        local_78 = local_78 + iVar6 * 8;\n      } while (local_64 != (float)param_3);\n    }\n  }" { (case_statement "case 8:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar32 = 0;\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      uVar22 = param_2[9];\n      do {\n        bVar12 = *(byte *)((int)param_5 + 1);\n        bVar23 = *(byte *)((int)param_5 + 2);\n        *(double *)(param_6 + iVar24 * 8) = (double)((float)*(byte *)param_5 * fVar9);\n        *(double *)(param_6 + iVar6 * 8) = (double)((float)bVar12 * fVar9);\n        *(double *)(param_6 + iVar7 * 8) = (double)((float)bVar23 * fVar9);\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9);\n        }\n        param_5 = (float *)((int)param_5 + uVar22 + 4);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;" case number_literal : (if_statement "if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar32 = 0;\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      uVar22 = param_2[9];\n      do {\n        bVar12 = *(byte *)((int)param_5 + 1);\n        bVar23 = *(byte *)((int)param_5 + 2);\n        *(double *)(param_6 + iVar24 * 8) = (double)((float)*(byte *)param_5 * fVar9);\n        *(double *)(param_6 + iVar6 * 8) = (double)((float)bVar12 * fVar9);\n        *(double *)(param_6 + iVar7 * 8) = (double)((float)bVar23 * fVar9);\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9);\n        }\n        param_5 = (float *)((int)param_5 + uVar22 + 4);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }" if (parenthesized_expression "(0 < param_3)" ( (binary_expression "0 < param_3" number_literal < identifier) )) (compound_statement "{\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar32 = 0;\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      uVar22 = param_2[9];\n      do {\n        bVar12 = *(byte *)((int)param_5 + 1);\n        bVar23 = *(byte *)((int)param_5 + 2);\n        *(double *)(param_6 + iVar24 * 8) = (double)((float)*(byte *)param_5 * fVar9);\n        *(double *)(param_6 + iVar6 * 8) = (double)((float)bVar12 * fVar9);\n        *(double *)(param_6 + iVar7 * 8) = (double)((float)bVar23 * fVar9);\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9);\n        }\n        param_5 = (float *)((int)param_5 + uVar22 + 4);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }" { (expression_statement "iVar20 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar20 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) (expression_statement "iVar33 = *(int *)(param_1 + 0x298);" (assignment_expression "iVar33 = *(int *)(param_1 + 0x298)" identifier = (pointer_expression "*(int *)(param_1 + 0x298)" * (cast_expression "(int *)(param_1 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) ))))) ;) (expression_statement "iVar24 = *(int *)(iVar20 + 8);" (assignment_expression "iVar24 = *(int *)(iVar20 + 8)" identifier = (pointer_expression "*(int *)(iVar20 + 8)" * (cast_expression "(int *)(iVar20 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 8)" ( (binary_expression "iVar20 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar32 = 0;" (assignment_expression "iVar32 = 0" identifier = number_literal) ;) (expression_statement "iVar6 = *(int *)(iVar20 + 0x14);" (assignment_expression "iVar6 = *(int *)(iVar20 + 0x14)" identifier = (pointer_expression "*(int *)(iVar20 + 0x14)" * (cast_expression "(int *)(iVar20 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x14)" ( (binary_expression "iVar20 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = *(int *)(iVar20 + 0x20);" (assignment_expression "iVar7 = *(int *)(iVar20 + 0x20)" identifier = (pointer_expression "*(int *)(iVar20 + 0x20)" * (cast_expression "(int *)(iVar20 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x20)" ( (binary_expression "iVar20 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = *(int *)(iVar20 + 0x34);" (assignment_expression "iVar8 = *(int *)(iVar20 + 0x34)" identifier = (pointer_expression "*(int *)(iVar20 + 0x34)" * (cast_expression "(int *)(iVar20 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x34)" ( (binary_expression "iVar20 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "uVar22 = param_2[9];" (assignment_expression "uVar22 = param_2[9]" identifier = (subscript_expression "param_2[9]" identifier [ number_literal ])) ;) (do_statement "do {\n        bVar12 = *(byte *)((int)param_5 + 1);\n        bVar23 = *(byte *)((int)param_5 + 2);\n        *(double *)(param_6 + iVar24 * 8) = (double)((float)*(byte *)param_5 * fVar9);\n        *(double *)(param_6 + iVar6 * 8) = (double)((float)bVar12 * fVar9);\n        *(double *)(param_6 + iVar7 * 8) = (double)((float)bVar23 * fVar9);\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9);\n        }\n        param_5 = (float *)((int)param_5 + uVar22 + 4);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);" do (compound_statement "{\n        bVar12 = *(byte *)((int)param_5 + 1);\n        bVar23 = *(byte *)((int)param_5 + 2);\n        *(double *)(param_6 + iVar24 * 8) = (double)((float)*(byte *)param_5 * fVar9);\n        *(double *)(param_6 + iVar6 * 8) = (double)((float)bVar12 * fVar9);\n        *(double *)(param_6 + iVar7 * 8) = (double)((float)bVar23 * fVar9);\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9);\n        }\n        param_5 = (float *)((int)param_5 + uVar22 + 4);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      }" { (expression_statement "bVar12 = *(byte *)((int)param_5 + 1);" (assignment_expression "bVar12 = *(byte *)((int)param_5 + 1)" identifier = (pointer_expression "*(byte *)((int)param_5 + 1)" * (cast_expression "(byte *)((int)param_5 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 1)" ( (binary_expression "(int)param_5 + 1" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "bVar23 = *(byte *)((int)param_5 + 2);" (assignment_expression "bVar23 = *(byte *)((int)param_5 + 2)" identifier = (pointer_expression "*(byte *)((int)param_5 + 2)" * (cast_expression "(byte *)((int)param_5 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 2)" ( (binary_expression "(int)param_5 + 2" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(double *)(param_6 + iVar24 * 8) = (double)((float)*(byte *)param_5 * fVar9);" (assignment_expression "*(double *)(param_6 + iVar24 * 8) = (double)((float)*(byte *)param_5 * fVar9)" (pointer_expression "*(double *)(param_6 + iVar24 * 8)" * (cast_expression "(double *)(param_6 + iVar24 * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + iVar24 * 8)" ( (binary_expression "param_6 + iVar24 * 8" identifier + (binary_expression "iVar24 * 8" identifier * number_literal)) )))) = (cast_expression "(double)((float)*(byte *)param_5 * fVar9)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((float)*(byte *)param_5 * fVar9)" ( (binary_expression "(float)*(byte *)param_5 * fVar9" (cast_expression "(float)*(byte *)param_5" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(byte *)param_5" * (cast_expression "(byte *)param_5" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) * identifier) )))) ;) (expression_statement "*(double *)(param_6 + iVar6 * 8) = (double)((float)bVar12 * fVar9);" (assignment_expression "*(double *)(param_6 + iVar6 * 8) = (double)((float)bVar12 * fVar9)" (pointer_expression "*(double *)(param_6 + iVar6 * 8)" * (cast_expression "(double *)(param_6 + iVar6 * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + iVar6 * 8)" ( (binary_expression "param_6 + iVar6 * 8" identifier + (binary_expression "iVar6 * 8" identifier * number_literal)) )))) = (cast_expression "(double)((float)bVar12 * fVar9)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((float)bVar12 * fVar9)" ( (binary_expression "(float)bVar12 * fVar9" (cast_expression "(float)bVar12" ( (type_descriptor "float" primitive_type) ) identifier) * identifier) )))) ;) (expression_statement "*(double *)(param_6 + iVar7 * 8) = (double)((float)bVar23 * fVar9);" (assignment_expression "*(double *)(param_6 + iVar7 * 8) = (double)((float)bVar23 * fVar9)" (pointer_expression "*(double *)(param_6 + iVar7 * 8)" * (cast_expression "(double *)(param_6 + iVar7 * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + iVar7 * 8)" ( (binary_expression "param_6 + iVar7 * 8" identifier + (binary_expression "iVar7 * 8" identifier * number_literal)) )))) = (cast_expression "(double)((float)bVar23 * fVar9)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((float)bVar23 * fVar9)" ( (binary_expression "(float)bVar23 * fVar9" (cast_expression "(float)bVar23" ( (type_descriptor "float" primitive_type) ) identifier) * identifier) )))) ;) (if_statement "if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9);\n        }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9);\n        }" { (expression_statement "*(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9);" (assignment_expression "*(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9)" (pointer_expression "*(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8)" * (cast_expression "(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(iVar20 + 0x38) * 8)" ( (binary_expression "param_6 + *(int *)(iVar20 + 0x38) * 8" identifier + (binary_expression "*(int *)(iVar20 + 0x38) * 8" (pointer_expression "*(int *)(iVar20 + 0x38)" * (cast_expression "(int *)(iVar20 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x38)" ( (binary_expression "iVar20 + 0x38" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9)" ( (binary_expression "DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9" identifier - (binary_expression "(float)*(byte *)((int)param_5 + 3) * fVar9" (cast_expression "(float)*(byte *)((int)param_5 + 3)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(byte *)((int)param_5 + 3)" * (cast_expression "(byte *)((int)param_5 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 3)" ( (binary_expression "(int)param_5 + 3" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) * identifier)) )))) ;) })) (expression_statement "param_5 = (float *)((int)param_5 + uVar22 + 4);" (assignment_expression "param_5 = (float *)((int)param_5 + uVar22 + 4)" identifier = (cast_expression "(float *)((int)param_5 + uVar22 + 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + uVar22 + 4)" ( (binary_expression "(int)param_5 + uVar22 + 4" (binary_expression "(int)param_5 + uVar22" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ;) (expression_statement "iVar32 = iVar32 + 1;" (assignment_expression "iVar32 = iVar32 + 1" identifier = (binary_expression "iVar32 + 1" identifier + number_literal)) ;) (expression_statement "param_6 = param_6 + iVar33 * 8;" (assignment_expression "param_6 = param_6 + iVar33 * 8" identifier = (binary_expression "param_6 + iVar33 * 8" identifier + (binary_expression "iVar33 * 8" identifier * number_literal))) ;) }) while (parenthesized_expression "(iVar32 != param_3)" ( (binary_expression "iVar32 != param_3" identifier != identifier) )) ;) })) (break_statement "break;" break ;)) (case_statement "default:\n    local_6c = 0;\n    bStack_6b = 0;\n    uStack_6a = 0;\n    local_68 = 0;\n    if (uVar22 != 0) goto LAB_00161285;\n    goto LAB_001612bc;" default : (expression_statement "local_6c = 0;" (assignment_expression "local_6c = 0" identifier = number_literal) ;) (expression_statement "bStack_6b = 0;" (assignment_expression "bStack_6b = 0" identifier = number_literal) ;) (expression_statement "uStack_6a = 0;" (assignment_expression "uStack_6a = 0" identifier = number_literal) ;) (expression_statement "local_68 = 0;" (assignment_expression "local_68 = 0" identifier = number_literal) ;) (if_statement "if (uVar22 != 0) goto LAB_00161285;" if (parenthesized_expression "(uVar22 != 0)" ( (binary_expression "uVar22 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00161285;" goto statement_identifier ;)) (goto_statement "goto LAB_001612bc;" goto statement_identifier ;)) (case_statement "case 10:\n    if (param_2[0xb] == 0) {\n      if (0 < param_3) {\n        fVar27 = 0.0;\n        local_6c = 0;\n        bStack_6b = 0;\n        uStack_6a = 0;\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        uVar22 = param_2[9];\n        iVar33 = *(int *)(param_1 + 0x298);\n        uVar26 = 0;\n        do {\n          iVar24 = 0;\n          uVar29 = uVar26;\ncode_r0x001620a2:\n          if (uVar29 % 3 == 1) {\n            uVar26 = (uint)fVar27 >> 6 & 0xffc0;\ncode_r0x001620cb:\n            dVar16 = (double)uVar26;\n            if (iVar24 != 2) goto code_r0x001620d7;\ncode_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;\ncode_r0x001620f8:\n            uVar29 = uVar29 + 1;\n            iVar24 = iVar24 + 1;\n            goto code_r0x001620a2;\n          }\n          if (uVar29 % 3 == 2) {\n            uVar26 = ((uint)fVar27 & 0xffc) << 4;\n            goto code_r0x001620cb;\n          }\n          pfVar1 = local_80 + 1;\n          fVar27 = *local_80;\n          if (param_2[0x10] != 1) {\n            fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          }\n          dVar16 = (double)(((uint)fVar27 >> 0x16) << 6);\n          local_80 = pfVar1;\n          if (iVar24 == 2) goto code_r0x00162130;\ncode_r0x001620d7:\n          uVar26 = uVar29 + 1;\n          if (iVar24 != 3) {\n            if (iVar24 == 1) {\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }\n            else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }\n            goto code_r0x001620f8;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;\n          }\ncode_r0x0016217a:\n          iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar24;\n          bStack_6b = (byte)((uint)iVar24 >> 8);\n          uStack_6a = (ushort)((uint)iVar24 >> 0x10);\n          local_80 = (float *)((int)local_80 + uVar22);\n          local_78 = local_78 + iVar33 * 8;\n        } while (iVar24 != param_3);\n      }\n    }\n    else if (0 < param_3) {\n      iVar33 = *(int *)(param_1 + 0x2a8);\n      iVar20 = 0;\n      iVar24 = *(int *)(iVar33 + 8);\n      iVar6 = *(int *)(param_1 + 0x298);\n      iVar7 = *(int *)(iVar33 + 0x34);\n      iVar8 = *(int *)(iVar33 + 0x20);\n      iVar32 = *(int *)(iVar33 + 0x14);\n      do {\n        uVar29 = 0;\n        uVar26 = 10;\n        uVar22 = param_2[0x14];\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar26 <= uVar22) {\n            uVar18 = uVar26;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar24 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar32 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        uVar26 = 0;\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar8 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar29 <= uVar22) {\n            uVar18 = uVar29;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar29 = uVar29 - uVar18;\n          uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar29);\n        param_2[0x14] = uVar22;\n        if (iVar7 != 0) {\n          *(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));\n        }\n        iVar20 = iVar20 + 1;\n        local_78 = local_78 + iVar6 * 8;\n      } while (iVar20 != param_3);\n    }\n    break;" case number_literal : (if_statement "if (param_2[0xb] == 0) {\n      if (0 < param_3) {\n        fVar27 = 0.0;\n        local_6c = 0;\n        bStack_6b = 0;\n        uStack_6a = 0;\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        uVar22 = param_2[9];\n        iVar33 = *(int *)(param_1 + 0x298);\n        uVar26 = 0;\n        do {\n          iVar24 = 0;\n          uVar29 = uVar26;\ncode_r0x001620a2:\n          if (uVar29 % 3 == 1) {\n            uVar26 = (uint)fVar27 >> 6 & 0xffc0;\ncode_r0x001620cb:\n            dVar16 = (double)uVar26;\n            if (iVar24 != 2) goto code_r0x001620d7;\ncode_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;\ncode_r0x001620f8:\n            uVar29 = uVar29 + 1;\n            iVar24 = iVar24 + 1;\n            goto code_r0x001620a2;\n          }\n          if (uVar29 % 3 == 2) {\n            uVar26 = ((uint)fVar27 & 0xffc) << 4;\n            goto code_r0x001620cb;\n          }\n          pfVar1 = local_80 + 1;\n          fVar27 = *local_80;\n          if (param_2[0x10] != 1) {\n            fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          }\n          dVar16 = (double)(((uint)fVar27 >> 0x16) << 6);\n          local_80 = pfVar1;\n          if (iVar24 == 2) goto code_r0x00162130;\ncode_r0x001620d7:\n          uVar26 = uVar29 + 1;\n          if (iVar24 != 3) {\n            if (iVar24 == 1) {\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }\n            else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }\n            goto code_r0x001620f8;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;\n          }\ncode_r0x0016217a:\n          iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar24;\n          bStack_6b = (byte)((uint)iVar24 >> 8);\n          uStack_6a = (ushort)((uint)iVar24 >> 0x10);\n          local_80 = (float *)((int)local_80 + uVar22);\n          local_78 = local_78 + iVar33 * 8;\n        } while (iVar24 != param_3);\n      }\n    }\n    else if (0 < param_3) {\n      iVar33 = *(int *)(param_1 + 0x2a8);\n      iVar20 = 0;\n      iVar24 = *(int *)(iVar33 + 8);\n      iVar6 = *(int *)(param_1 + 0x298);\n      iVar7 = *(int *)(iVar33 + 0x34);\n      iVar8 = *(int *)(iVar33 + 0x20);\n      iVar32 = *(int *)(iVar33 + 0x14);\n      do {\n        uVar29 = 0;\n        uVar26 = 10;\n        uVar22 = param_2[0x14];\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar26 <= uVar22) {\n            uVar18 = uVar26;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar24 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar32 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        uVar26 = 0;\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar8 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar29 <= uVar22) {\n            uVar18 = uVar29;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar29 = uVar29 - uVar18;\n          uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar29);\n        param_2[0x14] = uVar22;\n        if (iVar7 != 0) {\n          *(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));\n        }\n        iVar20 = iVar20 + 1;\n        local_78 = local_78 + iVar6 * 8;\n      } while (iVar20 != param_3);\n    }" if (parenthesized_expression "(param_2[0xb] == 0)" ( (binary_expression "param_2[0xb] == 0" (subscript_expression "param_2[0xb]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      if (0 < param_3) {\n        fVar27 = 0.0;\n        local_6c = 0;\n        bStack_6b = 0;\n        uStack_6a = 0;\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        uVar22 = param_2[9];\n        iVar33 = *(int *)(param_1 + 0x298);\n        uVar26 = 0;\n        do {\n          iVar24 = 0;\n          uVar29 = uVar26;\ncode_r0x001620a2:\n          if (uVar29 % 3 == 1) {\n            uVar26 = (uint)fVar27 >> 6 & 0xffc0;\ncode_r0x001620cb:\n            dVar16 = (double)uVar26;\n            if (iVar24 != 2) goto code_r0x001620d7;\ncode_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;\ncode_r0x001620f8:\n            uVar29 = uVar29 + 1;\n            iVar24 = iVar24 + 1;\n            goto code_r0x001620a2;\n          }\n          if (uVar29 % 3 == 2) {\n            uVar26 = ((uint)fVar27 & 0xffc) << 4;\n            goto code_r0x001620cb;\n          }\n          pfVar1 = local_80 + 1;\n          fVar27 = *local_80;\n          if (param_2[0x10] != 1) {\n            fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          }\n          dVar16 = (double)(((uint)fVar27 >> 0x16) << 6);\n          local_80 = pfVar1;\n          if (iVar24 == 2) goto code_r0x00162130;\ncode_r0x001620d7:\n          uVar26 = uVar29 + 1;\n          if (iVar24 != 3) {\n            if (iVar24 == 1) {\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }\n            else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }\n            goto code_r0x001620f8;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;\n          }\ncode_r0x0016217a:\n          iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar24;\n          bStack_6b = (byte)((uint)iVar24 >> 8);\n          uStack_6a = (ushort)((uint)iVar24 >> 0x10);\n          local_80 = (float *)((int)local_80 + uVar22);\n          local_78 = local_78 + iVar33 * 8;\n        } while (iVar24 != param_3);\n      }\n    }" { (if_statement "if (0 < param_3) {\n        fVar27 = 0.0;\n        local_6c = 0;\n        bStack_6b = 0;\n        uStack_6a = 0;\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        uVar22 = param_2[9];\n        iVar33 = *(int *)(param_1 + 0x298);\n        uVar26 = 0;\n        do {\n          iVar24 = 0;\n          uVar29 = uVar26;\ncode_r0x001620a2:\n          if (uVar29 % 3 == 1) {\n            uVar26 = (uint)fVar27 >> 6 & 0xffc0;\ncode_r0x001620cb:\n            dVar16 = (double)uVar26;\n            if (iVar24 != 2) goto code_r0x001620d7;\ncode_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;\ncode_r0x001620f8:\n            uVar29 = uVar29 + 1;\n            iVar24 = iVar24 + 1;\n            goto code_r0x001620a2;\n          }\n          if (uVar29 % 3 == 2) {\n            uVar26 = ((uint)fVar27 & 0xffc) << 4;\n            goto code_r0x001620cb;\n          }\n          pfVar1 = local_80 + 1;\n          fVar27 = *local_80;\n          if (param_2[0x10] != 1) {\n            fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          }\n          dVar16 = (double)(((uint)fVar27 >> 0x16) << 6);\n          local_80 = pfVar1;\n          if (iVar24 == 2) goto code_r0x00162130;\ncode_r0x001620d7:\n          uVar26 = uVar29 + 1;\n          if (iVar24 != 3) {\n            if (iVar24 == 1) {\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }\n            else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }\n            goto code_r0x001620f8;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;\n          }\ncode_r0x0016217a:\n          iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar24;\n          bStack_6b = (byte)((uint)iVar24 >> 8);\n          uStack_6a = (ushort)((uint)iVar24 >> 0x10);\n          local_80 = (float *)((int)local_80 + uVar22);\n          local_78 = local_78 + iVar33 * 8;\n        } while (iVar24 != param_3);\n      }" if (parenthesized_expression "(0 < param_3)" ( (binary_expression "0 < param_3" number_literal < identifier) )) (compound_statement "{\n        fVar27 = 0.0;\n        local_6c = 0;\n        bStack_6b = 0;\n        uStack_6a = 0;\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        uVar22 = param_2[9];\n        iVar33 = *(int *)(param_1 + 0x298);\n        uVar26 = 0;\n        do {\n          iVar24 = 0;\n          uVar29 = uVar26;\ncode_r0x001620a2:\n          if (uVar29 % 3 == 1) {\n            uVar26 = (uint)fVar27 >> 6 & 0xffc0;\ncode_r0x001620cb:\n            dVar16 = (double)uVar26;\n            if (iVar24 != 2) goto code_r0x001620d7;\ncode_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;\ncode_r0x001620f8:\n            uVar29 = uVar29 + 1;\n            iVar24 = iVar24 + 1;\n            goto code_r0x001620a2;\n          }\n          if (uVar29 % 3 == 2) {\n            uVar26 = ((uint)fVar27 & 0xffc) << 4;\n            goto code_r0x001620cb;\n          }\n          pfVar1 = local_80 + 1;\n          fVar27 = *local_80;\n          if (param_2[0x10] != 1) {\n            fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          }\n          dVar16 = (double)(((uint)fVar27 >> 0x16) << 6);\n          local_80 = pfVar1;\n          if (iVar24 == 2) goto code_r0x00162130;\ncode_r0x001620d7:\n          uVar26 = uVar29 + 1;\n          if (iVar24 != 3) {\n            if (iVar24 == 1) {\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }\n            else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }\n            goto code_r0x001620f8;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;\n          }\ncode_r0x0016217a:\n          iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar24;\n          bStack_6b = (byte)((uint)iVar24 >> 8);\n          uStack_6a = (ushort)((uint)iVar24 >> 0x10);\n          local_80 = (float *)((int)local_80 + uVar22);\n          local_78 = local_78 + iVar33 * 8;\n        } while (iVar24 != param_3);\n      }" { (expression_statement "fVar27 = 0.0;" (assignment_expression "fVar27 = 0.0" identifier = number_literal) ;) (expression_statement "local_6c = 0;" (assignment_expression "local_6c = 0" identifier = number_literal) ;) (expression_statement "bStack_6b = 0;" (assignment_expression "bStack_6b = 0" identifier = number_literal) ;) (expression_statement "uStack_6a = 0;" (assignment_expression "uStack_6a = 0" identifier = number_literal) ;) (expression_statement "iVar20 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar20 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) (expression_statement "uVar22 = param_2[9];" (assignment_expression "uVar22 = param_2[9]" identifier = (subscript_expression "param_2[9]" identifier [ number_literal ])) ;) (expression_statement "iVar33 = *(int *)(param_1 + 0x298);" (assignment_expression "iVar33 = *(int *)(param_1 + 0x298)" identifier = (pointer_expression "*(int *)(param_1 + 0x298)" * (cast_expression "(int *)(param_1 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) ))))) ;) (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" identifier = number_literal) ;) (do_statement "do {\n          iVar24 = 0;\n          uVar29 = uVar26;\ncode_r0x001620a2:\n          if (uVar29 % 3 == 1) {\n            uVar26 = (uint)fVar27 >> 6 & 0xffc0;\ncode_r0x001620cb:\n            dVar16 = (double)uVar26;\n            if (iVar24 != 2) goto code_r0x001620d7;\ncode_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;\ncode_r0x001620f8:\n            uVar29 = uVar29 + 1;\n            iVar24 = iVar24 + 1;\n            goto code_r0x001620a2;\n          }\n          if (uVar29 % 3 == 2) {\n            uVar26 = ((uint)fVar27 & 0xffc) << 4;\n            goto code_r0x001620cb;\n          }\n          pfVar1 = local_80 + 1;\n          fVar27 = *local_80;\n          if (param_2[0x10] != 1) {\n            fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          }\n          dVar16 = (double)(((uint)fVar27 >> 0x16) << 6);\n          local_80 = pfVar1;\n          if (iVar24 == 2) goto code_r0x00162130;\ncode_r0x001620d7:\n          uVar26 = uVar29 + 1;\n          if (iVar24 != 3) {\n            if (iVar24 == 1) {\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }\n            else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }\n            goto code_r0x001620f8;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;\n          }\ncode_r0x0016217a:\n          iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar24;\n          bStack_6b = (byte)((uint)iVar24 >> 8);\n          uStack_6a = (ushort)((uint)iVar24 >> 0x10);\n          local_80 = (float *)((int)local_80 + uVar22);\n          local_78 = local_78 + iVar33 * 8;\n        } while (iVar24 != param_3);" do (compound_statement "{\n          iVar24 = 0;\n          uVar29 = uVar26;\ncode_r0x001620a2:\n          if (uVar29 % 3 == 1) {\n            uVar26 = (uint)fVar27 >> 6 & 0xffc0;\ncode_r0x001620cb:\n            dVar16 = (double)uVar26;\n            if (iVar24 != 2) goto code_r0x001620d7;\ncode_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;\ncode_r0x001620f8:\n            uVar29 = uVar29 + 1;\n            iVar24 = iVar24 + 1;\n            goto code_r0x001620a2;\n          }\n          if (uVar29 % 3 == 2) {\n            uVar26 = ((uint)fVar27 & 0xffc) << 4;\n            goto code_r0x001620cb;\n          }\n          pfVar1 = local_80 + 1;\n          fVar27 = *local_80;\n          if (param_2[0x10] != 1) {\n            fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          }\n          dVar16 = (double)(((uint)fVar27 >> 0x16) << 6);\n          local_80 = pfVar1;\n          if (iVar24 == 2) goto code_r0x00162130;\ncode_r0x001620d7:\n          uVar26 = uVar29 + 1;\n          if (iVar24 != 3) {\n            if (iVar24 == 1) {\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }\n            else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }\n            goto code_r0x001620f8;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;\n          }\ncode_r0x0016217a:\n          iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar24;\n          bStack_6b = (byte)((uint)iVar24 >> 8);\n          uStack_6a = (ushort)((uint)iVar24 >> 0x10);\n          local_80 = (float *)((int)local_80 + uVar22);\n          local_78 = local_78 + iVar33 * 8;\n        }" { (expression_statement "iVar24 = 0;" (assignment_expression "iVar24 = 0" identifier = number_literal) ;) (expression_statement "uVar29 = uVar26;" (assignment_expression "uVar29 = uVar26" identifier = identifier) ;) (labeled_statement "code_r0x001620a2:\n          if (uVar29 % 3 == 1) {\n            uVar26 = (uint)fVar27 >> 6 & 0xffc0;\ncode_r0x001620cb:\n            dVar16 = (double)uVar26;\n            if (iVar24 != 2) goto code_r0x001620d7;\ncode_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;\ncode_r0x001620f8:\n            uVar29 = uVar29 + 1;\n            iVar24 = iVar24 + 1;\n            goto code_r0x001620a2;\n          }" statement_identifier : (if_statement "if (uVar29 % 3 == 1) {\n            uVar26 = (uint)fVar27 >> 6 & 0xffc0;\ncode_r0x001620cb:\n            dVar16 = (double)uVar26;\n            if (iVar24 != 2) goto code_r0x001620d7;\ncode_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;\ncode_r0x001620f8:\n            uVar29 = uVar29 + 1;\n            iVar24 = iVar24 + 1;\n            goto code_r0x001620a2;\n          }" if (parenthesized_expression "(uVar29 % 3 == 1)" ( (binary_expression "uVar29 % 3 == 1" (binary_expression "uVar29 % 3" identifier % number_literal) == number_literal) )) (compound_statement "{\n            uVar26 = (uint)fVar27 >> 6 & 0xffc0;\ncode_r0x001620cb:\n            dVar16 = (double)uVar26;\n            if (iVar24 != 2) goto code_r0x001620d7;\ncode_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;\ncode_r0x001620f8:\n            uVar29 = uVar29 + 1;\n            iVar24 = iVar24 + 1;\n            goto code_r0x001620a2;\n          }" { (expression_statement "uVar26 = (uint)fVar27 >> 6 & 0xffc0;" (assignment_expression "uVar26 = (uint)fVar27 >> 6 & 0xffc0" identifier = (binary_expression "(uint)fVar27 >> 6 & 0xffc0" (binary_expression "(uint)fVar27 >> 6" (cast_expression "(uint)fVar27" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) & number_literal)) ;) (labeled_statement "code_r0x001620cb:\n            dVar16 = (double)uVar26;" statement_identifier : (expression_statement "dVar16 = (double)uVar26;" (assignment_expression "dVar16 = (double)uVar26" identifier = (cast_expression "(double)uVar26" ( (type_descriptor "double" primitive_type) ) identifier)) ;)) (if_statement "if (iVar24 != 2) goto code_r0x001620d7;" if (parenthesized_expression "(iVar24 != 2)" ( (binary_expression "iVar24 != 2" identifier != number_literal) )) (goto_statement "goto code_r0x001620d7;" goto statement_identifier ;)) (labeled_statement "code_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;" statement_identifier : (expression_statement "*(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;" (assignment_expression "*(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16" (pointer_expression "*(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8)" * (cast_expression "(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + *(int *)(iVar20 + 0x20) * 8)" ( (binary_expression "local_78 + *(int *)(iVar20 + 0x20) * 8" identifier + (binary_expression "*(int *)(iVar20 + 0x20) * 8" (pointer_expression "*(int *)(iVar20 + 0x20)" * (cast_expression "(int *)(iVar20 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x20)" ( (binary_expression "iVar20 + 0x20" identifier + number_literal) )))) * number_literal)) )))) = identifier) ;)) (labeled_statement "code_r0x001620f8:\n            uVar29 = uVar29 + 1;" statement_identifier : (expression_statement "uVar29 = uVar29 + 1;" (assignment_expression "uVar29 = uVar29 + 1" identifier = (binary_expression "uVar29 + 1" identifier + number_literal)) ;)) (expression_statement "iVar24 = iVar24 + 1;" (assignment_expression "iVar24 = iVar24 + 1" identifier = (binary_expression "iVar24 + 1" identifier + number_literal)) ;) (goto_statement "goto code_r0x001620a2;" goto statement_identifier ;) }))) (if_statement "if (uVar29 % 3 == 2) {\n            uVar26 = ((uint)fVar27 & 0xffc) << 4;\n            goto code_r0x001620cb;\n          }" if (parenthesized_expression "(uVar29 % 3 == 2)" ( (binary_expression "uVar29 % 3 == 2" (binary_expression "uVar29 % 3" identifier % number_literal) == number_literal) )) (compound_statement "{\n            uVar26 = ((uint)fVar27 & 0xffc) << 4;\n            goto code_r0x001620cb;\n          }" { (expression_statement "uVar26 = ((uint)fVar27 & 0xffc) << 4;" (assignment_expression "uVar26 = ((uint)fVar27 & 0xffc) << 4" identifier = (binary_expression "((uint)fVar27 & 0xffc) << 4" (parenthesized_expression "((uint)fVar27 & 0xffc)" ( (binary_expression "(uint)fVar27 & 0xffc" (cast_expression "(uint)fVar27" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) << number_literal)) ;) (goto_statement "goto code_r0x001620cb;" goto statement_identifier ;) })) (expression_statement "pfVar1 = local_80 + 1;" (assignment_expression "pfVar1 = local_80 + 1" identifier = (binary_expression "local_80 + 1" identifier + number_literal)) ;) (expression_statement "fVar27 = *local_80;" (assignment_expression "fVar27 = *local_80" identifier = (pointer_expression "*local_80" * identifier)) ;) (if_statement "if (param_2[0x10] != 1) {\n            fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          }" if (parenthesized_expression "(param_2[0x10] != 1)" ( (binary_expression "param_2[0x10] != 1" (subscript_expression "param_2[0x10]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n            fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          }" { (expression_statement "fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);" (assignment_expression "fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18)" identifier = (cast_expression "(float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18)" ( (binary_expression "(uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18" (binary_expression "(uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8" (binary_expression "(uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8" (binary_expression "(uint)fVar27 >> 0x18" (cast_expression "(uint)fVar27" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) | (binary_expression "((uint)fVar27 & 0xff0000) >> 8" (parenthesized_expression "((uint)fVar27 & 0xff0000)" ( (binary_expression "(uint)fVar27 & 0xff0000" (cast_expression "(uint)fVar27" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) >> number_literal)) | (binary_expression "((uint)fVar27 & 0xff00) << 8" (parenthesized_expression "((uint)fVar27 & 0xff00)" ( (binary_expression "(uint)fVar27 & 0xff00" (cast_expression "(uint)fVar27" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) << number_literal)) | (binary_expression "(int)fVar27 << 0x18" (cast_expression "(int)fVar27" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal)) )))) ;) })) (expression_statement "dVar16 = (double)(((uint)fVar27 >> 0x16) << 6);" (assignment_expression "dVar16 = (double)(((uint)fVar27 >> 0x16) << 6)" identifier = (cast_expression "(double)(((uint)fVar27 >> 0x16) << 6)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(((uint)fVar27 >> 0x16) << 6)" ( (binary_expression "((uint)fVar27 >> 0x16) << 6" (parenthesized_expression "((uint)fVar27 >> 0x16)" ( (binary_expression "(uint)fVar27 >> 0x16" (cast_expression "(uint)fVar27" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )) << number_literal) )))) ;) (expression_statement "local_80 = pfVar1;" (assignment_expression "local_80 = pfVar1" identifier = identifier) ;) (if_statement "if (iVar24 == 2) goto code_r0x00162130;" if (parenthesized_expression "(iVar24 == 2)" ( (binary_expression "iVar24 == 2" identifier == number_literal) )) (goto_statement "goto code_r0x00162130;" goto statement_identifier ;)) (labeled_statement "code_r0x001620d7:\n          uVar26 = uVar29 + 1;" statement_identifier : (expression_statement "uVar26 = uVar29 + 1;" (assignment_expression "uVar26 = uVar29 + 1" identifier = (binary_expression "uVar29 + 1" identifier + number_literal)) ;)) (if_statement "if (iVar24 != 3) {\n            if (iVar24 == 1) {\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }\n            else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }\n            goto code_r0x001620f8;\n          }" if (parenthesized_expression "(iVar24 != 3)" ( (binary_expression "iVar24 != 3" identifier != number_literal) )) (compound_statement "{\n            if (iVar24 == 1) {\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }\n            else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }\n            goto code_r0x001620f8;\n          }" { (if_statement "if (iVar24 == 1) {\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }\n            else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }" if (parenthesized_expression "(iVar24 == 1)" ( (binary_expression "iVar24 == 1" identifier == number_literal) )) (compound_statement "{\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }" { (expression_statement "*(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;" (assignment_expression "*(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16" (pointer_expression "*(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8)" * (cast_expression "(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + *(int *)(iVar20 + 0x14) * 8)" ( (binary_expression "local_78 + *(int *)(iVar20 + 0x14) * 8" identifier + (binary_expression "*(int *)(iVar20 + 0x14) * 8" (pointer_expression "*(int *)(iVar20 + 0x14)" * (cast_expression "(int *)(iVar20 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x14)" ( (binary_expression "iVar20 + 0x14" identifier + number_literal) )))) * number_literal)) )))) = identifier) ;) }) (else_clause "else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }" else (compound_statement "{\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }" { (expression_statement "*(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;" (assignment_expression "*(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16" (pointer_expression "*(double *)(local_78 + *(int *)(iVar20 + 8) * 8)" * (cast_expression "(double *)(local_78 + *(int *)(iVar20 + 8) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + *(int *)(iVar20 + 8) * 8)" ( (binary_expression "local_78 + *(int *)(iVar20 + 8) * 8" identifier + (binary_expression "*(int *)(iVar20 + 8) * 8" (pointer_expression "*(int *)(iVar20 + 8)" * (cast_expression "(int *)(iVar20 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 8)" ( (binary_expression "iVar20 + 8" identifier + number_literal) )))) * number_literal)) )))) = identifier) ;) (if_statement "if (iVar24 == 3) goto code_r0x0016217a;" if (parenthesized_expression "(iVar24 == 3)" ( (binary_expression "iVar24 == 3" identifier == number_literal) )) (goto_statement "goto code_r0x0016217a;" goto statement_identifier ;)) }))) (goto_statement "goto code_r0x001620f8;" goto statement_identifier ;) })) (if_statement "if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;\n          }" if (parenthesized_expression "(*(int *)(iVar20 + 0x34) != 0)" ( (binary_expression "*(int *)(iVar20 + 0x34) != 0" (pointer_expression "*(int *)(iVar20 + 0x34)" * (cast_expression "(int *)(iVar20 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x34)" ( (binary_expression "iVar20 + 0x34" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n            *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;\n          }" { (expression_statement "*(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;" (assignment_expression "*(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16" (pointer_expression "*(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8)" * (cast_expression "(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + *(int *)(iVar20 + 0x38) * 8)" ( (binary_expression "local_78 + *(int *)(iVar20 + 0x38) * 8" identifier + (binary_expression "*(int *)(iVar20 + 0x38) * 8" (pointer_expression "*(int *)(iVar20 + 0x38)" * (cast_expression "(int *)(iVar20 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x38)" ( (binary_expression "iVar20 + 0x38" identifier + number_literal) )))) * number_literal)) )))) = (binary_expression "(double)DAT_0029f710 - dVar16" (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier) - identifier)) ;) })) (labeled_statement "code_r0x0016217a:\n          iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;" statement_identifier : (expression_statement "iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;" (assignment_expression "iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1" identifier = (binary_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1" (call_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" identifier (argument_list "(uStack_6a,CONCAT11(bStack_6b,local_6c))" ( identifier , (call_expression "CONCAT11(bStack_6b,local_6c)" identifier (argument_list "(bStack_6b,local_6c)" ( identifier , identifier ))) ))) + number_literal)) ;)) (expression_statement "local_6c = (byte)iVar24;" (assignment_expression "local_6c = (byte)iVar24" identifier = (cast_expression "(byte)iVar24" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "bStack_6b = (byte)((uint)iVar24 >> 8);" (assignment_expression "bStack_6b = (byte)((uint)iVar24 >> 8)" identifier = (call_expression "(byte)((uint)iVar24 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)iVar24 >> 8)" ( (binary_expression "(uint)iVar24 >> 8" (cast_expression "(uint)iVar24" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uStack_6a = (ushort)((uint)iVar24 >> 0x10);" (assignment_expression "uStack_6a = (ushort)((uint)iVar24 >> 0x10)" identifier = (call_expression "(ushort)((uint)iVar24 >> 0x10)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "((uint)iVar24 >> 0x10)" ( (binary_expression "(uint)iVar24 >> 0x10" (cast_expression "(uint)iVar24" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_80 = (float *)((int)local_80 + uVar22);" (assignment_expression "local_80 = (float *)((int)local_80 + uVar22)" identifier = (cast_expression "(float *)((int)local_80 + uVar22)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + uVar22)" ( (binary_expression "(int)local_80 + uVar22" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "local_78 = local_78 + iVar33 * 8;" (assignment_expression "local_78 = local_78 + iVar33 * 8" identifier = (binary_expression "local_78 + iVar33 * 8" identifier + (binary_expression "iVar33 * 8" identifier * number_literal))) ;) }) while (parenthesized_expression "(iVar24 != param_3)" ( (binary_expression "iVar24 != param_3" identifier != identifier) )) ;) })) }) (else_clause "else if (0 < param_3) {\n      iVar33 = *(int *)(param_1 + 0x2a8);\n      iVar20 = 0;\n      iVar24 = *(int *)(iVar33 + 8);\n      iVar6 = *(int *)(param_1 + 0x298);\n      iVar7 = *(int *)(iVar33 + 0x34);\n      iVar8 = *(int *)(iVar33 + 0x20);\n      iVar32 = *(int *)(iVar33 + 0x14);\n      do {\n        uVar29 = 0;\n        uVar26 = 10;\n        uVar22 = param_2[0x14];\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar26 <= uVar22) {\n            uVar18 = uVar26;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar24 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar32 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        uVar26 = 0;\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar8 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar29 <= uVar22) {\n            uVar18 = uVar29;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar29 = uVar29 - uVar18;\n          uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar29);\n        param_2[0x14] = uVar22;\n        if (iVar7 != 0) {\n          *(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));\n        }\n        iVar20 = iVar20 + 1;\n        local_78 = local_78 + iVar6 * 8;\n      } while (iVar20 != param_3);\n    }" else (if_statement "if (0 < param_3) {\n      iVar33 = *(int *)(param_1 + 0x2a8);\n      iVar20 = 0;\n      iVar24 = *(int *)(iVar33 + 8);\n      iVar6 = *(int *)(param_1 + 0x298);\n      iVar7 = *(int *)(iVar33 + 0x34);\n      iVar8 = *(int *)(iVar33 + 0x20);\n      iVar32 = *(int *)(iVar33 + 0x14);\n      do {\n        uVar29 = 0;\n        uVar26 = 10;\n        uVar22 = param_2[0x14];\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar26 <= uVar22) {\n            uVar18 = uVar26;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar24 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar32 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        uVar26 = 0;\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar8 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar29 <= uVar22) {\n            uVar18 = uVar29;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar29 = uVar29 - uVar18;\n          uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar29);\n        param_2[0x14] = uVar22;\n        if (iVar7 != 0) {\n          *(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));\n        }\n        iVar20 = iVar20 + 1;\n        local_78 = local_78 + iVar6 * 8;\n      } while (iVar20 != param_3);\n    }" if (parenthesized_expression "(0 < param_3)" ( (binary_expression "0 < param_3" number_literal < identifier) )) (compound_statement "{\n      iVar33 = *(int *)(param_1 + 0x2a8);\n      iVar20 = 0;\n      iVar24 = *(int *)(iVar33 + 8);\n      iVar6 = *(int *)(param_1 + 0x298);\n      iVar7 = *(int *)(iVar33 + 0x34);\n      iVar8 = *(int *)(iVar33 + 0x20);\n      iVar32 = *(int *)(iVar33 + 0x14);\n      do {\n        uVar29 = 0;\n        uVar26 = 10;\n        uVar22 = param_2[0x14];\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar26 <= uVar22) {\n            uVar18 = uVar26;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar24 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar32 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        uVar26 = 0;\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar8 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar29 <= uVar22) {\n            uVar18 = uVar29;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar29 = uVar29 - uVar18;\n          uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar29);\n        param_2[0x14] = uVar22;\n        if (iVar7 != 0) {\n          *(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));\n        }\n        iVar20 = iVar20 + 1;\n        local_78 = local_78 + iVar6 * 8;\n      } while (iVar20 != param_3);\n    }" { (expression_statement "iVar33 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar33 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) (expression_statement "iVar20 = 0;" (assignment_expression "iVar20 = 0" identifier = number_literal) ;) (expression_statement "iVar24 = *(int *)(iVar33 + 8);" (assignment_expression "iVar24 = *(int *)(iVar33 + 8)" identifier = (pointer_expression "*(int *)(iVar33 + 8)" * (cast_expression "(int *)(iVar33 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 8)" ( (binary_expression "iVar33 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = *(int *)(param_1 + 0x298);" (assignment_expression "iVar6 = *(int *)(param_1 + 0x298)" identifier = (pointer_expression "*(int *)(param_1 + 0x298)" * (cast_expression "(int *)(param_1 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = *(int *)(iVar33 + 0x34);" (assignment_expression "iVar7 = *(int *)(iVar33 + 0x34)" identifier = (pointer_expression "*(int *)(iVar33 + 0x34)" * (cast_expression "(int *)(iVar33 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x34)" ( (binary_expression "iVar33 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = *(int *)(iVar33 + 0x20);" (assignment_expression "iVar8 = *(int *)(iVar33 + 0x20)" identifier = (pointer_expression "*(int *)(iVar33 + 0x20)" * (cast_expression "(int *)(iVar33 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x20)" ( (binary_expression "iVar33 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "iVar32 = *(int *)(iVar33 + 0x14);" (assignment_expression "iVar32 = *(int *)(iVar33 + 0x14)" identifier = (pointer_expression "*(int *)(iVar33 + 0x14)" * (cast_expression "(int *)(iVar33 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x14)" ( (binary_expression "iVar33 + 0x14" identifier + number_literal) ))))) ;) (do_statement "do {\n        uVar29 = 0;\n        uVar26 = 10;\n        uVar22 = param_2[0x14];\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar26 <= uVar22) {\n            uVar18 = uVar26;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar24 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar32 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        uVar26 = 0;\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar8 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar29 <= uVar22) {\n            uVar18 = uVar29;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar29 = uVar29 - uVar18;\n          uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar29);\n        param_2[0x14] = uVar22;\n        if (iVar7 != 0) {\n          *(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));\n        }\n        iVar20 = iVar20 + 1;\n        local_78 = local_78 + iVar6 * 8;\n      } while (iVar20 != param_3);" do (compound_statement "{\n        uVar29 = 0;\n        uVar26 = 10;\n        uVar22 = param_2[0x14];\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar26 <= uVar22) {\n            uVar18 = uVar26;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar24 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar32 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        uVar26 = 0;\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar8 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar29 <= uVar22) {\n            uVar18 = uVar29;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar29 = uVar29 - uVar18;\n          uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar29);\n        param_2[0x14] = uVar22;\n        if (iVar7 != 0) {\n          *(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));\n        }\n        iVar20 = iVar20 + 1;\n        local_78 = local_78 + iVar6 * 8;\n      }" { (expression_statement "uVar29 = 0;" (assignment_expression "uVar29 = 0" identifier = number_literal) ;) (expression_statement "uVar26 = 10;" (assignment_expression "uVar26 = 10" identifier = number_literal) ;) (expression_statement "uVar22 = param_2[0x14];" (assignment_expression "uVar22 = param_2[0x14]" identifier = (subscript_expression "param_2[0x14]" identifier [ number_literal ])) ;) (do_statement "do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar26 <= uVar22) {\n            uVar18 = uVar26;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);" do (compound_statement "{\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar26 <= uVar22) {\n            uVar18 = uVar26;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        }" { (if_statement "if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }" if (parenthesized_expression "(uVar22 == 0)" ( (binary_expression "uVar22 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }" { (expression_statement "uVar19 = (uint)*(byte *)local_80;" (assignment_expression "uVar19 = (uint)*(byte *)local_80" identifier = (binary_expression "(uint)*(byte *)local_80" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)local_80" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_80 = (float *)((int)local_80 + 1);" (assignment_expression "local_80 = (float *)((int)local_80 + 1)" identifier = (cast_expression "(float *)((int)local_80 + 1)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + 1)" ( (binary_expression "(int)local_80 + 1" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar22 = 8;" (assignment_expression "uVar22 = 8" identifier = number_literal) ;) (expression_statement "param_2[0x13] = uVar19;" (assignment_expression "param_2[0x13] = uVar19" (subscript_expression "param_2[0x13]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            uVar19 = param_2[0x13];\n          }" else (compound_statement "{\n            uVar19 = param_2[0x13];\n          }" { (expression_statement "uVar19 = param_2[0x13];" (assignment_expression "uVar19 = param_2[0x13]" identifier = (subscript_expression "param_2[0x13]" identifier [ number_literal ])) ;) }))) (expression_statement "uVar18 = uVar22;" (assignment_expression "uVar18 = uVar22" identifier = identifier) ;) (if_statement "if (uVar26 <= uVar22) {\n            uVar18 = uVar26;\n          }" if (parenthesized_expression "(uVar26 <= uVar22)" ( (binary_expression "uVar26 <= uVar22" identifier <= identifier) )) (compound_statement "{\n            uVar18 = uVar26;\n          }" { (expression_statement "uVar18 = uVar26;" (assignment_expression "uVar18 = uVar26" identifier = identifier) ;) })) (expression_statement "uVar22 = uVar22 - uVar18;" (assignment_expression "uVar22 = uVar22 - uVar18" identifier = (binary_expression "uVar22 - uVar18" identifier - identifier)) ;) (expression_statement "uVar26 = uVar26 - uVar18;" (assignment_expression "uVar26 = uVar26 - uVar18" identifier = (binary_expression "uVar26 - uVar18" identifier - identifier)) ;) (expression_statement "uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);" (assignment_expression "uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f)" identifier = (binary_expression "uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f)" (binary_expression "uVar29 << ((byte)uVar18 & 0x1f)" identifier << (parenthesized_expression "((byte)uVar18 & 0x1f)" ( (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) | (binary_expression "~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f)" (unary_expression "~(-1 << ((byte)uVar18 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar18 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar18 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar18 & 0x1f)" ( (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & (binary_expression "uVar19 >> ((byte)uVar22 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar22 & 0x1f)" ( (binary_expression "(byte)uVar22 & 0x1f" (cast_expression "(byte)uVar22" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))))) ;) }) while (parenthesized_expression "(0 < (int)uVar26)" ( (binary_expression "0 < (int)uVar26" number_literal < (cast_expression "(int)uVar26" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "param_2[0x14] = uVar22;" (assignment_expression "param_2[0x14] = uVar22" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(double *)(local_78 + iVar24 * 8) = (double)((uVar29 & 0x3ff) << 6);" (assignment_expression "*(double *)(local_78 + iVar24 * 8) = (double)((uVar29 & 0x3ff) << 6)" (pointer_expression "*(double *)(local_78 + iVar24 * 8)" * (cast_expression "(double *)(local_78 + iVar24 * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + iVar24 * 8)" ( (binary_expression "local_78 + iVar24 * 8" identifier + (binary_expression "iVar24 * 8" identifier * number_literal)) )))) = (cast_expression "(double)((uVar29 & 0x3ff) << 6)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((uVar29 & 0x3ff) << 6)" ( (binary_expression "(uVar29 & 0x3ff) << 6" (parenthesized_expression "(uVar29 & 0x3ff)" ( (binary_expression "uVar29 & 0x3ff" identifier & number_literal) )) << number_literal) )))) ;) (expression_statement "uVar29 = 0;" (assignment_expression "uVar29 = 0" identifier = number_literal) ;) (expression_statement "uVar26 = 10;" (assignment_expression "uVar26 = 10" identifier = number_literal) ;) (do_statement "do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);" do (compound_statement "{\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        }" { (if_statement "if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }" if (parenthesized_expression "(uVar22 == 0)" ( (binary_expression "uVar22 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }" { (expression_statement "uVar19 = (uint)*(byte *)local_80;" (assignment_expression "uVar19 = (uint)*(byte *)local_80" identifier = (binary_expression "(uint)*(byte *)local_80" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)local_80" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_80 = (float *)((int)local_80 + 1);" (assignment_expression "local_80 = (float *)((int)local_80 + 1)" identifier = (cast_expression "(float *)((int)local_80 + 1)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + 1)" ( (binary_expression "(int)local_80 + 1" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar22 = 8;" (assignment_expression "uVar22 = 8" identifier = number_literal) ;) (expression_statement "param_2[0x13] = uVar19;" (assignment_expression "param_2[0x13] = uVar19" (subscript_expression "param_2[0x13]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            uVar19 = param_2[0x13];\n          }" else (compound_statement "{\n            uVar19 = param_2[0x13];\n          }" { (expression_statement "uVar19 = param_2[0x13];" (assignment_expression "uVar19 = param_2[0x13]" identifier = (subscript_expression "param_2[0x13]" identifier [ number_literal ])) ;) }))) (expression_statement "uVar18 = uVar26;" (assignment_expression "uVar18 = uVar26" identifier = identifier) ;) (if_statement "if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }" if (parenthesized_expression "(uVar22 <= uVar26)" ( (binary_expression "uVar22 <= uVar26" identifier <= identifier) )) (compound_statement "{\n            uVar18 = uVar22;\n          }" { (expression_statement "uVar18 = uVar22;" (assignment_expression "uVar18 = uVar22" identifier = identifier) ;) })) (expression_statement "uVar22 = uVar22 - uVar18;" (assignment_expression "uVar22 = uVar22 - uVar18" identifier = (binary_expression "uVar22 - uVar18" identifier - identifier)) ;) (expression_statement "uVar26 = uVar26 - uVar18;" (assignment_expression "uVar26 = uVar26 - uVar18" identifier = (binary_expression "uVar26 - uVar18" identifier - identifier)) ;) (expression_statement "uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);" (assignment_expression "uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f)" identifier = (binary_expression "uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f)" (binary_expression "uVar29 << ((byte)uVar18 & 0x1f)" identifier << (parenthesized_expression "((byte)uVar18 & 0x1f)" ( (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) | (binary_expression "~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f)" (unary_expression "~(-1 << ((byte)uVar18 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar18 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar18 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar18 & 0x1f)" ( (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & (binary_expression "uVar19 >> ((byte)uVar22 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar22 & 0x1f)" ( (binary_expression "(byte)uVar22 & 0x1f" (cast_expression "(byte)uVar22" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))))) ;) }) while (parenthesized_expression "(0 < (int)uVar26)" ( (binary_expression "0 < (int)uVar26" number_literal < (cast_expression "(int)uVar26" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "param_2[0x14] = uVar22;" (assignment_expression "param_2[0x14] = uVar22" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(double *)(local_78 + iVar32 * 8) = (double)((uVar29 & 0x3ff) << 6);" (assignment_expression "*(double *)(local_78 + iVar32 * 8) = (double)((uVar29 & 0x3ff) << 6)" (pointer_expression "*(double *)(local_78 + iVar32 * 8)" * (cast_expression "(double *)(local_78 + iVar32 * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + iVar32 * 8)" ( (binary_expression "local_78 + iVar32 * 8" identifier + (binary_expression "iVar32 * 8" identifier * number_literal)) )))) = (cast_expression "(double)((uVar29 & 0x3ff) << 6)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((uVar29 & 0x3ff) << 6)" ( (binary_expression "(uVar29 & 0x3ff) << 6" (parenthesized_expression "(uVar29 & 0x3ff)" ( (binary_expression "uVar29 & 0x3ff" identifier & number_literal) )) << number_literal) )))) ;) (expression_statement "uVar29 = 0;" (assignment_expression "uVar29 = 0" identifier = number_literal) ;) (expression_statement "uVar26 = 10;" (assignment_expression "uVar26 = 10" identifier = number_literal) ;) (do_statement "do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);" do (compound_statement "{\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        }" { (if_statement "if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }" if (parenthesized_expression "(uVar22 == 0)" ( (binary_expression "uVar22 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }" { (expression_statement "uVar19 = (uint)*(byte *)local_80;" (assignment_expression "uVar19 = (uint)*(byte *)local_80" identifier = (binary_expression "(uint)*(byte *)local_80" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)local_80" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_80 = (float *)((int)local_80 + 1);" (assignment_expression "local_80 = (float *)((int)local_80 + 1)" identifier = (cast_expression "(float *)((int)local_80 + 1)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + 1)" ( (binary_expression "(int)local_80 + 1" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar22 = 8;" (assignment_expression "uVar22 = 8" identifier = number_literal) ;) (expression_statement "param_2[0x13] = uVar19;" (assignment_expression "param_2[0x13] = uVar19" (subscript_expression "param_2[0x13]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            uVar19 = param_2[0x13];\n          }" else (compound_statement "{\n            uVar19 = param_2[0x13];\n          }" { (expression_statement "uVar19 = param_2[0x13];" (assignment_expression "uVar19 = param_2[0x13]" identifier = (subscript_expression "param_2[0x13]" identifier [ number_literal ])) ;) }))) (expression_statement "uVar18 = uVar26;" (assignment_expression "uVar18 = uVar26" identifier = identifier) ;) (if_statement "if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }" if (parenthesized_expression "(uVar22 <= uVar26)" ( (binary_expression "uVar22 <= uVar26" identifier <= identifier) )) (compound_statement "{\n            uVar18 = uVar22;\n          }" { (expression_statement "uVar18 = uVar22;" (assignment_expression "uVar18 = uVar22" identifier = identifier) ;) })) (expression_statement "uVar22 = uVar22 - uVar18;" (assignment_expression "uVar22 = uVar22 - uVar18" identifier = (binary_expression "uVar22 - uVar18" identifier - identifier)) ;) (expression_statement "uVar26 = uVar26 - uVar18;" (assignment_expression "uVar26 = uVar26 - uVar18" identifier = (binary_expression "uVar26 - uVar18" identifier - identifier)) ;) (expression_statement "uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);" (assignment_expression "uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f)" identifier = (binary_expression "uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f)" (binary_expression "uVar29 << ((byte)uVar18 & 0x1f)" identifier << (parenthesized_expression "((byte)uVar18 & 0x1f)" ( (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) | (binary_expression "~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f)" (unary_expression "~(-1 << ((byte)uVar18 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar18 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar18 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar18 & 0x1f)" ( (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & (binary_expression "uVar19 >> ((byte)uVar22 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar22 & 0x1f)" ( (binary_expression "(byte)uVar22 & 0x1f" (cast_expression "(byte)uVar22" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))))) ;) }) while (parenthesized_expression "(0 < (int)uVar26)" ( (binary_expression "0 < (int)uVar26" number_literal < (cast_expression "(int)uVar26" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" identifier = number_literal) ;) (expression_statement "param_2[0x14] = uVar22;" (assignment_expression "param_2[0x14] = uVar22" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(double *)(local_78 + iVar8 * 8) = (double)((uVar29 & 0x3ff) << 6);" (assignment_expression "*(double *)(local_78 + iVar8 * 8) = (double)((uVar29 & 0x3ff) << 6)" (pointer_expression "*(double *)(local_78 + iVar8 * 8)" * (cast_expression "(double *)(local_78 + iVar8 * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + iVar8 * 8)" ( (binary_expression "local_78 + iVar8 * 8" identifier + (binary_expression "iVar8 * 8" identifier * number_literal)) )))) = (cast_expression "(double)((uVar29 & 0x3ff) << 6)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((uVar29 & 0x3ff) << 6)" ( (binary_expression "(uVar29 & 0x3ff) << 6" (parenthesized_expression "(uVar29 & 0x3ff)" ( (binary_expression "uVar29 & 0x3ff" identifier & number_literal) )) << number_literal) )))) ;) (expression_statement "uVar29 = 10;" (assignment_expression "uVar29 = 10" identifier = number_literal) ;) (do_statement "do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar29 <= uVar22) {\n            uVar18 = uVar29;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar29 = uVar29 - uVar18;\n          uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar29);" do (compound_statement "{\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar29 <= uVar22) {\n            uVar18 = uVar29;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar29 = uVar29 - uVar18;\n          uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        }" { (if_statement "if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }" if (parenthesized_expression "(uVar22 == 0)" ( (binary_expression "uVar22 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }" { (expression_statement "uVar19 = (uint)*(byte *)local_80;" (assignment_expression "uVar19 = (uint)*(byte *)local_80" identifier = (binary_expression "(uint)*(byte *)local_80" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)local_80" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_80 = (float *)((int)local_80 + 1);" (assignment_expression "local_80 = (float *)((int)local_80 + 1)" identifier = (cast_expression "(float *)((int)local_80 + 1)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + 1)" ( (binary_expression "(int)local_80 + 1" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar22 = 8;" (assignment_expression "uVar22 = 8" identifier = number_literal) ;) (expression_statement "param_2[0x13] = uVar19;" (assignment_expression "param_2[0x13] = uVar19" (subscript_expression "param_2[0x13]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            uVar19 = param_2[0x13];\n          }" else (compound_statement "{\n            uVar19 = param_2[0x13];\n          }" { (expression_statement "uVar19 = param_2[0x13];" (assignment_expression "uVar19 = param_2[0x13]" identifier = (subscript_expression "param_2[0x13]" identifier [ number_literal ])) ;) }))) (expression_statement "uVar18 = uVar22;" (assignment_expression "uVar18 = uVar22" identifier = identifier) ;) (if_statement "if (uVar29 <= uVar22) {\n            uVar18 = uVar29;\n          }" if (parenthesized_expression "(uVar29 <= uVar22)" ( (binary_expression "uVar29 <= uVar22" identifier <= identifier) )) (compound_statement "{\n            uVar18 = uVar29;\n          }" { (expression_statement "uVar18 = uVar29;" (assignment_expression "uVar18 = uVar29" identifier = identifier) ;) })) (expression_statement "uVar22 = uVar22 - uVar18;" (assignment_expression "uVar22 = uVar22 - uVar18" identifier = (binary_expression "uVar22 - uVar18" identifier - identifier)) ;) (expression_statement "uVar29 = uVar29 - uVar18;" (assignment_expression "uVar29 = uVar29 - uVar18" identifier = (binary_expression "uVar29 - uVar18" identifier - identifier)) ;) (expression_statement "uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);" (assignment_expression "uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f)" identifier = (binary_expression "uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f)" (binary_expression "uVar26 << ((byte)uVar18 & 0x1f)" identifier << (parenthesized_expression "((byte)uVar18 & 0x1f)" ( (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) | (binary_expression "~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f)" (unary_expression "~(-1 << ((byte)uVar18 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar18 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar18 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar18 & 0x1f)" ( (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & (binary_expression "uVar19 >> ((byte)uVar22 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar22 & 0x1f)" ( (binary_expression "(byte)uVar22 & 0x1f" (cast_expression "(byte)uVar22" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))))) ;) }) while (parenthesized_expression "(0 < (int)uVar29)" ( (binary_expression "0 < (int)uVar29" number_literal < (cast_expression "(int)uVar29" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "param_2[0x14] = uVar22;" (assignment_expression "param_2[0x14] = uVar22" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar7 != 0) {\n          *(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));\n        }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n          *(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));\n        }" { (expression_statement "*(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));" (assignment_expression "*(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6))" (pointer_expression "*(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8)" * (cast_expression "(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + *(int *)(iVar33 + 0x38) * 8)" ( (binary_expression "local_78 + *(int *)(iVar33 + 0x38) * 8" identifier + (binary_expression "*(int *)(iVar33 + 0x38) * 8" (pointer_expression "*(int *)(iVar33 + 0x38)" * (cast_expression "(int *)(iVar33 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x38)" ( (binary_expression "iVar33 + 0x38" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6))" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6))" ( (binary_expression "DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6)" identifier - (cast_expression "(float)((uVar26 & 0x3ff) << 6)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((uVar26 & 0x3ff) << 6)" ( (binary_expression "(uVar26 & 0x3ff) << 6" (parenthesized_expression "(uVar26 & 0x3ff)" ( (binary_expression "uVar26 & 0x3ff" identifier & number_literal) )) << number_literal) )))) )))) ;) })) (expression_statement "iVar20 = iVar20 + 1;" (assignment_expression "iVar20 = iVar20 + 1" identifier = (binary_expression "iVar20 + 1" identifier + number_literal)) ;) (expression_statement "local_78 = local_78 + iVar6 * 8;" (assignment_expression "local_78 = local_78 + iVar6 * 8" identifier = (binary_expression "local_78 + iVar6 * 8" identifier + (binary_expression "iVar6 * 8" identifier * number_literal))) ;) }) while (parenthesized_expression "(iVar20 != param_3)" ( (binary_expression "iVar20 != param_3" identifier != identifier) )) ;) })))) (break_statement "break;" break ;)) (case_statement "case 0x10:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        uVar22 = param_2[0x10];\n        do {\n          if (uVar22 == 1) {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          else {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          lVar34 = (longdouble)FUN_00159350();\n          if (*(int *)(iVar33 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n    }\n    else if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(iVar20 + 0x20);\n      iVar7 = *(int *)(iVar20 + 8);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        uVar3 = *(ushort *)(param_5 + 1);\n        uVar31 = *(ushort *)((int)param_5 + 6);\n        uVar4 = *(ushort *)param_5;\n        pdVar21 = (double *)(iVar24 * 8 + param_6);\n        uVar5 = *(ushort *)((int)param_5 + 2);\n        pdVar28 = (double *)(iVar6 * 8 + param_6);\n        pdVar30 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)uVar4;\n          *pdVar21 = (double)uVar5;\n          *pdVar28 = (double)uVar3;\n        }\n        else {\n          uVar31 = uVar31 << 8 | uVar31 >> 8;\n          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);\n          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);\n          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 8);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;" case number_literal : (if_statement "if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        uVar22 = param_2[0x10];\n        do {\n          if (uVar22 == 1) {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          else {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          lVar34 = (longdouble)FUN_00159350();\n          if (*(int *)(iVar33 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n    }\n    else if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(iVar20 + 0x20);\n      iVar7 = *(int *)(iVar20 + 8);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        uVar3 = *(ushort *)(param_5 + 1);\n        uVar31 = *(ushort *)((int)param_5 + 6);\n        uVar4 = *(ushort *)param_5;\n        pdVar21 = (double *)(iVar24 * 8 + param_6);\n        uVar5 = *(ushort *)((int)param_5 + 2);\n        pdVar28 = (double *)(iVar6 * 8 + param_6);\n        pdVar30 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)uVar4;\n          *pdVar21 = (double)uVar5;\n          *pdVar28 = (double)uVar3;\n        }\n        else {\n          uVar31 = uVar31 << 8 | uVar31 >> 8;\n          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);\n          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);\n          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 8);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }" if (parenthesized_expression "(param_2[2] == 1)" ( (binary_expression "param_2[2] == 1" (subscript_expression "param_2[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      if (0 < param_3) {\n        iVar20 = 0;\n        uVar22 = param_2[0x10];\n        do {\n          if (uVar22 == 1) {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          else {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          lVar34 = (longdouble)FUN_00159350();\n          if (*(int *)(iVar33 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n    }" { (if_statement "if (0 < param_3) {\n        iVar20 = 0;\n        uVar22 = param_2[0x10];\n        do {\n          if (uVar22 == 1) {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          else {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          lVar34 = (longdouble)FUN_00159350();\n          if (*(int *)(iVar33 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }" if (parenthesized_expression "(0 < param_3)" ( (binary_expression "0 < param_3" number_literal < identifier) )) (compound_statement "{\n        iVar20 = 0;\n        uVar22 = param_2[0x10];\n        do {\n          if (uVar22 == 1) {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          else {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          lVar34 = (longdouble)FUN_00159350();\n          if (*(int *)(iVar33 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }" { (expression_statement "iVar20 = 0;" (assignment_expression "iVar20 = 0" identifier = number_literal) ;) (expression_statement "uVar22 = param_2[0x10];" (assignment_expression "uVar22 = param_2[0x10]" identifier = (subscript_expression "param_2[0x10]" identifier [ number_literal ])) ;) (do_statement "do {\n          if (uVar22 == 1) {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          else {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          lVar34 = (longdouble)FUN_00159350();\n          if (*(int *)(iVar33 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);" do (compound_statement "{\n          if (uVar22 == 1) {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          else {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          lVar34 = (longdouble)FUN_00159350();\n          if (*(int *)(iVar33 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        }" { (if_statement "if (uVar22 == 1) {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          else {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }" if (parenthesized_expression "(uVar22 == 1)" ( (binary_expression "uVar22 == 1" identifier == number_literal) )) (compound_statement "{\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }" { (expression_statement "lVar34 = (longdouble)FUN_00159350();" (assignment_expression "lVar34 = (longdouble)FUN_00159350()" identifier = (cast_expression "(longdouble)FUN_00159350()" ( (type_descriptor "longdouble" type_identifier) ) (call_expression "FUN_00159350()" identifier (argument_list "()" ( ))))) ;) (expression_statement "fVar27 = DAT_0029f710;" (assignment_expression "fVar27 = DAT_0029f710" identifier = identifier) ;) (expression_statement "iVar33 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar33 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) (expression_statement "*(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);" (assignment_expression "*(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34)" (pointer_expression "*(double *)(param_6 + *(int *)(iVar33 + 8) * 8)" * (cast_expression "(double *)(param_6 + *(int *)(iVar33 + 8) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(iVar33 + 8) * 8)" ( (binary_expression "param_6 + *(int *)(iVar33 + 8) * 8" identifier + (binary_expression "*(int *)(iVar33 + 8) * 8" (pointer_expression "*(int *)(iVar33 + 8)" * (cast_expression "(int *)(iVar33 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 8)" ( (binary_expression "iVar33 + 8" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(double)((longdouble)DAT_0029f710 * lVar34)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((longdouble)DAT_0029f710 * lVar34)" ( (binary_expression "(longdouble)DAT_0029f710 * lVar34" (cast_expression "(longdouble)DAT_0029f710" ( (type_descriptor "longdouble" type_identifier) ) identifier) * identifier) )))) ;) (expression_statement "lVar34 = (longdouble)FUN_00159350();" (assignment_expression "lVar34 = (longdouble)FUN_00159350()" identifier = (cast_expression "(longdouble)FUN_00159350()" ( (type_descriptor "longdouble" type_identifier) ) (call_expression "FUN_00159350()" identifier (argument_list "()" ( ))))) ;) (expression_statement "*(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);" (assignment_expression "*(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27)" (pointer_expression "*(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8)" * (cast_expression "(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(iVar33 + 0x14) * 8)" ( (binary_expression "param_6 + *(int *)(iVar33 + 0x14) * 8" identifier + (binary_expression "*(int *)(iVar33 + 0x14) * 8" (pointer_expression "*(int *)(iVar33 + 0x14)" * (cast_expression "(int *)(iVar33 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x14)" ( (binary_expression "iVar33 + 0x14" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(double)(lVar34 * (longdouble)fVar27)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(lVar34 * (longdouble)fVar27)" ( (binary_expression "lVar34 * (longdouble)fVar27" identifier * (cast_expression "(longdouble)fVar27" ( (type_descriptor "longdouble" type_identifier) ) identifier)) )))) ;) (expression_statement "lVar34 = (longdouble)FUN_00159350();" (assignment_expression "lVar34 = (longdouble)FUN_00159350()" identifier = (cast_expression "(longdouble)FUN_00159350()" ( (type_descriptor "longdouble" type_identifier) ) (call_expression "FUN_00159350()" identifier (argument_list "()" ( ))))) ;) (expression_statement "*(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);" (assignment_expression "*(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27)" (pointer_expression "*(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8)" * (cast_expression "(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(iVar33 + 0x20) * 8)" ( (binary_expression "param_6 + *(int *)(iVar33 + 0x20) * 8" identifier + (binary_expression "*(int *)(iVar33 + 0x20) * 8" (pointer_expression "*(int *)(iVar33 + 0x20)" * (cast_expression "(int *)(iVar33 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x20)" ( (binary_expression "iVar33 + 0x20" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(double)(lVar34 * (longdouble)fVar27)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(lVar34 * (longdouble)fVar27)" ( (binary_expression "lVar34 * (longdouble)fVar27" identifier * (cast_expression "(longdouble)fVar27" ( (type_descriptor "longdouble" type_identifier) ) identifier)) )))) ;) }) (else_clause "else {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }" else (compound_statement "{\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }" { (expression_statement "lVar34 = (longdouble)FUN_00159350();" (assignment_expression "lVar34 = (longdouble)FUN_00159350()" identifier = (cast_expression "(longdouble)FUN_00159350()" ( (type_descriptor "longdouble" type_identifier) ) (call_expression "FUN_00159350()" identifier (argument_list "()" ( ))))) ;) (expression_statement "fVar27 = DAT_0029f710;" (assignment_expression "fVar27 = DAT_0029f710" identifier = identifier) ;) (expression_statement "iVar33 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar33 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) (expression_statement "*(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);" (assignment_expression "*(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34)" (pointer_expression "*(double *)(param_6 + *(int *)(iVar33 + 8) * 8)" * (cast_expression "(double *)(param_6 + *(int *)(iVar33 + 8) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(iVar33 + 8) * 8)" ( (binary_expression "param_6 + *(int *)(iVar33 + 8) * 8" identifier + (binary_expression "*(int *)(iVar33 + 8) * 8" (pointer_expression "*(int *)(iVar33 + 8)" * (cast_expression "(int *)(iVar33 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 8)" ( (binary_expression "iVar33 + 8" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(double)((longdouble)DAT_0029f710 * lVar34)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((longdouble)DAT_0029f710 * lVar34)" ( (binary_expression "(longdouble)DAT_0029f710 * lVar34" (cast_expression "(longdouble)DAT_0029f710" ( (type_descriptor "longdouble" type_identifier) ) identifier) * identifier) )))) ;) (expression_statement "lVar34 = (longdouble)FUN_00159350();" (assignment_expression "lVar34 = (longdouble)FUN_00159350()" identifier = (cast_expression "(longdouble)FUN_00159350()" ( (type_descriptor "longdouble" type_identifier) ) (call_expression "FUN_00159350()" identifier (argument_list "()" ( ))))) ;) (expression_statement "*(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);" (assignment_expression "*(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27)" (pointer_expression "*(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8)" * (cast_expression "(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(iVar33 + 0x14) * 8)" ( (binary_expression "param_6 + *(int *)(iVar33 + 0x14) * 8" identifier + (binary_expression "*(int *)(iVar33 + 0x14) * 8" (pointer_expression "*(int *)(iVar33 + 0x14)" * (cast_expression "(int *)(iVar33 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x14)" ( (binary_expression "iVar33 + 0x14" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(double)(lVar34 * (longdouble)fVar27)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(lVar34 * (longdouble)fVar27)" ( (binary_expression "lVar34 * (longdouble)fVar27" identifier * (cast_expression "(longdouble)fVar27" ( (type_descriptor "longdouble" type_identifier) ) identifier)) )))) ;) (expression_statement "lVar34 = (longdouble)FUN_00159350();" (assignment_expression "lVar34 = (longdouble)FUN_00159350()" identifier = (cast_expression "(longdouble)FUN_00159350()" ( (type_descriptor "longdouble" type_identifier) ) (call_expression "FUN_00159350()" identifier (argument_list "()" ( ))))) ;) (expression_statement "*(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);" (assignment_expression "*(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27)" (pointer_expression "*(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8)" * (cast_expression "(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(iVar33 + 0x20) * 8)" ( (binary_expression "param_6 + *(int *)(iVar33 + 0x20) * 8" identifier + (binary_expression "*(int *)(iVar33 + 0x20) * 8" (pointer_expression "*(int *)(iVar33 + 0x20)" * (cast_expression "(int *)(iVar33 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x20)" ( (binary_expression "iVar33 + 0x20" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(double)(lVar34 * (longdouble)fVar27)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(lVar34 * (longdouble)fVar27)" ( (binary_expression "lVar34 * (longdouble)fVar27" identifier * (cast_expression "(longdouble)fVar27" ( (type_descriptor "longdouble" type_identifier) ) identifier)) )))) ;) }))) (expression_statement "lVar34 = (longdouble)FUN_00159350();" (assignment_expression "lVar34 = (longdouble)FUN_00159350()" identifier = (cast_expression "(longdouble)FUN_00159350()" ( (type_descriptor "longdouble" type_identifier) ) (call_expression "FUN_00159350()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (*(int *)(iVar33 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);\n          }" if (parenthesized_expression "(*(int *)(iVar33 + 0x34) != 0)" ( (binary_expression "*(int *)(iVar33 + 0x34) != 0" (pointer_expression "*(int *)(iVar33 + 0x34)" * (cast_expression "(int *)(iVar33 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x34)" ( (binary_expression "iVar33 + 0x34" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n            *(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);\n          }" { (expression_statement "*(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);" (assignment_expression "*(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710)" (pointer_expression "*(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8)" * (cast_expression "(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(iVar33 + 0x38) * 8)" ( (binary_expression "param_6 + *(int *)(iVar33 + 0x38) * 8" identifier + (binary_expression "*(int *)(iVar33 + 0x38) * 8" (pointer_expression "*(int *)(iVar33 + 0x38)" * (cast_expression "(int *)(iVar33 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x38)" ( (binary_expression "iVar33 + 0x38" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710)" ( (binary_expression "(longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710" (cast_expression "(longdouble)DAT_0029f710" ( (type_descriptor "longdouble" type_identifier) ) identifier) - (binary_expression "lVar34 * (longdouble)DAT_0029f710" identifier * (cast_expression "(longdouble)DAT_0029f710" ( (type_descriptor "longdouble" type_identifier) ) identifier))) )))) ;) })) (expression_statement "iVar20 = iVar20 + 1;" (assignment_expression "iVar20 = iVar20 + 1" identifier = (binary_expression "iVar20 + 1" identifier + number_literal)) ;) (expression_statement "param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;" (assignment_expression "param_6 = param_6 + *(int *)(param_1 + 0x298) * 8" identifier = (binary_expression "param_6 + *(int *)(param_1 + 0x298) * 8" identifier + (binary_expression "*(int *)(param_1 + 0x298) * 8" (pointer_expression "*(int *)(param_1 + 0x298)" * (cast_expression "(int *)(param_1 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) )))) * number_literal))) ;) }) while (parenthesized_expression "(iVar20 != param_3)" ( (binary_expression "iVar20 != param_3" identifier != identifier) )) ;) })) }) (else_clause "else if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(iVar20 + 0x20);\n      iVar7 = *(int *)(iVar20 + 8);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        uVar3 = *(ushort *)(param_5 + 1);\n        uVar31 = *(ushort *)((int)param_5 + 6);\n        uVar4 = *(ushort *)param_5;\n        pdVar21 = (double *)(iVar24 * 8 + param_6);\n        uVar5 = *(ushort *)((int)param_5 + 2);\n        pdVar28 = (double *)(iVar6 * 8 + param_6);\n        pdVar30 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)uVar4;\n          *pdVar21 = (double)uVar5;\n          *pdVar28 = (double)uVar3;\n        }\n        else {\n          uVar31 = uVar31 << 8 | uVar31 >> 8;\n          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);\n          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);\n          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 8);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }" else (if_statement "if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(iVar20 + 0x20);\n      iVar7 = *(int *)(iVar20 + 8);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        uVar3 = *(ushort *)(param_5 + 1);\n        uVar31 = *(ushort *)((int)param_5 + 6);\n        uVar4 = *(ushort *)param_5;\n        pdVar21 = (double *)(iVar24 * 8 + param_6);\n        uVar5 = *(ushort *)((int)param_5 + 2);\n        pdVar28 = (double *)(iVar6 * 8 + param_6);\n        pdVar30 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)uVar4;\n          *pdVar21 = (double)uVar5;\n          *pdVar28 = (double)uVar3;\n        }\n        else {\n          uVar31 = uVar31 << 8 | uVar31 >> 8;\n          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);\n          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);\n          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 8);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }" if (parenthesized_expression "(0 < param_3)" ( (binary_expression "0 < param_3" number_literal < identifier) )) (compound_statement "{\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(iVar20 + 0x20);\n      iVar7 = *(int *)(iVar20 + 8);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        uVar3 = *(ushort *)(param_5 + 1);\n        uVar31 = *(ushort *)((int)param_5 + 6);\n        uVar4 = *(ushort *)param_5;\n        pdVar21 = (double *)(iVar24 * 8 + param_6);\n        uVar5 = *(ushort *)((int)param_5 + 2);\n        pdVar28 = (double *)(iVar6 * 8 + param_6);\n        pdVar30 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)uVar4;\n          *pdVar21 = (double)uVar5;\n          *pdVar28 = (double)uVar3;\n        }\n        else {\n          uVar31 = uVar31 << 8 | uVar31 >> 8;\n          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);\n          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);\n          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 8);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }" { (expression_statement "iVar20 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar20 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) (expression_statement "uVar22 = param_2[0x10];" (assignment_expression "uVar22 = param_2[0x10]" identifier = (subscript_expression "param_2[0x10]" identifier [ number_literal ])) ;) (expression_statement "uVar26 = param_2[9];" (assignment_expression "uVar26 = param_2[9]" identifier = (subscript_expression "param_2[9]" identifier [ number_literal ])) ;) (expression_statement "iVar33 = *(int *)(param_1 + 0x298);" (assignment_expression "iVar33 = *(int *)(param_1 + 0x298)" identifier = (pointer_expression "*(int *)(param_1 + 0x298)" * (cast_expression "(int *)(param_1 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) ))))) ;) (expression_statement "iVar24 = *(int *)(iVar20 + 0x14);" (assignment_expression "iVar24 = *(int *)(iVar20 + 0x14)" identifier = (pointer_expression "*(int *)(iVar20 + 0x14)" * (cast_expression "(int *)(iVar20 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x14)" ( (binary_expression "iVar20 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = *(int *)(iVar20 + 0x20);" (assignment_expression "iVar6 = *(int *)(iVar20 + 0x20)" identifier = (pointer_expression "*(int *)(iVar20 + 0x20)" * (cast_expression "(int *)(iVar20 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x20)" ( (binary_expression "iVar20 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = *(int *)(iVar20 + 8);" (assignment_expression "iVar7 = *(int *)(iVar20 + 8)" identifier = (pointer_expression "*(int *)(iVar20 + 8)" * (cast_expression "(int *)(iVar20 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 8)" ( (binary_expression "iVar20 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = *(int *)(iVar20 + 0x34);" (assignment_expression "iVar8 = *(int *)(iVar20 + 0x34)" identifier = (pointer_expression "*(int *)(iVar20 + 0x34)" * (cast_expression "(int *)(iVar20 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x34)" ( (binary_expression "iVar20 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "iVar32 = 0;" (assignment_expression "iVar32 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar3 = *(ushort *)(param_5 + 1);\n        uVar31 = *(ushort *)((int)param_5 + 6);\n        uVar4 = *(ushort *)param_5;\n        pdVar21 = (double *)(iVar24 * 8 + param_6);\n        uVar5 = *(ushort *)((int)param_5 + 2);\n        pdVar28 = (double *)(iVar6 * 8 + param_6);\n        pdVar30 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)uVar4;\n          *pdVar21 = (double)uVar5;\n          *pdVar28 = (double)uVar3;\n        }\n        else {\n          uVar31 = uVar31 << 8 | uVar31 >> 8;\n          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);\n          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);\n          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 8);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);" do (compound_statement "{\n        uVar3 = *(ushort *)(param_5 + 1);\n        uVar31 = *(ushort *)((int)param_5 + 6);\n        uVar4 = *(ushort *)param_5;\n        pdVar21 = (double *)(iVar24 * 8 + param_6);\n        uVar5 = *(ushort *)((int)param_5 + 2);\n        pdVar28 = (double *)(iVar6 * 8 + param_6);\n        pdVar30 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)uVar4;\n          *pdVar21 = (double)uVar5;\n          *pdVar28 = (double)uVar3;\n        }\n        else {\n          uVar31 = uVar31 << 8 | uVar31 >> 8;\n          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);\n          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);\n          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 8);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      }" { (expression_statement "uVar3 = *(ushort *)(param_5 + 1);" (assignment_expression "uVar3 = *(ushort *)(param_5 + 1)" identifier = (pointer_expression "*(ushort *)(param_5 + 1)" * (cast_expression "(ushort *)(param_5 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 1)" ( (binary_expression "param_5 + 1" identifier + number_literal) ))))) ;) (expression_statement "uVar31 = *(ushort *)((int)param_5 + 6);" (assignment_expression "uVar31 = *(ushort *)((int)param_5 + 6)" identifier = (pointer_expression "*(ushort *)((int)param_5 + 6)" * (cast_expression "(ushort *)((int)param_5 + 6)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 6)" ( (binary_expression "(int)param_5 + 6" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "uVar4 = *(ushort *)param_5;" (assignment_expression "uVar4 = *(ushort *)param_5" identifier = (pointer_expression "*(ushort *)param_5" * (cast_expression "(ushort *)param_5" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "pdVar21 = (double *)(iVar24 * 8 + param_6);" (assignment_expression "pdVar21 = (double *)(iVar24 * 8 + param_6)" identifier = (cast_expression "(double *)(iVar24 * 8 + param_6)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar24 * 8 + param_6)" ( (binary_expression "iVar24 * 8 + param_6" (binary_expression "iVar24 * 8" identifier * number_literal) + identifier) )))) ;) (expression_statement "uVar5 = *(ushort *)((int)param_5 + 2);" (assignment_expression "uVar5 = *(ushort *)((int)param_5 + 2)" identifier = (pointer_expression "*(ushort *)((int)param_5 + 2)" * (cast_expression "(ushort *)((int)param_5 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 2)" ( (binary_expression "(int)param_5 + 2" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "pdVar28 = (double *)(iVar6 * 8 + param_6);" (assignment_expression "pdVar28 = (double *)(iVar6 * 8 + param_6)" identifier = (cast_expression "(double *)(iVar6 * 8 + param_6)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 * 8 + param_6)" ( (binary_expression "iVar6 * 8 + param_6" (binary_expression "iVar6 * 8" identifier * number_literal) + identifier) )))) ;) (expression_statement "pdVar30 = (double *)(iVar7 * 8 + param_6);" (assignment_expression "pdVar30 = (double *)(iVar7 * 8 + param_6)" identifier = (cast_expression "(double *)(iVar7 * 8 + param_6)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 * 8 + param_6)" ( (binary_expression "iVar7 * 8 + param_6" (binary_expression "iVar7 * 8" identifier * number_literal) + identifier) )))) ;) (if_statement "if (uVar22 == 1) {\n          *pdVar30 = (double)uVar4;\n          *pdVar21 = (double)uVar5;\n          *pdVar28 = (double)uVar3;\n        }\n        else {\n          uVar31 = uVar31 << 8 | uVar31 >> 8;\n          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);\n          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);\n          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n        }" if (parenthesized_expression "(uVar22 == 1)" ( (binary_expression "uVar22 == 1" identifier == number_literal) )) (compound_statement "{\n          *pdVar30 = (double)uVar4;\n          *pdVar21 = (double)uVar5;\n          *pdVar28 = (double)uVar3;\n        }" { (expression_statement "*pdVar30 = (double)uVar4;" (assignment_expression "*pdVar30 = (double)uVar4" (pointer_expression "*pdVar30" * identifier) = (cast_expression "(double)uVar4" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "*pdVar21 = (double)uVar5;" (assignment_expression "*pdVar21 = (double)uVar5" (pointer_expression "*pdVar21" * identifier) = (cast_expression "(double)uVar5" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "*pdVar28 = (double)uVar3;" (assignment_expression "*pdVar28 = (double)uVar3" (pointer_expression "*pdVar28" * identifier) = (cast_expression "(double)uVar3" ( (type_descriptor "double" primitive_type) ) identifier)) ;) }) (else_clause "else {\n          uVar31 = uVar31 << 8 | uVar31 >> 8;\n          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);\n          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);\n          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n        }" else (compound_statement "{\n          uVar31 = uVar31 << 8 | uVar31 >> 8;\n          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);\n          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);\n          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n        }" { (expression_statement "uVar31 = uVar31 << 8 | uVar31 >> 8;" (assignment_expression "uVar31 = uVar31 << 8 | uVar31 >> 8" identifier = (binary_expression "uVar31 << 8 | uVar31 >> 8" (binary_expression "uVar31 << 8" identifier << number_literal) | (binary_expression "uVar31 >> 8" identifier >> number_literal))) ;) (expression_statement "*pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);" (assignment_expression "*pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8)" (pointer_expression "*pdVar30" * identifier) = (cast_expression "(double)(ushort)(uVar4 << 8 | uVar4 >> 8)" ( (type_descriptor "double" primitive_type) ) (call_expression "(ushort)(uVar4 << 8 | uVar4 >> 8)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(uVar4 << 8 | uVar4 >> 8)" ( (binary_expression "uVar4 << 8 | uVar4 >> 8" (binary_expression "uVar4 << 8" identifier << number_literal) | (binary_expression "uVar4 >> 8" identifier >> number_literal)) ))))) ;) (expression_statement "*pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);" (assignment_expression "*pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8)" (pointer_expression "*pdVar21" * identifier) = (cast_expression "(double)(ushort)(uVar5 << 8 | uVar5 >> 8)" ( (type_descriptor "double" primitive_type) ) (call_expression "(ushort)(uVar5 << 8 | uVar5 >> 8)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(uVar5 << 8 | uVar5 >> 8)" ( (binary_expression "uVar5 << 8 | uVar5 >> 8" (binary_expression "uVar5 << 8" identifier << number_literal) | (binary_expression "uVar5 >> 8" identifier >> number_literal)) ))))) ;) (expression_statement "*pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);" (assignment_expression "*pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8)" (pointer_expression "*pdVar28" * identifier) = (cast_expression "(double)(ushort)(uVar3 << 8 | uVar3 >> 8)" ( (type_descriptor "double" primitive_type) ) (call_expression "(ushort)(uVar3 << 8 | uVar3 >> 8)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(uVar3 << 8 | uVar3 >> 8)" ( (binary_expression "uVar3 << 8 | uVar3 >> 8" (binary_expression "uVar3 << 8" identifier << number_literal) | (binary_expression "uVar3 >> 8" identifier >> number_literal)) ))))) ;) }))) (if_statement "if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);\n        }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);\n        }" { (expression_statement "*(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);" (assignment_expression "*(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31)" (pointer_expression "*(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8)" * (cast_expression "(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(iVar20 + 0x38) * 8)" ( (binary_expression "param_6 + *(int *)(iVar20 + 0x38) * 8" identifier + (binary_expression "*(int *)(iVar20 + 0x38) * 8" (pointer_expression "*(int *)(iVar20 + 0x38)" * (cast_expression "(int *)(iVar20 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x38)" ( (binary_expression "iVar20 + 0x38" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(double)(fVar27 - (float)uVar31)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(fVar27 - (float)uVar31)" ( (binary_expression "fVar27 - (float)uVar31" identifier - (cast_expression "(float)uVar31" ( (type_descriptor "float" primitive_type) ) identifier)) )))) ;) })) (expression_statement "param_5 = (float *)((int)param_5 + uVar26 + 8);" (assignment_expression "param_5 = (float *)((int)param_5 + uVar26 + 8)" identifier = (cast_expression "(float *)((int)param_5 + uVar26 + 8)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + uVar26 + 8)" ( (binary_expression "(int)param_5 + uVar26 + 8" (binary_expression "(int)param_5 + uVar26" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ;) (expression_statement "iVar32 = iVar32 + 1;" (assignment_expression "iVar32 = iVar32 + 1" identifier = (binary_expression "iVar32 + 1" identifier + number_literal)) ;) (expression_statement "param_6 = param_6 + iVar33 * 8;" (assignment_expression "param_6 = param_6 + iVar33 * 8" identifier = (binary_expression "param_6 + iVar33 * 8" identifier + (binary_expression "iVar33 * 8" identifier * number_literal))) ;) }) while (parenthesized_expression "(iVar32 != param_3)" ( (binary_expression "iVar32 != param_3" identifier != identifier) )) ;) })))) (break_statement "break;" break ;)) (case_statement "case 0x18:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }\n    goto code_r0x001616dd;" case number_literal : (if_statement "if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }" if (parenthesized_expression "(param_2[2] == 1)" ( (binary_expression "param_2[2] == 1" (subscript_expression "param_2[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }" { (if_statement "if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }" if (parenthesized_expression "(0 < param_3)" ( (binary_expression "0 < param_3" number_literal < identifier) )) (compound_statement "{\n        iVar20 = 0;\n        do {\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }" { (expression_statement "iVar20 = 0;" (assignment_expression "iVar20 = 0" identifier = number_literal) ;) (do_statement "do {\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);" do (compound_statement "{\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        }" { (expression_statement "FUN_00159670();" (call_expression "FUN_00159670()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) = (double)fStack_2c;" (assignment_expression "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) = (double)fStack_2c" (pointer_expression "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" * (cast_expression "(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" ( (binary_expression "param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 8)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 8" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) = (cast_expression "(double)fStack_2c" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "FUN_00159670();" (call_expression "FUN_00159670()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) = (double)fStack_2c;" (assignment_expression "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) = (double)fStack_2c" (pointer_expression "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" * (cast_expression "(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" ( (binary_expression "param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x14)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x14" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) = (cast_expression "(double)fStack_2c" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "FUN_00159670();" (call_expression "FUN_00159670()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) = (double)fStack_2c;" (assignment_expression "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) = (double)fStack_2c" (pointer_expression "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" * (cast_expression "(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" ( (binary_expression "param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x20)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x20" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) = (cast_expression "(double)fStack_2c" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "FUN_00159670();" (call_expression "FUN_00159670()" identifier (argument_list "()" ( ))) ;) (if_statement "if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c);\n          }" if (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0)" ( (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x34)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x34" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c);\n          }" { (expression_statement "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c);" (assignment_expression "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c)" (pointer_expression "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" * (cast_expression "(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" ( (binary_expression "param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x38)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x38" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) = (cast_expression "(double)(DAT_0029f710 - fStack_2c)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(DAT_0029f710 - fStack_2c)" ( (binary_expression "DAT_0029f710 - fStack_2c" identifier - identifier) )))) ;) })) (expression_statement "iVar20 = iVar20 + 1;" (assignment_expression "iVar20 = iVar20 + 1" identifier = (binary_expression "iVar20 + 1" identifier + number_literal)) ;) (expression_statement "param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;" (assignment_expression "param_6 = param_6 + *(int *)(param_1 + 0x298) * 8" identifier = (binary_expression "param_6 + *(int *)(param_1 + 0x298) * 8" identifier + (binary_expression "*(int *)(param_1 + 0x298) * 8" (pointer_expression "*(int *)(param_1 + 0x298)" * (cast_expression "(int *)(param_1 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) )))) * number_literal))) ;) }) while (parenthesized_expression "(iVar20 != param_3)" ( (binary_expression "iVar20 != param_3" identifier != identifier) )) ;) })) (break_statement "break;" break ;) })) (goto_statement "goto code_r0x001616dd;" goto statement_identifier ;)) (case_statement "case 0x20:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        local_5c = (double *)0x0;\n        uVar22 = param_2[9];\n        uVar26 = param_2[0x10];\n        iVar33 = *(int *)(param_1 + 0x298);\n        do {\n          local_64 = *param_5;\n          if (uVar26 != 1) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3));\n          }\n          fVar13 = (local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar27 = fVar10;\n          if ((fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)) {\n            fVar27 = fVar13;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 8) * 8) = (double)fVar27;\n          if (uVar26 == 1) {\n            fVar27 = param_5[1];\n          }\n          else {\n            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));\n          }\n          fVar27 = (fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            local_60 = param_5[2];\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));\n          }\n          fVar27 = (local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            fVar27 = param_5[3];\n            local_6c = SUB41(fVar27,0);\n            bStack_6b = (byte)((uint)fVar27 >> 8);\n            uStack_6a = (ushort)((uint)fVar27 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);\n            bStack_6b = *(byte *)((int)param_5 + 0xe);\n            local_6c = *(byte *)((int)param_5 + 0xf);\n          }\n          fVar27 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          param_5 = (float *)((int)param_5 + uVar22 + 0x10);\n          param_6 = param_6 + iVar33 * 8;\n        } while (local_5c != (double *)param_3);\n      }\n      break;\n    }\ncode_r0x001616dd:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        fVar17 = DAT_002a7fec;\n        fVar27 = param_5[3];\n        fVar9 = param_5[1];\n        pdVar21 = (double *)(iVar6 * 8 + param_6);\n        fVar10 = param_5[2];\n        pdVar30 = (double *)(iVar24 * 8 + param_6);\n        fVar11 = *param_5;\n        pdVar28 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec);\n          *pdVar21 = (double)((float)(uint)fVar9 / fVar17);\n          *pdVar28 = (double)((float)(uint)fVar10 / fVar17);\n        }\n        else {\n          uVar3 = (ushort)((uint)fVar11 >> 8);\n          uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);\n          fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          *pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13);\n          *pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);\n          *pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 0x10);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;" case number_literal : (if_statement "if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        local_5c = (double *)0x0;\n        uVar22 = param_2[9];\n        uVar26 = param_2[0x10];\n        iVar33 = *(int *)(param_1 + 0x298);\n        do {\n          local_64 = *param_5;\n          if (uVar26 != 1) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3));\n          }\n          fVar13 = (local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar27 = fVar10;\n          if ((fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)) {\n            fVar27 = fVar13;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 8) * 8) = (double)fVar27;\n          if (uVar26 == 1) {\n            fVar27 = param_5[1];\n          }\n          else {\n            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));\n          }\n          fVar27 = (fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            local_60 = param_5[2];\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));\n          }\n          fVar27 = (local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            fVar27 = param_5[3];\n            local_6c = SUB41(fVar27,0);\n            bStack_6b = (byte)((uint)fVar27 >> 8);\n            uStack_6a = (ushort)((uint)fVar27 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);\n            bStack_6b = *(byte *)((int)param_5 + 0xe);\n            local_6c = *(byte *)((int)param_5 + 0xf);\n          }\n          fVar27 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          param_5 = (float *)((int)param_5 + uVar22 + 0x10);\n          param_6 = param_6 + iVar33 * 8;\n        } while (local_5c != (double *)param_3);\n      }\n      break;\n    }" if (parenthesized_expression "(param_2[2] == 1)" ( (binary_expression "param_2[2] == 1" (subscript_expression "param_2[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      if (0 < param_3) {\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        local_5c = (double *)0x0;\n        uVar22 = param_2[9];\n        uVar26 = param_2[0x10];\n        iVar33 = *(int *)(param_1 + 0x298);\n        do {\n          local_64 = *param_5;\n          if (uVar26 != 1) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3));\n          }\n          fVar13 = (local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar27 = fVar10;\n          if ((fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)) {\n            fVar27 = fVar13;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 8) * 8) = (double)fVar27;\n          if (uVar26 == 1) {\n            fVar27 = param_5[1];\n          }\n          else {\n            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));\n          }\n          fVar27 = (fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            local_60 = param_5[2];\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));\n          }\n          fVar27 = (local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            fVar27 = param_5[3];\n            local_6c = SUB41(fVar27,0);\n            bStack_6b = (byte)((uint)fVar27 >> 8);\n            uStack_6a = (ushort)((uint)fVar27 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);\n            bStack_6b = *(byte *)((int)param_5 + 0xe);\n            local_6c = *(byte *)((int)param_5 + 0xf);\n          }\n          fVar27 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          param_5 = (float *)((int)param_5 + uVar22 + 0x10);\n          param_6 = param_6 + iVar33 * 8;\n        } while (local_5c != (double *)param_3);\n      }\n      break;\n    }" { (if_statement "if (0 < param_3) {\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        local_5c = (double *)0x0;\n        uVar22 = param_2[9];\n        uVar26 = param_2[0x10];\n        iVar33 = *(int *)(param_1 + 0x298);\n        do {\n          local_64 = *param_5;\n          if (uVar26 != 1) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3));\n          }\n          fVar13 = (local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar27 = fVar10;\n          if ((fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)) {\n            fVar27 = fVar13;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 8) * 8) = (double)fVar27;\n          if (uVar26 == 1) {\n            fVar27 = param_5[1];\n          }\n          else {\n            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));\n          }\n          fVar27 = (fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            local_60 = param_5[2];\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));\n          }\n          fVar27 = (local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            fVar27 = param_5[3];\n            local_6c = SUB41(fVar27,0);\n            bStack_6b = (byte)((uint)fVar27 >> 8);\n            uStack_6a = (ushort)((uint)fVar27 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);\n            bStack_6b = *(byte *)((int)param_5 + 0xe);\n            local_6c = *(byte *)((int)param_5 + 0xf);\n          }\n          fVar27 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          param_5 = (float *)((int)param_5 + uVar22 + 0x10);\n          param_6 = param_6 + iVar33 * 8;\n        } while (local_5c != (double *)param_3);\n      }" if (parenthesized_expression "(0 < param_3)" ( (binary_expression "0 < param_3" number_literal < identifier) )) (compound_statement "{\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        local_5c = (double *)0x0;\n        uVar22 = param_2[9];\n        uVar26 = param_2[0x10];\n        iVar33 = *(int *)(param_1 + 0x298);\n        do {\n          local_64 = *param_5;\n          if (uVar26 != 1) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3));\n          }\n          fVar13 = (local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar27 = fVar10;\n          if ((fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)) {\n            fVar27 = fVar13;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 8) * 8) = (double)fVar27;\n          if (uVar26 == 1) {\n            fVar27 = param_5[1];\n          }\n          else {\n            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));\n          }\n          fVar27 = (fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            local_60 = param_5[2];\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));\n          }\n          fVar27 = (local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            fVar27 = param_5[3];\n            local_6c = SUB41(fVar27,0);\n            bStack_6b = (byte)((uint)fVar27 >> 8);\n            uStack_6a = (ushort)((uint)fVar27 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);\n            bStack_6b = *(byte *)((int)param_5 + 0xe);\n            local_6c = *(byte *)((int)param_5 + 0xf);\n          }\n          fVar27 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          param_5 = (float *)((int)param_5 + uVar22 + 0x10);\n          param_6 = param_6 + iVar33 * 8;\n        } while (local_5c != (double *)param_3);\n      }" { (expression_statement "iVar20 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar20 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) (expression_statement "local_5c = (double *)0x0;" (assignment_expression "local_5c = (double *)0x0" identifier = (cast_expression "(double *)0x0" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar22 = param_2[9];" (assignment_expression "uVar22 = param_2[9]" identifier = (subscript_expression "param_2[9]" identifier [ number_literal ])) ;) (expression_statement "uVar26 = param_2[0x10];" (assignment_expression "uVar26 = param_2[0x10]" identifier = (subscript_expression "param_2[0x10]" identifier [ number_literal ])) ;) (expression_statement "iVar33 = *(int *)(param_1 + 0x298);" (assignment_expression "iVar33 = *(int *)(param_1 + 0x298)" identifier = (pointer_expression "*(int *)(param_1 + 0x298)" * (cast_expression "(int *)(param_1 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) ))))) ;) (do_statement "do {\n          local_64 = *param_5;\n          if (uVar26 != 1) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3));\n          }\n          fVar13 = (local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar27 = fVar10;\n          if ((fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)) {\n            fVar27 = fVar13;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 8) * 8) = (double)fVar27;\n          if (uVar26 == 1) {\n            fVar27 = param_5[1];\n          }\n          else {\n            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));\n          }\n          fVar27 = (fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            local_60 = param_5[2];\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));\n          }\n          fVar27 = (local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            fVar27 = param_5[3];\n            local_6c = SUB41(fVar27,0);\n            bStack_6b = (byte)((uint)fVar27 >> 8);\n            uStack_6a = (ushort)((uint)fVar27 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);\n            bStack_6b = *(byte *)((int)param_5 + 0xe);\n            local_6c = *(byte *)((int)param_5 + 0xf);\n          }\n          fVar27 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          param_5 = (float *)((int)param_5 + uVar22 + 0x10);\n          param_6 = param_6 + iVar33 * 8;\n        } while (local_5c != (double *)param_3);" do (compound_statement "{\n          local_64 = *param_5;\n          if (uVar26 != 1) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3));\n          }\n          fVar13 = (local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar27 = fVar10;\n          if ((fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)) {\n            fVar27 = fVar13;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 8) * 8) = (double)fVar27;\n          if (uVar26 == 1) {\n            fVar27 = param_5[1];\n          }\n          else {\n            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));\n          }\n          fVar27 = (fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            local_60 = param_5[2];\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));\n          }\n          fVar27 = (local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            fVar27 = param_5[3];\n            local_6c = SUB41(fVar27,0);\n            bStack_6b = (byte)((uint)fVar27 >> 8);\n            uStack_6a = (ushort)((uint)fVar27 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);\n            bStack_6b = *(byte *)((int)param_5 + 0xe);\n            local_6c = *(byte *)((int)param_5 + 0xf);\n          }\n          fVar27 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          param_5 = (float *)((int)param_5 + uVar22 + 0x10);\n          param_6 = param_6 + iVar33 * 8;\n        }" { (expression_statement "local_64 = *param_5;" (assignment_expression "local_64 = *param_5" identifier = (pointer_expression "*param_5" * identifier)) ;) (if_statement "if (uVar26 != 1) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3));\n          }" if (parenthesized_expression "(uVar26 != 1)" ( (binary_expression "uVar26 != 1" identifier != number_literal) )) (compound_statement "{\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3));\n          }" { (expression_statement "local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3));" (assignment_expression "local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3))" identifier = (cast_expression "(float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3))" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3))" identifier (argument_list "(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3))" ( (call_expression "CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2))" identifier (argument_list "((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2))" ( (binary_expression "(ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1)" (call_expression "(ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(((uint)*(byte *)param_5 << 0x18) >> 0x10)" ( (binary_expression "((uint)*(byte *)param_5 << 0x18) >> 0x10" (parenthesized_expression "((uint)*(byte *)param_5 << 0x18)" ( (binary_expression "(uint)*(byte *)param_5 << 0x18" (binary_expression "(uint)*(byte *)param_5" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)param_5" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) << number_literal) )) >> number_literal) ))) | (binary_expression "(ushort)*(byte *)((int)param_5 + 1)" (parenthesized_expression "(ushort)" ( identifier )) * (cast_expression "(byte *)((int)param_5 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 1)" ( (binary_expression "(int)param_5 + 1" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) , (pointer_expression "*(byte *)((int)param_5 + 2)" * (cast_expression "(byte *)((int)param_5 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 2)" ( (binary_expression "(int)param_5 + 2" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) , (pointer_expression "*(byte *)((int)param_5 + 3)" * (cast_expression "(byte *)((int)param_5 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 3)" ( (binary_expression "(int)param_5 + 3" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))))) ;) })) (expression_statement "fVar13 = (local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);" (assignment_expression "fVar13 = (local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7)" identifier = (binary_expression "(local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7)" (parenthesized_expression "(local_64 - (float)*(double *)(param_2 + 3))" ( (binary_expression "local_64 - (float)*(double *)(param_2 + 3)" identifier - (cast_expression "(float)*(double *)(param_2 + 3)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_2 + 3)" * (cast_expression "(double *)(param_2 + 3)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 3)" ( (binary_expression "param_2 + 3" identifier + number_literal) )))))) )) * (cast_expression "(float)*(double *)(param_2 + 7)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_2 + 7)" * (cast_expression "(double *)(param_2 + 7)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 7)" ( (binary_expression "param_2 + 7" identifier + number_literal) ))))))) ;) (expression_statement "fVar27 = fVar10;" (assignment_expression "fVar27 = fVar10" identifier = identifier) ;) (if_statement "if ((fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)) {\n            fVar27 = fVar13;\n          }" if (parenthesized_expression "((fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828))" ( (binary_expression "(fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)" (parenthesized_expression "(fVar10 <= fVar13)" ( (binary_expression "fVar10 <= fVar13" identifier <= identifier) )) && (parenthesized_expression "(fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)" ( (comma_expression "fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828" (assignment_expression "fVar27 = DAT_002c5828" identifier = identifier) , (binary_expression "fVar13 <= DAT_002c5828" identifier <= identifier)) ))) )) (compound_statement "{\n            fVar27 = fVar13;\n          }" { (expression_statement "fVar27 = fVar13;" (assignment_expression "fVar27 = fVar13" identifier = identifier) ;) })) (expression_statement "*(double *)(param_6 + *(int *)(iVar20 + 8) * 8) = (double)fVar27;" (assignment_expression "*(double *)(param_6 + *(int *)(iVar20 + 8) * 8) = (double)fVar27" (pointer_expression "*(double *)(param_6 + *(int *)(iVar20 + 8) * 8)" * (cast_expression "(double *)(param_6 + *(int *)(iVar20 + 8) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(iVar20 + 8) * 8)" ( (binary_expression "param_6 + *(int *)(iVar20 + 8) * 8" identifier + (binary_expression "*(int *)(iVar20 + 8) * 8" (pointer_expression "*(int *)(iVar20 + 8)" * (cast_expression "(int *)(iVar20 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 8)" ( (binary_expression "iVar20 + 8" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(double)fVar27" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (if_statement "if (uVar26 == 1) {\n            fVar27 = param_5[1];\n          }\n          else {\n            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));\n          }" if (parenthesized_expression "(uVar26 == 1)" ( (binary_expression "uVar26 == 1" identifier == number_literal) )) (compound_statement "{\n            fVar27 = param_5[1];\n          }" { (expression_statement "fVar27 = param_5[1];" (assignment_expression "fVar27 = param_5[1]" identifier = (subscript_expression "param_5[1]" identifier [ number_literal ])) ;) }) (else_clause "else {\n            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));\n          }" else (compound_statement "{\n            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));\n          }" { (expression_statement "fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));" (assignment_expression "fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7))" identifier = (cast_expression "(float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7))" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7))" identifier (argument_list "(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7))" ( (call_expression "CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6))" identifier (argument_list "((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6))" ( (binary_expression "(ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5)" (call_expression "(ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10)" ( (binary_expression "((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10" (parenthesized_expression "((uint)*(byte *)(param_5 + 1) << 0x18)" ( (binary_expression "(uint)*(byte *)(param_5 + 1) << 0x18" (binary_expression "(uint)*(byte *)(param_5 + 1)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(param_5 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 1)" ( (binary_expression "param_5 + 1" identifier + number_literal) )))) << number_literal) )) >> number_literal) ))) | (binary_expression "(ushort)*(byte *)((int)param_5 + 5)" (parenthesized_expression "(ushort)" ( identifier )) * (cast_expression "(byte *)((int)param_5 + 5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 5)" ( (binary_expression "(int)param_5 + 5" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) , (pointer_expression "*(byte *)((int)param_5 + 6)" * (cast_expression "(byte *)((int)param_5 + 6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 6)" ( (binary_expression "(int)param_5 + 6" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) , (pointer_expression "*(byte *)((int)param_5 + 7)" * (cast_expression "(byte *)((int)param_5 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 7)" ( (binary_expression "(int)param_5 + 7" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))))) ;) }))) (expression_statement "fVar27 = (fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);" (assignment_expression "fVar27 = (fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7)" identifier = (binary_expression "(fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7)" (parenthesized_expression "(fVar27 - (float)*(double *)(param_2 + 3))" ( (binary_expression "fVar27 - (float)*(double *)(param_2 + 3)" identifier - (cast_expression "(float)*(double *)(param_2 + 3)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_2 + 3)" * (cast_expression "(double *)(param_2 + 3)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 3)" ( (binary_expression "param_2 + 3" identifier + number_literal) )))))) )) * (cast_expression "(float)*(double *)(param_2 + 7)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_2 + 7)" * (cast_expression "(double *)(param_2 + 7)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 7)" ( (binary_expression "param_2 + 7" identifier + number_literal) ))))))) ;) (expression_statement "fVar13 = DAT_002c5824;" (assignment_expression "fVar13 = DAT_002c5824" identifier = identifier) ;) (if_statement "if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }" if (parenthesized_expression "((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828))" ( (binary_expression "(DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)" (parenthesized_expression "(DAT_002c5824 <= fVar27)" ( (binary_expression "DAT_002c5824 <= fVar27" identifier <= identifier) )) && (parenthesized_expression "(fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)" ( (comma_expression "fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828" (assignment_expression "fVar13 = DAT_002c5828" identifier = identifier) , (binary_expression "fVar27 <= DAT_002c5828" identifier <= identifier)) ))) )) (compound_statement "{\n            fVar13 = fVar27;\n          }" { (expression_statement "fVar13 = fVar27;" (assignment_expression "fVar13 = fVar27" identifier = identifier) ;) })) (expression_statement "*(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8) = (double)fVar13;" (assignment_expression "*(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8) = (double)fVar13" (pointer_expression "*(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8)" * (cast_expression "(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(iVar20 + 0x14) * 8)" ( (binary_expression "param_6 + *(int *)(iVar20 + 0x14) * 8" identifier + (binary_expression "*(int *)(iVar20 + 0x14) * 8" (pointer_expression "*(int *)(iVar20 + 0x14)" * (cast_expression "(int *)(iVar20 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x14)" ( (binary_expression "iVar20 + 0x14" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(double)fVar13" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (if_statement "if (uVar26 == 1) {\n            local_60 = param_5[2];\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));\n          }" if (parenthesized_expression "(uVar26 == 1)" ( (binary_expression "uVar26 == 1" identifier == number_literal) )) (compound_statement "{\n            local_60 = param_5[2];\n          }" { (expression_statement "local_60 = param_5[2];" (assignment_expression "local_60 = param_5[2]" identifier = (subscript_expression "param_5[2]" identifier [ number_literal ])) ;) }) (else_clause "else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));\n          }" else (compound_statement "{\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));\n          }" { (expression_statement "local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));" (assignment_expression "local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb))" identifier = (cast_expression "(float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb))" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb))" identifier (argument_list "(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb))" ( (call_expression "CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10))" identifier (argument_list "((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10))" ( (binary_expression "(ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9)" (call_expression "(ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10)" ( (binary_expression "((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10" (parenthesized_expression "((uint)*(byte *)(param_5 + 2) << 0x18)" ( (binary_expression "(uint)*(byte *)(param_5 + 2) << 0x18" (binary_expression "(uint)*(byte *)(param_5 + 2)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(param_5 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 2)" ( (binary_expression "param_5 + 2" identifier + number_literal) )))) << number_literal) )) >> number_literal) ))) | (binary_expression "(ushort)*(byte *)((int)param_5 + 9)" (parenthesized_expression "(ushort)" ( identifier )) * (cast_expression "(byte *)((int)param_5 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 9)" ( (binary_expression "(int)param_5 + 9" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) , (pointer_expression "*(byte *)((int)param_5 + 10)" * (cast_expression "(byte *)((int)param_5 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 10)" ( (binary_expression "(int)param_5 + 10" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) , (pointer_expression "*(byte *)((int)param_5 + 0xb)" * (cast_expression "(byte *)((int)param_5 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 0xb)" ( (binary_expression "(int)param_5 + 0xb" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))))) ;) }))) (expression_statement "fVar27 = (local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);" (assignment_expression "fVar27 = (local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7)" identifier = (binary_expression "(local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7)" (parenthesized_expression "(local_60 - (float)*(double *)(param_2 + 3))" ( (binary_expression "local_60 - (float)*(double *)(param_2 + 3)" identifier - (cast_expression "(float)*(double *)(param_2 + 3)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_2 + 3)" * (cast_expression "(double *)(param_2 + 3)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 3)" ( (binary_expression "param_2 + 3" identifier + number_literal) )))))) )) * (cast_expression "(float)*(double *)(param_2 + 7)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_2 + 7)" * (cast_expression "(double *)(param_2 + 7)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 7)" ( (binary_expression "param_2 + 7" identifier + number_literal) ))))))) ;) (expression_statement "fVar13 = DAT_002c5824;" (assignment_expression "fVar13 = DAT_002c5824" identifier = identifier) ;) (if_statement "if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }" if (parenthesized_expression "((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828))" ( (binary_expression "(DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)" (parenthesized_expression "(DAT_002c5824 <= fVar27)" ( (binary_expression "DAT_002c5824 <= fVar27" identifier <= identifier) )) && (parenthesized_expression "(fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)" ( (comma_expression "fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828" (assignment_expression "fVar13 = DAT_002c5828" identifier = identifier) , (binary_expression "fVar27 <= DAT_002c5828" identifier <= identifier)) ))) )) (compound_statement "{\n            fVar13 = fVar27;\n          }" { (expression_statement "fVar13 = fVar27;" (assignment_expression "fVar13 = fVar27" identifier = identifier) ;) })) (expression_statement "*(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8) = (double)fVar13;" (assignment_expression "*(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8) = (double)fVar13" (pointer_expression "*(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8)" * (cast_expression "(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(iVar20 + 0x20) * 8)" ( (binary_expression "param_6 + *(int *)(iVar20 + 0x20) * 8" identifier + (binary_expression "*(int *)(iVar20 + 0x20) * 8" (pointer_expression "*(int *)(iVar20 + 0x20)" * (cast_expression "(int *)(iVar20 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x20)" ( (binary_expression "iVar20 + 0x20" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(double)fVar13" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (if_statement "if (uVar26 == 1) {\n            fVar27 = param_5[3];\n            local_6c = SUB41(fVar27,0);\n            bStack_6b = (byte)((uint)fVar27 >> 8);\n            uStack_6a = (ushort)((uint)fVar27 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);\n            bStack_6b = *(byte *)((int)param_5 + 0xe);\n            local_6c = *(byte *)((int)param_5 + 0xf);\n          }" if (parenthesized_expression "(uVar26 == 1)" ( (binary_expression "uVar26 == 1" identifier == number_literal) )) (compound_statement "{\n            fVar27 = param_5[3];\n            local_6c = SUB41(fVar27,0);\n            bStack_6b = (byte)((uint)fVar27 >> 8);\n            uStack_6a = (ushort)((uint)fVar27 >> 0x10);\n          }" { (expression_statement "fVar27 = param_5[3];" (assignment_expression "fVar27 = param_5[3]" identifier = (subscript_expression "param_5[3]" identifier [ number_literal ])) ;) (expression_statement "local_6c = SUB41(fVar27,0);" (assignment_expression "local_6c = SUB41(fVar27,0)" identifier = (call_expression "SUB41(fVar27,0)" identifier (argument_list "(fVar27,0)" ( identifier , number_literal )))) ;) (expression_statement "bStack_6b = (byte)((uint)fVar27 >> 8);" (assignment_expression "bStack_6b = (byte)((uint)fVar27 >> 8)" identifier = (call_expression "(byte)((uint)fVar27 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar27 >> 8)" ( (binary_expression "(uint)fVar27 >> 8" (cast_expression "(uint)fVar27" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uStack_6a = (ushort)((uint)fVar27 >> 0x10);" (assignment_expression "uStack_6a = (ushort)((uint)fVar27 >> 0x10)" identifier = (call_expression "(ushort)((uint)fVar27 >> 0x10)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "((uint)fVar27 >> 0x10)" ( (binary_expression "(uint)fVar27 >> 0x10" (cast_expression "(uint)fVar27" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) }) (else_clause "else {\n            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);\n            bStack_6b = *(byte *)((int)param_5 + 0xe);\n            local_6c = *(byte *)((int)param_5 + 0xf);\n          }" else (compound_statement "{\n            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);\n            bStack_6b = *(byte *)((int)param_5 + 0xe);\n            local_6c = *(byte *)((int)param_5 + 0xf);\n          }" { (expression_statement "uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);" (assignment_expression "uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd)" identifier = (binary_expression "(ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd)" (call_expression "(ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10)" ( (binary_expression "((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10" (parenthesized_expression "((uint)*(byte *)(param_5 + 3) << 0x18)" ( (binary_expression "(uint)*(byte *)(param_5 + 3) << 0x18" (binary_expression "(uint)*(byte *)(param_5 + 3)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(param_5 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 3)" ( (binary_expression "param_5 + 3" identifier + number_literal) )))) << number_literal) )) >> number_literal) ))) | (binary_expression "(ushort)*(byte *)((int)param_5 + 0xd)" (parenthesized_expression "(ushort)" ( identifier )) * (cast_expression "(byte *)((int)param_5 + 0xd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 0xd)" ( (binary_expression "(int)param_5 + 0xd" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ;) (expression_statement "bStack_6b = *(byte *)((int)param_5 + 0xe);" (assignment_expression "bStack_6b = *(byte *)((int)param_5 + 0xe)" identifier = (pointer_expression "*(byte *)((int)param_5 + 0xe)" * (cast_expression "(byte *)((int)param_5 + 0xe)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 0xe)" ( (binary_expression "(int)param_5 + 0xe" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "local_6c = *(byte *)((int)param_5 + 0xf);" (assignment_expression "local_6c = *(byte *)((int)param_5 + 0xf)" identifier = (pointer_expression "*(byte *)((int)param_5 + 0xf)" * (cast_expression "(byte *)((int)param_5 + 0xf)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + 0xf)" ( (binary_expression "(int)param_5 + 0xf" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }))) (expression_statement "fVar27 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);" (assignment_expression "fVar27 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7)" identifier = (binary_expression "((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7)" (parenthesized_expression "((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3))" ( (binary_expression "(float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)" (cast_expression "(float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" identifier (argument_list "(uStack_6a,CONCAT11(bStack_6b,local_6c))" ( identifier , (call_expression "CONCAT11(bStack_6b,local_6c)" identifier (argument_list "(bStack_6b,local_6c)" ( identifier , identifier ))) )))) - (cast_expression "(float)*(double *)(param_2 + 3)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_2 + 3)" * (cast_expression "(double *)(param_2 + 3)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 3)" ( (binary_expression "param_2 + 3" identifier + number_literal) )))))) )) * (cast_expression "(float)*(double *)(param_2 + 7)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_2 + 7)" * (cast_expression "(double *)(param_2 + 7)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 7)" ( (binary_expression "param_2 + 7" identifier + number_literal) ))))))) ;) (expression_statement "fVar13 = DAT_002c5824;" (assignment_expression "fVar13 = DAT_002c5824" identifier = identifier) ;) (if_statement "if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }" if (parenthesized_expression "((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828))" ( (binary_expression "(DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)" (parenthesized_expression "(DAT_002c5824 <= fVar27)" ( (binary_expression "DAT_002c5824 <= fVar27" identifier <= identifier) )) && (parenthesized_expression "(fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)" ( (comma_expression "fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828" (assignment_expression "fVar13 = DAT_002c5828" identifier = identifier) , (binary_expression "fVar27 <= DAT_002c5828" identifier <= identifier)) ))) )) (compound_statement "{\n            fVar13 = fVar27;\n          }" { (expression_statement "fVar13 = fVar27;" (assignment_expression "fVar13 = fVar27" identifier = identifier) ;) })) (if_statement "if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);\n          }" if (parenthesized_expression "(*(int *)(iVar20 + 0x34) != 0)" ( (binary_expression "*(int *)(iVar20 + 0x34) != 0" (pointer_expression "*(int *)(iVar20 + 0x34)" * (cast_expression "(int *)(iVar20 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x34)" ( (binary_expression "iVar20 + 0x34" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n            *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);\n          }" { (expression_statement "*(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);" (assignment_expression "*(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13)" (pointer_expression "*(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8)" * (cast_expression "(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(iVar20 + 0x38) * 8)" ( (binary_expression "param_6 + *(int *)(iVar20 + 0x38) * 8" identifier + (binary_expression "*(int *)(iVar20 + 0x38) * 8" (pointer_expression "*(int *)(iVar20 + 0x38)" * (cast_expression "(int *)(iVar20 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x38)" ( (binary_expression "iVar20 + 0x38" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(double)(DAT_0029f710 - fVar13)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(DAT_0029f710 - fVar13)" ( (binary_expression "DAT_0029f710 - fVar13" identifier - identifier) )))) ;) })) (expression_statement "local_5c = (double *)((int)local_5c + 1);" (assignment_expression "local_5c = (double *)((int)local_5c + 1)" identifier = (cast_expression "(double *)((int)local_5c + 1)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_5c + 1)" ( (binary_expression "(int)local_5c + 1" (cast_expression "(int)local_5c" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "param_5 = (float *)((int)param_5 + uVar22 + 0x10);" (assignment_expression "param_5 = (float *)((int)param_5 + uVar22 + 0x10)" identifier = (cast_expression "(float *)((int)param_5 + uVar22 + 0x10)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + uVar22 + 0x10)" ( (binary_expression "(int)param_5 + uVar22 + 0x10" (binary_expression "(int)param_5 + uVar22" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ;) (expression_statement "param_6 = param_6 + iVar33 * 8;" (assignment_expression "param_6 = param_6 + iVar33 * 8" identifier = (binary_expression "param_6 + iVar33 * 8" identifier + (binary_expression "iVar33 * 8" identifier * number_literal))) ;) }) while (parenthesized_expression "(local_5c != (double *)param_3)" ( (binary_expression "local_5c != (double *)param_3" identifier != (cast_expression "(double *)param_3" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) )) ;) })) (break_statement "break;" break ;) })) (labeled_statement "code_r0x001616dd:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        fVar17 = DAT_002a7fec;\n        fVar27 = param_5[3];\n        fVar9 = param_5[1];\n        pdVar21 = (double *)(iVar6 * 8 + param_6);\n        fVar10 = param_5[2];\n        pdVar30 = (double *)(iVar24 * 8 + param_6);\n        fVar11 = *param_5;\n        pdVar28 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec);\n          *pdVar21 = (double)((float)(uint)fVar9 / fVar17);\n          *pdVar28 = (double)((float)(uint)fVar10 / fVar17);\n        }\n        else {\n          uVar3 = (ushort)((uint)fVar11 >> 8);\n          uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);\n          fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          *pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13);\n          *pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);\n          *pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 0x10);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }" statement_identifier : (if_statement "if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        fVar17 = DAT_002a7fec;\n        fVar27 = param_5[3];\n        fVar9 = param_5[1];\n        pdVar21 = (double *)(iVar6 * 8 + param_6);\n        fVar10 = param_5[2];\n        pdVar30 = (double *)(iVar24 * 8 + param_6);\n        fVar11 = *param_5;\n        pdVar28 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec);\n          *pdVar21 = (double)((float)(uint)fVar9 / fVar17);\n          *pdVar28 = (double)((float)(uint)fVar10 / fVar17);\n        }\n        else {\n          uVar3 = (ushort)((uint)fVar11 >> 8);\n          uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);\n          fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          *pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13);\n          *pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);\n          *pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 0x10);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }" if (parenthesized_expression "(0 < param_3)" ( (binary_expression "0 < param_3" number_literal < identifier) )) (compound_statement "{\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        fVar17 = DAT_002a7fec;\n        fVar27 = param_5[3];\n        fVar9 = param_5[1];\n        pdVar21 = (double *)(iVar6 * 8 + param_6);\n        fVar10 = param_5[2];\n        pdVar30 = (double *)(iVar24 * 8 + param_6);\n        fVar11 = *param_5;\n        pdVar28 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec);\n          *pdVar21 = (double)((float)(uint)fVar9 / fVar17);\n          *pdVar28 = (double)((float)(uint)fVar10 / fVar17);\n        }\n        else {\n          uVar3 = (ushort)((uint)fVar11 >> 8);\n          uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);\n          fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          *pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13);\n          *pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);\n          *pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 0x10);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }" { (expression_statement "iVar20 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar20 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) (expression_statement "uVar22 = param_2[0x10];" (assignment_expression "uVar22 = param_2[0x10]" identifier = (subscript_expression "param_2[0x10]" identifier [ number_literal ])) ;) (expression_statement "uVar26 = param_2[9];" (assignment_expression "uVar26 = param_2[9]" identifier = (subscript_expression "param_2[9]" identifier [ number_literal ])) ;) (expression_statement "iVar33 = *(int *)(param_1 + 0x298);" (assignment_expression "iVar33 = *(int *)(param_1 + 0x298)" identifier = (pointer_expression "*(int *)(param_1 + 0x298)" * (cast_expression "(int *)(param_1 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) ))))) ;) (expression_statement "iVar24 = *(int *)(iVar20 + 8);" (assignment_expression "iVar24 = *(int *)(iVar20 + 8)" identifier = (pointer_expression "*(int *)(iVar20 + 8)" * (cast_expression "(int *)(iVar20 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 8)" ( (binary_expression "iVar20 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = *(int *)(iVar20 + 0x14);" (assignment_expression "iVar6 = *(int *)(iVar20 + 0x14)" identifier = (pointer_expression "*(int *)(iVar20 + 0x14)" * (cast_expression "(int *)(iVar20 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x14)" ( (binary_expression "iVar20 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = *(int *)(iVar20 + 0x20);" (assignment_expression "iVar7 = *(int *)(iVar20 + 0x20)" identifier = (pointer_expression "*(int *)(iVar20 + 0x20)" * (cast_expression "(int *)(iVar20 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x20)" ( (binary_expression "iVar20 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = *(int *)(iVar20 + 0x34);" (assignment_expression "iVar8 = *(int *)(iVar20 + 0x34)" identifier = (pointer_expression "*(int *)(iVar20 + 0x34)" * (cast_expression "(int *)(iVar20 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x34)" ( (binary_expression "iVar20 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "iVar32 = 0;" (assignment_expression "iVar32 = 0" identifier = number_literal) ;) (do_statement "do {\n        fVar17 = DAT_002a7fec;\n        fVar27 = param_5[3];\n        fVar9 = param_5[1];\n        pdVar21 = (double *)(iVar6 * 8 + param_6);\n        fVar10 = param_5[2];\n        pdVar30 = (double *)(iVar24 * 8 + param_6);\n        fVar11 = *param_5;\n        pdVar28 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec);\n          *pdVar21 = (double)((float)(uint)fVar9 / fVar17);\n          *pdVar28 = (double)((float)(uint)fVar10 / fVar17);\n        }\n        else {\n          uVar3 = (ushort)((uint)fVar11 >> 8);\n          uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);\n          fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          *pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13);\n          *pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);\n          *pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 0x10);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);" do (compound_statement "{\n        fVar17 = DAT_002a7fec;\n        fVar27 = param_5[3];\n        fVar9 = param_5[1];\n        pdVar21 = (double *)(iVar6 * 8 + param_6);\n        fVar10 = param_5[2];\n        pdVar30 = (double *)(iVar24 * 8 + param_6);\n        fVar11 = *param_5;\n        pdVar28 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec);\n          *pdVar21 = (double)((float)(uint)fVar9 / fVar17);\n          *pdVar28 = (double)((float)(uint)fVar10 / fVar17);\n        }\n        else {\n          uVar3 = (ushort)((uint)fVar11 >> 8);\n          uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);\n          fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          *pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13);\n          *pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);\n          *pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 0x10);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      }" { (expression_statement "fVar17 = DAT_002a7fec;" (assignment_expression "fVar17 = DAT_002a7fec" identifier = identifier) ;) (expression_statement "fVar27 = param_5[3];" (assignment_expression "fVar27 = param_5[3]" identifier = (subscript_expression "param_5[3]" identifier [ number_literal ])) ;) (expression_statement "fVar9 = param_5[1];" (assignment_expression "fVar9 = param_5[1]" identifier = (subscript_expression "param_5[1]" identifier [ number_literal ])) ;) (expression_statement "pdVar21 = (double *)(iVar6 * 8 + param_6);" (assignment_expression "pdVar21 = (double *)(iVar6 * 8 + param_6)" identifier = (cast_expression "(double *)(iVar6 * 8 + param_6)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 * 8 + param_6)" ( (binary_expression "iVar6 * 8 + param_6" (binary_expression "iVar6 * 8" identifier * number_literal) + identifier) )))) ;) (expression_statement "fVar10 = param_5[2];" (assignment_expression "fVar10 = param_5[2]" identifier = (subscript_expression "param_5[2]" identifier [ number_literal ])) ;) (expression_statement "pdVar30 = (double *)(iVar24 * 8 + param_6);" (assignment_expression "pdVar30 = (double *)(iVar24 * 8 + param_6)" identifier = (cast_expression "(double *)(iVar24 * 8 + param_6)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar24 * 8 + param_6)" ( (binary_expression "iVar24 * 8 + param_6" (binary_expression "iVar24 * 8" identifier * number_literal) + identifier) )))) ;) (expression_statement "fVar11 = *param_5;" (assignment_expression "fVar11 = *param_5" identifier = (pointer_expression "*param_5" * identifier)) ;) (expression_statement "pdVar28 = (double *)(iVar7 * 8 + param_6);" (assignment_expression "pdVar28 = (double *)(iVar7 * 8 + param_6)" identifier = (cast_expression "(double *)(iVar7 * 8 + param_6)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 * 8 + param_6)" ( (binary_expression "iVar7 * 8 + param_6" (binary_expression "iVar7 * 8" identifier * number_literal) + identifier) )))) ;) (if_statement "if (uVar22 == 1) {\n          *pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec);\n          *pdVar21 = (double)((float)(uint)fVar9 / fVar17);\n          *pdVar28 = (double)((float)(uint)fVar10 / fVar17);\n        }\n        else {\n          uVar3 = (ushort)((uint)fVar11 >> 8);\n          uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);\n          fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          *pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13);\n          *pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);\n          *pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);\n        }" if (parenthesized_expression "(uVar22 == 1)" ( (binary_expression "uVar22 == 1" identifier == number_literal) )) (compound_statement "{\n          *pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec);\n          *pdVar21 = (double)((float)(uint)fVar9 / fVar17);\n          *pdVar28 = (double)((float)(uint)fVar10 / fVar17);\n        }" { (expression_statement "*pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec);" (assignment_expression "*pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec)" (pointer_expression "*pdVar30" * identifier) = (cast_expression "(double)((float)(uint)fVar11 / DAT_002a7fec)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((float)(uint)fVar11 / DAT_002a7fec)" ( (binary_expression "(float)(uint)fVar11 / DAT_002a7fec" (cast_expression "(float)(uint)fVar11" ( (type_descriptor "float" primitive_type) ) (cast_expression "(uint)fVar11" ( (type_descriptor "uint" type_identifier) ) identifier)) / identifier) )))) ;) (expression_statement "*pdVar21 = (double)((float)(uint)fVar9 / fVar17);" (assignment_expression "*pdVar21 = (double)((float)(uint)fVar9 / fVar17)" (pointer_expression "*pdVar21" * identifier) = (cast_expression "(double)((float)(uint)fVar9 / fVar17)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((float)(uint)fVar9 / fVar17)" ( (binary_expression "(float)(uint)fVar9 / fVar17" (cast_expression "(float)(uint)fVar9" ( (type_descriptor "float" primitive_type) ) (cast_expression "(uint)fVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) / identifier) )))) ;) (expression_statement "*pdVar28 = (double)((float)(uint)fVar10 / fVar17);" (assignment_expression "*pdVar28 = (double)((float)(uint)fVar10 / fVar17)" (pointer_expression "*pdVar28" * identifier) = (cast_expression "(double)((float)(uint)fVar10 / fVar17)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((float)(uint)fVar10 / fVar17)" ( (binary_expression "(float)(uint)fVar10 / fVar17" (cast_expression "(float)(uint)fVar10" ( (type_descriptor "float" primitive_type) ) (cast_expression "(uint)fVar10" ( (type_descriptor "uint" type_identifier) ) identifier)) / identifier) )))) ;) }) (else_clause "else {\n          uVar3 = (ushort)((uint)fVar11 >> 8);\n          uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);\n          fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          *pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13);\n          *pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);\n          *pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);\n        }" else (compound_statement "{\n          uVar3 = (ushort)((uint)fVar11 >> 8);\n          uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);\n          fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          *pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13);\n          *pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);\n          *pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);\n        }" { (expression_statement "uVar3 = (ushort)((uint)fVar11 >> 8);" (assignment_expression "uVar3 = (ushort)((uint)fVar11 >> 8)" identifier = (call_expression "(ushort)((uint)fVar11 >> 8)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "((uint)fVar11 >> 8)" ( (binary_expression "(uint)fVar11 >> 8" (cast_expression "(uint)fVar11" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);" (assignment_expression "uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10)" identifier = (binary_expression "uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10)" (binary_expression "uVar3 & 0xff" identifier & number_literal) | (call_expression "(ushort)((uint)((int)fVar11 << 0x18) >> 0x10)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "((uint)((int)fVar11 << 0x18) >> 0x10)" ( (binary_expression "(uint)((int)fVar11 << 0x18) >> 0x10" (call_expression "(uint)((int)fVar11 << 0x18)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)fVar11 << 0x18)" ( (binary_expression "(int)fVar11 << 0x18" (cast_expression "(int)fVar11" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) ))) >> number_literal) ))))) ;) (expression_statement "fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);" (assignment_expression "fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18)" identifier = (cast_expression "(float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18)" ( (binary_expression "(uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18" (binary_expression "(uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8" (binary_expression "(uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8" (binary_expression "(uint)fVar27 >> 0x18" (cast_expression "(uint)fVar27" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) | (binary_expression "((uint)fVar27 & 0xff0000) >> 8" (parenthesized_expression "((uint)fVar27 & 0xff0000)" ( (binary_expression "(uint)fVar27 & 0xff0000" (cast_expression "(uint)fVar27" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) >> number_literal)) | (binary_expression "((uint)fVar27 & 0xff00) << 8" (parenthesized_expression "((uint)fVar27 & 0xff00)" ( (binary_expression "(uint)fVar27 & 0xff00" (cast_expression "(uint)fVar27" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) << number_literal)) | (binary_expression "(int)fVar27 << 0x18" (cast_expression "(int)fVar27" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal)) )))) ;) (expression_statement "*pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13);" (assignment_expression "*pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13)" (pointer_expression "*pdVar30" * identifier) = (cast_expression "(double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13)" ( (binary_expression "(float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13" (cast_expression "(float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)" identifier (argument_list "(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)" ( identifier , (binary_expression "(ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00" (call_expression "(ushort)(byte)((uint)fVar11 >> 0x18)" (call_expression "(ushort)(byte)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "((uint)fVar11 >> 0x18)" ( (binary_expression "(uint)fVar11 >> 0x18" (cast_expression "(uint)fVar11" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) ))) | (binary_expression "uVar3 & 0xff00" identifier & number_literal)) )))) / identifier) )))) ;) (expression_statement "*pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);" (assignment_expression "*pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13)" (pointer_expression "*pdVar21" * identifier) = (cast_expression "(double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13)" ( (binary_expression "(float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13" (cast_expression "(float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18)" ( (binary_expression "(uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18" (binary_expression "(uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8" (binary_expression "(uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8" (binary_expression "(uint)fVar9 >> 0x18" (cast_expression "(uint)fVar9" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) | (binary_expression "((uint)fVar9 & 0xff0000) >> 8" (parenthesized_expression "((uint)fVar9 & 0xff0000)" ( (binary_expression "(uint)fVar9 & 0xff0000" (cast_expression "(uint)fVar9" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) >> number_literal)) | (binary_expression "((uint)fVar9 & 0xff00) << 8" (parenthesized_expression "((uint)fVar9 & 0xff00)" ( (binary_expression "(uint)fVar9 & 0xff00" (cast_expression "(uint)fVar9" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) << number_literal)) | (binary_expression "(int)fVar9 << 0x18" (cast_expression "(int)fVar9" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal)) ))) / identifier) )))) ;) (expression_statement "*pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);" (assignment_expression "*pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13)" (pointer_expression "*pdVar28" * identifier) = (cast_expression "(double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13)" ( (binary_expression "(float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13" (cast_expression "(float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18)" ( (binary_expression "(uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18" (binary_expression "(uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8" (binary_expression "(uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8" (binary_expression "(uint)fVar10 >> 0x18" (cast_expression "(uint)fVar10" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) | (binary_expression "((uint)fVar10 & 0xff0000) >> 8" (parenthesized_expression "((uint)fVar10 & 0xff0000)" ( (binary_expression "(uint)fVar10 & 0xff0000" (cast_expression "(uint)fVar10" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) >> number_literal)) | (binary_expression "((uint)fVar10 & 0xff00) << 8" (parenthesized_expression "((uint)fVar10 & 0xff00)" ( (binary_expression "(uint)fVar10 & 0xff00" (cast_expression "(uint)fVar10" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) << number_literal)) | (binary_expression "(int)fVar10 << 0x18" (cast_expression "(int)fVar10" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal)) ))) / identifier) )))) ;) }))) (if_statement "if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec);\n        }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec);\n        }" { (expression_statement "*(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec);" (assignment_expression "*(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec)" (pointer_expression "*(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8)" * (cast_expression "(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(iVar20 + 0x38) * 8)" ( (binary_expression "param_6 + *(int *)(iVar20 + 0x38) * 8" identifier + (binary_expression "*(int *)(iVar20 + 0x38) * 8" (pointer_expression "*(int *)(iVar20 + 0x38)" * (cast_expression "(int *)(iVar20 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x38)" ( (binary_expression "iVar20 + 0x38" identifier + number_literal) )))) * number_literal)) )))) = (cast_expression "(double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec)" ( (binary_expression "DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec" identifier - (binary_expression "(float)(uint)fVar27 / DAT_002a7fec" (cast_expression "(float)(uint)fVar27" ( (type_descriptor "float" primitive_type) ) (cast_expression "(uint)fVar27" ( (type_descriptor "uint" type_identifier) ) identifier)) / identifier)) )))) ;) })) (expression_statement "param_5 = (float *)((int)param_5 + uVar26 + 0x10);" (assignment_expression "param_5 = (float *)((int)param_5 + uVar26 + 0x10)" identifier = (cast_expression "(float *)((int)param_5 + uVar26 + 0x10)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_5 + uVar26 + 0x10)" ( (binary_expression "(int)param_5 + uVar26 + 0x10" (binary_expression "(int)param_5 + uVar26" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ;) (expression_statement "iVar32 = iVar32 + 1;" (assignment_expression "iVar32 = iVar32 + 1" identifier = (binary_expression "iVar32 + 1" identifier + number_literal)) ;) (expression_statement "param_6 = param_6 + iVar33 * 8;" (assignment_expression "param_6 = param_6 + iVar33 * 8" identifier = (binary_expression "param_6 + iVar33 * 8" identifier + (binary_expression "iVar33 * 8" identifier * number_literal))) ;) }) while (parenthesized_expression "(iVar32 != param_3)" ( (binary_expression "iVar32 != param_3" identifier != identifier) )) ;) }))) (break_statement "break;" break ;)) (case_statement "case 0x40:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }\nLAB_00161285:\n    uVar26 = 0;\n    if (uVar22 < 0x41) {\n      uVar26 = uVar22;\n    }\n    bVar23 = (byte)(uVar26 - 1);\n    bVar12 = bVar23 & 0x1f;\n    uVar18 = 2 << (bVar23 & 0x1f);\n    uVar19 = uVar18;\n    uVar29 = 0 << bVar12 | 2U >> 0x20 - bVar12;\n    if ((uVar26 - 1 & 0x20) != 0) {\n      uVar19 = 0;\n      uVar29 = uVar18;\n    }\n    iVar20 = uVar19 - 1;\n    local_68 = (uVar29 - 1) + (uint)(uVar19 != 0);\n    local_6c = (byte)iVar20;\n    bStack_6b = (byte)((uint)iVar20 >> 8);\n    uStack_6a = (ushort)((uint)iVar20 >> 0x10);\nLAB_001612bc:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      local_64 = 0.0;\n      iVar33 = *(int *)(iVar20 + 8);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(param_1 + 0x298);\n      do {\n        pdVar28 = (double *)(iVar33 * 8 + local_78);\n        pdVar21 = (double *)(local_78 + iVar24 * 8);\n        if ((int)uVar22 < 1) {\n          fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (local_68 < 0) {\n            fVar27 = fVar27 + DAT_0029f714;\n          }\n          local_3c = (double)fVar27;\n          if (local_3c < dVar16) {\n            *pdVar28 = 0.0;\n          }\n          else {\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }\n          dVar15 = 0.0;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\nLAB_00161a0c:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          *pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710;\n          if (0 < (int)uVar22) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar15 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar15 = 0.0;\nLAB_00161c0a:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar15 = dVar14 * dVar15 * (double)DAT_0029f710;\n        }\n        else {\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {\n            *pdVar28 = (double)DAT_0029f710;\n          }\n          else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }\n          *pdVar21 = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }\n          dVar15 = (double)DAT_0029f710;\n        }\n        if (*(int *)(iVar20 + 0x34) != 0) {\n          *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15;\n        }\n        local_64 = (float)((int)local_64 + 1);\n        local_78 = local_78 + iVar6 * 8;\n      } while (local_64 != (float)param_3);\n    }" case number_literal : (if_statement "if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }" if (parenthesized_expression "(param_2[2] == 1)" ( (binary_expression "param_2[2] == 1" (subscript_expression "param_2[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }" { (if_statement "if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }" if (parenthesized_expression "(0 < param_3)" ( (binary_expression "0 < param_3" number_literal < identifier) )) (compound_statement "{\n        iVar20 = 0;\n        do {\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }" { (expression_statement "iVar20 = 0;" (assignment_expression "iVar20 = 0" identifier = number_literal) ;) (do_statement "do {\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);" do (compound_statement "{\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        }" { (expression_statement "FUN_00159410();" (call_expression "FUN_00159410()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) =\n               CONCAT44(uStack_28,fStack_2c);" (assignment_expression "*(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) =\n               CONCAT44(uStack_28,fStack_2c)" (pointer_expression "*(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" * (cast_expression "(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" ( (type_descriptor "ulonglong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" ( (binary_expression "param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 8)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 8" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) = (call_expression "CONCAT44(uStack_28,fStack_2c)" identifier (argument_list "(uStack_28,fStack_2c)" ( identifier , identifier )))) ;) (expression_statement "FUN_00159410();" (call_expression "FUN_00159410()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) =\n               CONCAT44(uStack_28,fStack_2c);" (assignment_expression "*(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) =\n               CONCAT44(uStack_28,fStack_2c)" (pointer_expression "*(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" * (cast_expression "(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" ( (type_descriptor "ulonglong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" ( (binary_expression "param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x14)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x14" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) = (call_expression "CONCAT44(uStack_28,fStack_2c)" identifier (argument_list "(uStack_28,fStack_2c)" ( identifier , identifier )))) ;) (expression_statement "FUN_00159410();" (call_expression "FUN_00159410()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) =\n               CONCAT44(uStack_28,fStack_2c);" (assignment_expression "*(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) =\n               CONCAT44(uStack_28,fStack_2c)" (pointer_expression "*(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" * (cast_expression "(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" ( (type_descriptor "ulonglong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" ( (binary_expression "param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x20)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x20" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) = (call_expression "CONCAT44(uStack_28,fStack_2c)" identifier (argument_list "(uStack_28,fStack_2c)" ( identifier , identifier )))) ;) (expression_statement "FUN_00159410();" (call_expression "FUN_00159410()" identifier (argument_list "()" ( ))) ;) (if_statement "if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));\n          }" if (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0)" ( (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x34)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x34" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));\n          }" { (expression_statement "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));" (assignment_expression "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c))" (pointer_expression "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" * (cast_expression "(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" ( (binary_expression "param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" identifier + (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x38)" ( (binary_expression "*(int *)(param_1 + 0x2a8) + 0x38" (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) = (cast_expression "(double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c))" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c))" ( (binary_expression "DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c)" identifier - (cast_expression "(float)(double)CONCAT44(uStack_28,fStack_2c)" ( (type_descriptor "float" primitive_type) ) (cast_expression "(double)CONCAT44(uStack_28,fStack_2c)" ( (type_descriptor "double" primitive_type) ) (call_expression "CONCAT44(uStack_28,fStack_2c)" identifier (argument_list "(uStack_28,fStack_2c)" ( identifier , identifier )))))) )))) ;) })) (expression_statement "iVar20 = iVar20 + 1;" (assignment_expression "iVar20 = iVar20 + 1" identifier = (binary_expression "iVar20 + 1" identifier + number_literal)) ;) (expression_statement "param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;" (assignment_expression "param_6 = param_6 + *(int *)(param_1 + 0x298) * 8" identifier = (binary_expression "param_6 + *(int *)(param_1 + 0x298) * 8" identifier + (binary_expression "*(int *)(param_1 + 0x298) * 8" (pointer_expression "*(int *)(param_1 + 0x298)" * (cast_expression "(int *)(param_1 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) )))) * number_literal))) ;) }) while (parenthesized_expression "(iVar20 != param_3)" ( (binary_expression "iVar20 != param_3" identifier != identifier) )) ;) })) (break_statement "break;" break ;) })) (labeled_statement "LAB_00161285:\n    uVar26 = 0;" statement_identifier : (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" identifier = number_literal) ;)) (if_statement "if (uVar22 < 0x41) {\n      uVar26 = uVar22;\n    }" if (parenthesized_expression "(uVar22 < 0x41)" ( (binary_expression "uVar22 < 0x41" identifier < number_literal) )) (compound_statement "{\n      uVar26 = uVar22;\n    }" { (expression_statement "uVar26 = uVar22;" (assignment_expression "uVar26 = uVar22" identifier = identifier) ;) })) (expression_statement "bVar23 = (byte)(uVar26 - 1);" (assignment_expression "bVar23 = (byte)(uVar26 - 1)" identifier = (call_expression "(byte)(uVar26 - 1)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar26 - 1)" ( (binary_expression "uVar26 - 1" identifier - number_literal) )))) ;) (expression_statement "bVar12 = bVar23 & 0x1f;" (assignment_expression "bVar12 = bVar23 & 0x1f" identifier = (binary_expression "bVar23 & 0x1f" identifier & number_literal)) ;) (expression_statement "uVar18 = 2 << (bVar23 & 0x1f);" (assignment_expression "uVar18 = 2 << (bVar23 & 0x1f)" identifier = (binary_expression "2 << (bVar23 & 0x1f)" number_literal << (parenthesized_expression "(bVar23 & 0x1f)" ( (binary_expression "bVar23 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar19 = uVar18;" (assignment_expression "uVar19 = uVar18" identifier = identifier) ;) (expression_statement "uVar29 = 0 << bVar12 | 2U >> 0x20 - bVar12;" (assignment_expression "uVar29 = 0 << bVar12 | 2U >> 0x20 - bVar12" identifier = (binary_expression "0 << bVar12 | 2U >> 0x20 - bVar12" (binary_expression "0 << bVar12" number_literal << identifier) | (binary_expression "2U >> 0x20 - bVar12" number_literal >> (binary_expression "0x20 - bVar12" number_literal - identifier)))) ;) (if_statement "if ((uVar26 - 1 & 0x20) != 0) {\n      uVar19 = 0;\n      uVar29 = uVar18;\n    }" if (parenthesized_expression "((uVar26 - 1 & 0x20) != 0)" ( (binary_expression "(uVar26 - 1 & 0x20) != 0" (parenthesized_expression "(uVar26 - 1 & 0x20)" ( (binary_expression "uVar26 - 1 & 0x20" (binary_expression "uVar26 - 1" identifier - number_literal) & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar19 = 0;\n      uVar29 = uVar18;\n    }" { (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) (expression_statement "uVar29 = uVar18;" (assignment_expression "uVar29 = uVar18" identifier = identifier) ;) })) (expression_statement "iVar20 = uVar19 - 1;" (assignment_expression "iVar20 = uVar19 - 1" identifier = (binary_expression "uVar19 - 1" identifier - number_literal)) ;) (expression_statement "local_68 = (uVar29 - 1) + (uint)(uVar19 != 0);" (assignment_expression "local_68 = (uVar29 - 1) + (uint)(uVar19 != 0)" identifier = (binary_expression "(uVar29 - 1) + (uint)(uVar19 != 0)" (parenthesized_expression "(uVar29 - 1)" ( (binary_expression "uVar29 - 1" identifier - number_literal) )) + (call_expression "(uint)(uVar19 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar19 != 0)" ( (binary_expression "uVar19 != 0" identifier != number_literal) ))))) ;) (expression_statement "local_6c = (byte)iVar20;" (assignment_expression "local_6c = (byte)iVar20" identifier = (cast_expression "(byte)iVar20" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "bStack_6b = (byte)((uint)iVar20 >> 8);" (assignment_expression "bStack_6b = (byte)((uint)iVar20 >> 8)" identifier = (call_expression "(byte)((uint)iVar20 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)iVar20 >> 8)" ( (binary_expression "(uint)iVar20 >> 8" (cast_expression "(uint)iVar20" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uStack_6a = (ushort)((uint)iVar20 >> 0x10);" (assignment_expression "uStack_6a = (ushort)((uint)iVar20 >> 0x10)" identifier = (call_expression "(ushort)((uint)iVar20 >> 0x10)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "((uint)iVar20 >> 0x10)" ( (binary_expression "(uint)iVar20 >> 0x10" (cast_expression "(uint)iVar20" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (labeled_statement "LAB_001612bc:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      local_64 = 0.0;\n      iVar33 = *(int *)(iVar20 + 8);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(param_1 + 0x298);\n      do {\n        pdVar28 = (double *)(iVar33 * 8 + local_78);\n        pdVar21 = (double *)(local_78 + iVar24 * 8);\n        if ((int)uVar22 < 1) {\n          fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (local_68 < 0) {\n            fVar27 = fVar27 + DAT_0029f714;\n          }\n          local_3c = (double)fVar27;\n          if (local_3c < dVar16) {\n            *pdVar28 = 0.0;\n          }\n          else {\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }\n          dVar15 = 0.0;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\nLAB_00161a0c:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          *pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710;\n          if (0 < (int)uVar22) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar15 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar15 = 0.0;\nLAB_00161c0a:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar15 = dVar14 * dVar15 * (double)DAT_0029f710;\n        }\n        else {\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {\n            *pdVar28 = (double)DAT_0029f710;\n          }\n          else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }\n          *pdVar21 = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }\n          dVar15 = (double)DAT_0029f710;\n        }\n        if (*(int *)(iVar20 + 0x34) != 0) {\n          *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15;\n        }\n        local_64 = (float)((int)local_64 + 1);\n        local_78 = local_78 + iVar6 * 8;\n      } while (local_64 != (float)param_3);\n    }" statement_identifier : (if_statement "if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      local_64 = 0.0;\n      iVar33 = *(int *)(iVar20 + 8);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(param_1 + 0x298);\n      do {\n        pdVar28 = (double *)(iVar33 * 8 + local_78);\n        pdVar21 = (double *)(local_78 + iVar24 * 8);\n        if ((int)uVar22 < 1) {\n          fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (local_68 < 0) {\n            fVar27 = fVar27 + DAT_0029f714;\n          }\n          local_3c = (double)fVar27;\n          if (local_3c < dVar16) {\n            *pdVar28 = 0.0;\n          }\n          else {\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }\n          dVar15 = 0.0;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\nLAB_00161a0c:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          *pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710;\n          if (0 < (int)uVar22) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar15 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar15 = 0.0;\nLAB_00161c0a:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar15 = dVar14 * dVar15 * (double)DAT_0029f710;\n        }\n        else {\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {\n            *pdVar28 = (double)DAT_0029f710;\n          }\n          else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }\n          *pdVar21 = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }\n          dVar15 = (double)DAT_0029f710;\n        }\n        if (*(int *)(iVar20 + 0x34) != 0) {\n          *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15;\n        }\n        local_64 = (float)((int)local_64 + 1);\n        local_78 = local_78 + iVar6 * 8;\n      } while (local_64 != (float)param_3);\n    }" if (parenthesized_expression "(0 < param_3)" ( (binary_expression "0 < param_3" number_literal < identifier) )) (compound_statement "{\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      local_64 = 0.0;\n      iVar33 = *(int *)(iVar20 + 8);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(param_1 + 0x298);\n      do {\n        pdVar28 = (double *)(iVar33 * 8 + local_78);\n        pdVar21 = (double *)(local_78 + iVar24 * 8);\n        if ((int)uVar22 < 1) {\n          fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (local_68 < 0) {\n            fVar27 = fVar27 + DAT_0029f714;\n          }\n          local_3c = (double)fVar27;\n          if (local_3c < dVar16) {\n            *pdVar28 = 0.0;\n          }\n          else {\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }\n          dVar15 = 0.0;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\nLAB_00161a0c:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          *pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710;\n          if (0 < (int)uVar22) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar15 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar15 = 0.0;\nLAB_00161c0a:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar15 = dVar14 * dVar15 * (double)DAT_0029f710;\n        }\n        else {\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {\n            *pdVar28 = (double)DAT_0029f710;\n          }\n          else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }\n          *pdVar21 = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }\n          dVar15 = (double)DAT_0029f710;\n        }\n        if (*(int *)(iVar20 + 0x34) != 0) {\n          *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15;\n        }\n        local_64 = (float)((int)local_64 + 1);\n        local_78 = local_78 + iVar6 * 8;\n      } while (local_64 != (float)param_3);\n    }" { (expression_statement "iVar20 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar20 = *(int *)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int *)(param_1 + 0x2a8)" * (cast_expression "(int *)(param_1 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) (expression_statement "local_64 = 0.0;" (assignment_expression "local_64 = 0.0" identifier = number_literal) ;) (expression_statement "iVar33 = *(int *)(iVar20 + 8);" (assignment_expression "iVar33 = *(int *)(iVar20 + 8)" identifier = (pointer_expression "*(int *)(iVar20 + 8)" * (cast_expression "(int *)(iVar20 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 8)" ( (binary_expression "iVar20 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar24 = *(int *)(iVar20 + 0x14);" (assignment_expression "iVar24 = *(int *)(iVar20 + 0x14)" identifier = (pointer_expression "*(int *)(iVar20 + 0x14)" * (cast_expression "(int *)(iVar20 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x14)" ( (binary_expression "iVar20 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = *(int *)(param_1 + 0x298);" (assignment_expression "iVar6 = *(int *)(param_1 + 0x298)" identifier = (pointer_expression "*(int *)(param_1 + 0x298)" * (cast_expression "(int *)(param_1 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) ))))) ;) (do_statement "do {\n        pdVar28 = (double *)(iVar33 * 8 + local_78);\n        pdVar21 = (double *)(local_78 + iVar24 * 8);\n        if ((int)uVar22 < 1) {\n          fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (local_68 < 0) {\n            fVar27 = fVar27 + DAT_0029f714;\n          }\n          local_3c = (double)fVar27;\n          if (local_3c < dVar16) {\n            *pdVar28 = 0.0;\n          }\n          else {\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }\n          dVar15 = 0.0;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\nLAB_00161a0c:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          *pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710;\n          if (0 < (int)uVar22) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar15 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar15 = 0.0;\nLAB_00161c0a:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar15 = dVar14 * dVar15 * (double)DAT_0029f710;\n        }\n        else {\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {\n            *pdVar28 = (double)DAT_0029f710;\n          }\n          else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }\n          *pdVar21 = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }\n          dVar15 = (double)DAT_0029f710;\n        }\n        if (*(int *)(iVar20 + 0x34) != 0) {\n          *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15;\n        }\n        local_64 = (float)((int)local_64 + 1);\n        local_78 = local_78 + iVar6 * 8;\n      } while (local_64 != (float)param_3);" do (compound_statement "{\n        pdVar28 = (double *)(iVar33 * 8 + local_78);\n        pdVar21 = (double *)(local_78 + iVar24 * 8);\n        if ((int)uVar22 < 1) {\n          fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (local_68 < 0) {\n            fVar27 = fVar27 + DAT_0029f714;\n          }\n          local_3c = (double)fVar27;\n          if (local_3c < dVar16) {\n            *pdVar28 = 0.0;\n          }\n          else {\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }\n          dVar15 = 0.0;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\nLAB_00161a0c:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          *pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710;\n          if (0 < (int)uVar22) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar15 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar15 = 0.0;\nLAB_00161c0a:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar15 = dVar14 * dVar15 * (double)DAT_0029f710;\n        }\n        else {\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {\n            *pdVar28 = (double)DAT_0029f710;\n          }\n          else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }\n          *pdVar21 = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }\n          dVar15 = (double)DAT_0029f710;\n        }\n        if (*(int *)(iVar20 + 0x34) != 0) {\n          *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15;\n        }\n        local_64 = (float)((int)local_64 + 1);\n        local_78 = local_78 + iVar6 * 8;\n      }" { (expression_statement "pdVar28 = (double *)(iVar33 * 8 + local_78);" (assignment_expression "pdVar28 = (double *)(iVar33 * 8 + local_78)" identifier = (cast_expression "(double *)(iVar33 * 8 + local_78)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 * 8 + local_78)" ( (binary_expression "iVar33 * 8 + local_78" (binary_expression "iVar33 * 8" identifier * number_literal) + identifier) )))) ;) (expression_statement "pdVar21 = (double *)(local_78 + iVar24 * 8);" (assignment_expression "pdVar21 = (double *)(local_78 + iVar24 * 8)" identifier = (cast_expression "(double *)(local_78 + iVar24 * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + iVar24 * 8)" ( (binary_expression "local_78 + iVar24 * 8" identifier + (binary_expression "iVar24 * 8" identifier * number_literal)) )))) ;) (if_statement "if ((int)uVar22 < 1) {\n          fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (local_68 < 0) {\n            fVar27 = fVar27 + DAT_0029f714;\n          }\n          local_3c = (double)fVar27;\n          if (local_3c < dVar16) {\n            *pdVar28 = 0.0;\n          }\n          else {\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }\n          dVar15 = 0.0;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\nLAB_00161a0c:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          *pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710;\n          if (0 < (int)uVar22) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar15 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar15 = 0.0;\nLAB_00161c0a:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar15 = dVar14 * dVar15 * (double)DAT_0029f710;\n        }\n        else {\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {\n            *pdVar28 = (double)DAT_0029f710;\n          }\n          else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }\n          *pdVar21 = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }\n          dVar15 = (double)DAT_0029f710;\n        }" if (parenthesized_expression "((int)uVar22 < 1)" ( (binary_expression "(int)uVar22 < 1" (cast_expression "(int)uVar22" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (local_68 < 0) {\n            fVar27 = fVar27 + DAT_0029f714;\n          }\n          local_3c = (double)fVar27;\n          if (local_3c < dVar16) {\n            *pdVar28 = 0.0;\n          }\n          else {\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }\n          dVar15 = 0.0;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\nLAB_00161a0c:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          *pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710;\n          if (0 < (int)uVar22) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar15 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar15 = 0.0;\nLAB_00161c0a:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar15 = dVar14 * dVar15 * (double)DAT_0029f710;\n        }" { (expression_statement "fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));" (assignment_expression "fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" identifier = (cast_expression "(float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" identifier (argument_list "(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" ( identifier , (call_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" identifier (argument_list "(uStack_6a,CONCAT11(bStack_6b,local_6c))" ( identifier , (call_expression "CONCAT11(bStack_6b,local_6c)" identifier (argument_list "(bStack_6b,local_6c)" ( identifier , identifier ))) ))) ))))) ;) (if_statement "if (local_68 < 0) {\n            fVar27 = fVar27 + DAT_0029f714;\n          }" if (parenthesized_expression "(local_68 < 0)" ( (binary_expression "local_68 < 0" identifier < number_literal) )) (compound_statement "{\n            fVar27 = fVar27 + DAT_0029f714;\n          }" { (expression_statement "fVar27 = fVar27 + DAT_0029f714;" (assignment_expression "fVar27 = fVar27 + DAT_0029f714" identifier = (binary_expression "fVar27 + DAT_0029f714" identifier + identifier)) ;) })) (expression_statement "local_3c = (double)fVar27;" (assignment_expression "local_3c = (double)fVar27" identifier = (cast_expression "(double)fVar27" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (if_statement "if (local_3c < dVar16) {\n            *pdVar28 = 0.0;\n          }\n          else {\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }" if (parenthesized_expression "(local_3c < dVar16)" ( (binary_expression "local_3c < dVar16" identifier < identifier) )) (compound_statement "{\n            *pdVar28 = 0.0;\n          }" { (expression_statement "*pdVar28 = 0.0;" (assignment_expression "*pdVar28 = 0.0" (pointer_expression "*pdVar28" * identifier) = number_literal) ;) }) (else_clause "else {\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }" else (compound_statement "{\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }" { (expression_statement "dVar15 = 0.0;" (assignment_expression "dVar15 = 0.0" identifier = number_literal) ;) (labeled_statement "LAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;" statement_identifier : (expression_statement "*pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;" (assignment_expression "*pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710" (pointer_expression "*pdVar28" * identifier) = (binary_expression "((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710" (binary_expression "((double)DAT_0029f718 / local_3c) * dVar15" (parenthesized_expression "((double)DAT_0029f718 / local_3c)" ( (binary_expression "(double)DAT_0029f718 / local_3c" (cast_expression "(double)DAT_0029f718" ( (type_descriptor "double" primitive_type) ) identifier) / identifier) )) * identifier) * (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;)) (if_statement "if (0 < (int)uVar22) goto LAB_00161938;" if (parenthesized_expression "(0 < (int)uVar22)" ( (binary_expression "0 < (int)uVar22" number_literal < (cast_expression "(int)uVar22" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_00161938;" goto statement_identifier ;)) }))) (expression_statement "dVar15 = 0.0;" (assignment_expression "dVar15 = 0.0" identifier = number_literal) ;) (expression_statement "local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);" (assignment_expression "local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8)" identifier = (cast_expression "(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + *(int *)(iVar20 + 0x20) * 8)" ( (binary_expression "local_78 + *(int *)(iVar20 + 0x20) * 8" identifier + (binary_expression "*(int *)(iVar20 + 0x20) * 8" (pointer_expression "*(int *)(iVar20 + 0x20)" * (cast_expression "(int *)(iVar20 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x20)" ( (binary_expression "iVar20 + 0x20" identifier + number_literal) )))) * number_literal)) )))) ;) (labeled_statement "LAB_00161a0c:\n          dVar14 = DAT_0029f738;" statement_identifier : (expression_statement "dVar14 = DAT_0029f738;" (assignment_expression "dVar14 = DAT_0029f738" identifier = identifier) ;)) (if_statement "if (DAT_0029f138 <= local_3c) {\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }" if (parenthesized_expression "(DAT_0029f138 <= local_3c)" ( (binary_expression "DAT_0029f138 <= local_3c" identifier <= identifier) )) (compound_statement "{\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }" { (expression_statement "dVar14 = (double)DAT_0029f718 / local_3c;" (assignment_expression "dVar14 = (double)DAT_0029f718 / local_3c" identifier = (binary_expression "(double)DAT_0029f718 / local_3c" (cast_expression "(double)DAT_0029f718" ( (type_descriptor "double" primitive_type) ) identifier) / identifier)) ;) })) (expression_statement "*pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710;" (assignment_expression "*pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710" (pointer_expression "*pdVar21" * identifier) = (binary_expression "dVar14 * dVar15 * (double)DAT_0029f710" (binary_expression "dVar14 * dVar15" identifier * identifier) * (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (0 < (int)uVar22) goto LAB_00161a4a;" if (parenthesized_expression "(0 < (int)uVar22)" ( (binary_expression "0 < (int)uVar22" number_literal < (cast_expression "(int)uVar22" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_00161a4a;" goto statement_identifier ;)) (if_statement "if (DAT_0029f138 <= local_3c) {\n            dVar15 = 0.0;\n            goto LAB_00161ed0;\n          }" if (parenthesized_expression "(DAT_0029f138 <= local_3c)" ( (binary_expression "DAT_0029f138 <= local_3c" identifier <= identifier) )) (compound_statement "{\n            dVar15 = 0.0;\n            goto LAB_00161ed0;\n          }" { (expression_statement "dVar15 = 0.0;" (assignment_expression "dVar15 = 0.0" identifier = number_literal) ;) (goto_statement "goto LAB_00161ed0;" goto statement_identifier ;) })) (expression_statement "*local_5c = 0.0;" (assignment_expression "*local_5c = 0.0" (pointer_expression "*local_5c" * identifier) = number_literal) ;) (expression_statement "dVar15 = 0.0;" (assignment_expression "dVar15 = 0.0" identifier = number_literal) ;) (labeled_statement "LAB_00161c0a:\n          dVar14 = DAT_0029f738;" statement_identifier : (expression_statement "dVar14 = DAT_0029f738;" (assignment_expression "dVar14 = DAT_0029f738" identifier = identifier) ;)) (if_statement "if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }" if (parenthesized_expression "(DAT_0029f138 <= local_3c)" ( (binary_expression "DAT_0029f138 <= local_3c" identifier <= identifier) )) (compound_statement "{\nLAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }" { (labeled_statement "LAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;" statement_identifier : (expression_statement "dVar14 = (double)DAT_0029f718 / local_3c;" (assignment_expression "dVar14 = (double)DAT_0029f718 / local_3c" identifier = (binary_expression "(double)DAT_0029f718 / local_3c" (cast_expression "(double)DAT_0029f718" ( (type_descriptor "double" primitive_type) ) identifier) / identifier)) ;)) })) (expression_statement "dVar15 = dVar14 * dVar15 * (double)DAT_0029f710;" (assignment_expression "dVar15 = dVar14 * dVar15 * (double)DAT_0029f710" identifier = (binary_expression "dVar14 * dVar15 * (double)DAT_0029f710" (binary_expression "dVar14 * dVar15" identifier * identifier) * (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) }) (else_clause "else {\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {\n            *pdVar28 = (double)DAT_0029f710;\n          }\n          else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }\n          *pdVar21 = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }\n          dVar15 = (double)DAT_0029f710;\n        }" else (compound_statement "{\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {\n            *pdVar28 = (double)DAT_0029f710;\n          }\n          else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }\n          *pdVar21 = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }\n          dVar15 = (double)DAT_0029f710;\n        }" { (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) (expression_statement "uVar26 = param_2[0x14];" (assignment_expression "uVar26 = param_2[0x14]" identifier = (subscript_expression "param_2[0x14]" identifier [ number_literal ])) ;) (expression_statement "uVar29 = uVar22;" (assignment_expression "uVar29 = uVar22" identifier = identifier) ;) (do_statement "do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);" do (compound_statement "{\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          }" { (if_statement "if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }" if (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) (compound_statement "{\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }" { (expression_statement "uVar18 = (uint)*(byte *)local_80;" (assignment_expression "uVar18 = (uint)*(byte *)local_80" identifier = (binary_expression "(uint)*(byte *)local_80" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)local_80" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_80 = (float *)((int)local_80 + 1);" (assignment_expression "local_80 = (float *)((int)local_80 + 1)" identifier = (cast_expression "(float *)((int)local_80 + 1)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + 1)" ( (binary_expression "(int)local_80 + 1" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "param_2[0x13] = uVar18;" (assignment_expression "param_2[0x13] = uVar18" (subscript_expression "param_2[0x13]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar26 = 8;" (assignment_expression "uVar26 = 8" identifier = number_literal) ;) }) (else_clause "else {\n              uVar18 = param_2[0x13];\n            }" else (compound_statement "{\n              uVar18 = param_2[0x13];\n            }" { (expression_statement "uVar18 = param_2[0x13];" (assignment_expression "uVar18 = param_2[0x13]" identifier = (subscript_expression "param_2[0x13]" identifier [ number_literal ])) ;) }))) (expression_statement "uVar25 = uVar26;" (assignment_expression "uVar25 = uVar26" identifier = identifier) ;) (if_statement "if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }" if (parenthesized_expression "(uVar29 <= uVar26)" ( (binary_expression "uVar29 <= uVar26" identifier <= identifier) )) (compound_statement "{\n              uVar25 = uVar29;\n            }" { (expression_statement "uVar25 = uVar29;" (assignment_expression "uVar25 = uVar29" identifier = identifier) ;) })) (expression_statement "uVar26 = uVar26 - uVar25;" (assignment_expression "uVar26 = uVar26 - uVar25" identifier = (binary_expression "uVar26 - uVar25" identifier - identifier)) ;) (expression_statement "uVar29 = uVar29 - uVar25;" (assignment_expression "uVar29 = uVar29 - uVar25" identifier = (binary_expression "uVar29 - uVar25" identifier - identifier)) ;) (expression_statement "uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);" (assignment_expression "uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f)" identifier = (binary_expression "uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f)" (binary_expression "uVar19 << ((byte)uVar25 & 0x1f)" identifier << (parenthesized_expression "((byte)uVar25 & 0x1f)" ( (binary_expression "(byte)uVar25 & 0x1f" (cast_expression "(byte)uVar25" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) | (binary_expression "~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f)" (unary_expression "~(-1 << ((byte)uVar25 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar25 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar25 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar25 & 0x1f)" ( (binary_expression "(byte)uVar25 & 0x1f" (cast_expression "(byte)uVar25" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & (binary_expression "uVar18 >> ((byte)uVar26 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar26 & 0x1f)" ( (binary_expression "(byte)uVar26 & 0x1f" (cast_expression "(byte)uVar26" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))))) ;) }) while (parenthesized_expression "(0 < (int)uVar29)" ( (binary_expression "0 < (int)uVar29" number_literal < (cast_expression "(int)uVar29" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "param_2[0x14] = uVar26;" (assignment_expression "param_2[0x14] = uVar26" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {\n            *pdVar28 = (double)DAT_0029f710;\n          }\n          else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }" if (parenthesized_expression "((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19))" ( (binary_expression "(local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)" (parenthesized_expression "(local_68 == 0)" ( (binary_expression "local_68 == 0" identifier == number_literal) )) && (parenthesized_expression "(CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)" ( (binary_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19" (call_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" identifier (argument_list "(uStack_6a,CONCAT11(bStack_6b,local_6c))" ( identifier , (call_expression "CONCAT11(bStack_6b,local_6c)" identifier (argument_list "(bStack_6b,local_6c)" ( identifier , identifier ))) ))) < identifier) ))) )) (compound_statement "{\n            *pdVar28 = (double)DAT_0029f710;\n          }" { (expression_statement "*pdVar28 = (double)DAT_0029f710;" (assignment_expression "*pdVar28 = (double)DAT_0029f710" (pointer_expression "*pdVar28" * identifier) = (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier)) ;) }) (else_clause "else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }" else (compound_statement "{\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }" { (expression_statement "dVar15 = (double)uVar19;" (assignment_expression "dVar15 = (double)uVar19" identifier = (cast_expression "(double)uVar19" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));" (assignment_expression "fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" identifier = (cast_expression "(float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" identifier (argument_list "(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" ( identifier , (call_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" identifier (argument_list "(uStack_6a,CONCAT11(bStack_6b,local_6c))" ( identifier , (call_expression "CONCAT11(bStack_6b,local_6c)" identifier (argument_list "(bStack_6b,local_6c)" ( identifier , identifier ))) ))) ))))) ;) (if_statement "if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }" if (parenthesized_expression "(local_68 < 0)" ( (binary_expression "local_68 < 0" identifier < number_literal) )) (compound_statement "{\n              fVar27 = fVar27 + DAT_0029f714;\n            }" { (expression_statement "fVar27 = fVar27 + DAT_0029f714;" (assignment_expression "fVar27 = fVar27 + DAT_0029f714" identifier = (binary_expression "fVar27 + DAT_0029f714" identifier + identifier)) ;) })) (expression_statement "local_3c = (double)fVar27;" (assignment_expression "local_3c = (double)fVar27" identifier = (cast_expression "(double)fVar27" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (if_statement "if (DAT_0029f138 <= local_3c) goto LAB_00161f72;" if (parenthesized_expression "(DAT_0029f138 <= local_3c)" ( (binary_expression "DAT_0029f138 <= local_3c" identifier <= identifier) )) (goto_statement "goto LAB_00161f72;" goto statement_identifier ;)) (expression_statement "*pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;" (assignment_expression "*pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710" (pointer_expression "*pdVar28" * identifier) = (binary_expression "dVar15 * DAT_0029f738 * (double)DAT_0029f710" (binary_expression "dVar15 * DAT_0029f738" identifier * identifier) * (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) }))) (labeled_statement "LAB_00161938:\n          uVar19 = 0;" statement_identifier : (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;)) (expression_statement "uVar26 = param_2[0x14];" (assignment_expression "uVar26 = param_2[0x14]" identifier = (subscript_expression "param_2[0x14]" identifier [ number_literal ])) ;) (expression_statement "uVar29 = uVar22;" (assignment_expression "uVar29 = uVar22" identifier = identifier) ;) (do_statement "do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);" do (compound_statement "{\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          }" { (if_statement "if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }" if (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) (compound_statement "{\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }" { (expression_statement "uVar18 = (uint)*(byte *)local_80;" (assignment_expression "uVar18 = (uint)*(byte *)local_80" identifier = (binary_expression "(uint)*(byte *)local_80" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)local_80" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_80 = (float *)((int)local_80 + 1);" (assignment_expression "local_80 = (float *)((int)local_80 + 1)" identifier = (cast_expression "(float *)((int)local_80 + 1)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + 1)" ( (binary_expression "(int)local_80 + 1" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar26 = 8;" (assignment_expression "uVar26 = 8" identifier = number_literal) ;) (expression_statement "param_2[0x13] = uVar18;" (assignment_expression "param_2[0x13] = uVar18" (subscript_expression "param_2[0x13]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n              uVar18 = param_2[0x13];\n            }" else (compound_statement "{\n              uVar18 = param_2[0x13];\n            }" { (expression_statement "uVar18 = param_2[0x13];" (assignment_expression "uVar18 = param_2[0x13]" identifier = (subscript_expression "param_2[0x13]" identifier [ number_literal ])) ;) }))) (expression_statement "uVar25 = uVar26;" (assignment_expression "uVar25 = uVar26" identifier = identifier) ;) (if_statement "if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }" if (parenthesized_expression "(uVar29 <= uVar26)" ( (binary_expression "uVar29 <= uVar26" identifier <= identifier) )) (compound_statement "{\n              uVar25 = uVar29;\n            }" { (expression_statement "uVar25 = uVar29;" (assignment_expression "uVar25 = uVar29" identifier = identifier) ;) })) (expression_statement "uVar26 = uVar26 - uVar25;" (assignment_expression "uVar26 = uVar26 - uVar25" identifier = (binary_expression "uVar26 - uVar25" identifier - identifier)) ;) (expression_statement "uVar29 = uVar29 - uVar25;" (assignment_expression "uVar29 = uVar29 - uVar25" identifier = (binary_expression "uVar29 - uVar25" identifier - identifier)) ;) (expression_statement "uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);" (assignment_expression "uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f)" identifier = (binary_expression "uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f)" (binary_expression "uVar19 << ((byte)uVar25 & 0x1f)" identifier << (parenthesized_expression "((byte)uVar25 & 0x1f)" ( (binary_expression "(byte)uVar25 & 0x1f" (cast_expression "(byte)uVar25" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) | (binary_expression "~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f)" (unary_expression "~(-1 << ((byte)uVar25 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar25 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar25 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar25 & 0x1f)" ( (binary_expression "(byte)uVar25 & 0x1f" (cast_expression "(byte)uVar25" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & (binary_expression "uVar18 >> ((byte)uVar26 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar26 & 0x1f)" ( (binary_expression "(byte)uVar26 & 0x1f" (cast_expression "(byte)uVar26" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))))) ;) }) while (parenthesized_expression "(0 < (int)uVar29)" ( (binary_expression "0 < (int)uVar29" number_literal < (cast_expression "(int)uVar29" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "param_2[0x14] = uVar26;" (assignment_expression "param_2[0x14] = uVar26" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);" (assignment_expression "local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8)" identifier = (cast_expression "(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + *(int *)(iVar20 + 0x20) * 8)" ( (binary_expression "local_78 + *(int *)(iVar20 + 0x20) * 8" identifier + (binary_expression "*(int *)(iVar20 + 0x20) * 8" (pointer_expression "*(int *)(iVar20 + 0x20)" * (cast_expression "(int *)(iVar20 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x20)" ( (binary_expression "iVar20 + 0x20" identifier + number_literal) )))) * number_literal)) )))) ;) (if_statement "if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }" if (parenthesized_expression "((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))))" ( (binary_expression "(local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" (parenthesized_expression "(local_68 != 0)" ( (binary_expression "local_68 != 0" identifier != number_literal) )) || (parenthesized_expression "(uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" ( (binary_expression "uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" identifier <= (call_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" identifier (argument_list "(uStack_6a,CONCAT11(bStack_6b,local_6c))" ( identifier , (call_expression "CONCAT11(bStack_6b,local_6c)" identifier (argument_list "(bStack_6b,local_6c)" ( identifier , identifier ))) )))) ))) )) (compound_statement "{\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }" { (expression_statement "fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));" (assignment_expression "fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" identifier = (cast_expression "(float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" identifier (argument_list "(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" ( identifier , (call_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" identifier (argument_list "(uStack_6a,CONCAT11(bStack_6b,local_6c))" ( identifier , (call_expression "CONCAT11(bStack_6b,local_6c)" identifier (argument_list "(bStack_6b,local_6c)" ( identifier , identifier ))) ))) ))))) ;) (if_statement "if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }" if (parenthesized_expression "(local_68 < 0)" ( (binary_expression "local_68 < 0" identifier < number_literal) )) (compound_statement "{\n              fVar27 = fVar27 + DAT_0029f714;\n            }" { (expression_statement "fVar27 = fVar27 + DAT_0029f714;" (assignment_expression "fVar27 = fVar27 + DAT_0029f714" identifier = (binary_expression "fVar27 + DAT_0029f714" identifier + identifier)) ;) })) (expression_statement "local_3c = (double)fVar27;" (assignment_expression "local_3c = (double)fVar27" identifier = (cast_expression "(double)fVar27" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "dVar15 = (double)uVar19;" (assignment_expression "dVar15 = (double)uVar19" identifier = (cast_expression "(double)uVar19" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (goto_statement "goto LAB_00161a0c;" goto statement_identifier ;) })) (expression_statement "*pdVar21 = (double)DAT_0029f710;" (assignment_expression "*pdVar21 = (double)DAT_0029f710" (pointer_expression "*pdVar21" * identifier) = (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (labeled_statement "LAB_00161a4a:\n          uVar19 = 0;" statement_identifier : (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;)) (expression_statement "uVar26 = param_2[0x14];" (assignment_expression "uVar26 = param_2[0x14]" identifier = (subscript_expression "param_2[0x14]" identifier [ number_literal ])) ;) (expression_statement "uVar29 = uVar22;" (assignment_expression "uVar29 = uVar22" identifier = identifier) ;) (do_statement "do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);" do (compound_statement "{\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          }" { (if_statement "if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }" if (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) (compound_statement "{\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }" { (expression_statement "uVar18 = (uint)*(byte *)local_80;" (assignment_expression "uVar18 = (uint)*(byte *)local_80" identifier = (binary_expression "(uint)*(byte *)local_80" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)local_80" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_80 = (float *)((int)local_80 + 1);" (assignment_expression "local_80 = (float *)((int)local_80 + 1)" identifier = (cast_expression "(float *)((int)local_80 + 1)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + 1)" ( (binary_expression "(int)local_80 + 1" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "param_2[0x13] = uVar18;" (assignment_expression "param_2[0x13] = uVar18" (subscript_expression "param_2[0x13]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar26 = 8;" (assignment_expression "uVar26 = 8" identifier = number_literal) ;) }) (else_clause "else {\n              uVar18 = param_2[0x13];\n            }" else (compound_statement "{\n              uVar18 = param_2[0x13];\n            }" { (expression_statement "uVar18 = param_2[0x13];" (assignment_expression "uVar18 = param_2[0x13]" identifier = (subscript_expression "param_2[0x13]" identifier [ number_literal ])) ;) }))) (expression_statement "uVar25 = uVar29;" (assignment_expression "uVar25 = uVar29" identifier = identifier) ;) (if_statement "if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }" if (parenthesized_expression "(uVar26 <= uVar29)" ( (binary_expression "uVar26 <= uVar29" identifier <= identifier) )) (compound_statement "{\n              uVar25 = uVar26;\n            }" { (expression_statement "uVar25 = uVar26;" (assignment_expression "uVar25 = uVar26" identifier = identifier) ;) })) (expression_statement "uVar26 = uVar26 - uVar25;" (assignment_expression "uVar26 = uVar26 - uVar25" identifier = (binary_expression "uVar26 - uVar25" identifier - identifier)) ;) (expression_statement "uVar29 = uVar29 - uVar25;" (assignment_expression "uVar29 = uVar29 - uVar25" identifier = (binary_expression "uVar29 - uVar25" identifier - identifier)) ;) (expression_statement "uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);" (assignment_expression "uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f)" identifier = (binary_expression "uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f)" (binary_expression "uVar19 << ((byte)uVar25 & 0x1f)" identifier << (parenthesized_expression "((byte)uVar25 & 0x1f)" ( (binary_expression "(byte)uVar25 & 0x1f" (cast_expression "(byte)uVar25" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) | (binary_expression "~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f)" (unary_expression "~(-1 << ((byte)uVar25 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar25 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar25 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar25 & 0x1f)" ( (binary_expression "(byte)uVar25 & 0x1f" (cast_expression "(byte)uVar25" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & (binary_expression "uVar18 >> ((byte)uVar26 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar26 & 0x1f)" ( (binary_expression "(byte)uVar26 & 0x1f" (cast_expression "(byte)uVar26" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))))) ;) }) while (parenthesized_expression "(0 < (int)uVar29)" ( (binary_expression "0 < (int)uVar29" number_literal < (cast_expression "(int)uVar29" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "param_2[0x14] = uVar26;" (assignment_expression "param_2[0x14] = uVar26" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }" if (parenthesized_expression "((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))))" ( (binary_expression "(local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" (parenthesized_expression "(local_68 != 0)" ( (binary_expression "local_68 != 0" identifier != number_literal) )) || (parenthesized_expression "(uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" ( (binary_expression "uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" identifier <= (call_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" identifier (argument_list "(uStack_6a,CONCAT11(bStack_6b,local_6c))" ( identifier , (call_expression "CONCAT11(bStack_6b,local_6c)" identifier (argument_list "(bStack_6b,local_6c)" ( identifier , identifier ))) )))) ))) )) (compound_statement "{\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }" { (expression_statement "fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));" (assignment_expression "fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" identifier = (cast_expression "(float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" identifier (argument_list "(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" ( identifier , (call_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" identifier (argument_list "(uStack_6a,CONCAT11(bStack_6b,local_6c))" ( identifier , (call_expression "CONCAT11(bStack_6b,local_6c)" identifier (argument_list "(bStack_6b,local_6c)" ( identifier , identifier ))) ))) ))))) ;) (if_statement "if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }" if (parenthesized_expression "(local_68 < 0)" ( (binary_expression "local_68 < 0" identifier < number_literal) )) (compound_statement "{\n              fVar27 = fVar27 + DAT_0029f714;\n            }" { (expression_statement "fVar27 = fVar27 + DAT_0029f714;" (assignment_expression "fVar27 = fVar27 + DAT_0029f714" identifier = (binary_expression "fVar27 + DAT_0029f714" identifier + identifier)) ;) })) (expression_statement "local_3c = (double)fVar27;" (assignment_expression "local_3c = (double)fVar27" identifier = (cast_expression "(double)fVar27" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "dVar15 = (double)uVar19;" (assignment_expression "dVar15 = (double)uVar19" identifier = (cast_expression "(double)uVar19" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (if_statement "if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }" if (parenthesized_expression "(local_3c < DAT_0029f138)" ( (binary_expression "local_3c < DAT_0029f138" identifier < identifier) )) (compound_statement "{\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }" { (expression_statement "*local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;" (assignment_expression "*local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710" (pointer_expression "*local_5c" * identifier) = (binary_expression "dVar15 * DAT_0029f738 * (double)DAT_0029f710" (binary_expression "dVar15 * DAT_0029f738" identifier * identifier) * (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }" if (parenthesized_expression "((int)uVar22 < 1)" ( (binary_expression "(int)uVar22 < 1" (cast_expression "(int)uVar22" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }" { (expression_statement "dVar15 = 0.0;" (assignment_expression "dVar15 = 0.0" identifier = number_literal) ;) (goto_statement "goto LAB_00161c0a;" goto statement_identifier ;) })) (goto_statement "goto LAB_00161b52;" goto statement_identifier ;) })) (labeled_statement "LAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;" statement_identifier : (expression_statement "*local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;" (assignment_expression "*local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710" (pointer_expression "*local_5c" * identifier) = (binary_expression "((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710" (binary_expression "((double)DAT_0029f718 / local_3c) * dVar15" (parenthesized_expression "((double)DAT_0029f718 / local_3c)" ( (binary_expression "(double)DAT_0029f718 / local_3c" (cast_expression "(double)DAT_0029f718" ( (type_descriptor "double" primitive_type) ) identifier) / identifier) )) * identifier) * (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;)) (if_statement "if (0 < (int)uVar22) goto LAB_00161b52;" if (parenthesized_expression "(0 < (int)uVar22)" ( (binary_expression "0 < (int)uVar22" number_literal < (cast_expression "(int)uVar22" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_00161b52;" goto statement_identifier ;)) (expression_statement "dVar15 = 0.0;" (assignment_expression "dVar15 = 0.0" identifier = number_literal) ;) (goto_statement "goto LAB_00161f00;" goto statement_identifier ;) })) (expression_statement "*local_5c = (double)DAT_0029f710;" (assignment_expression "*local_5c = (double)DAT_0029f710" (pointer_expression "*local_5c" * identifier) = (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (labeled_statement "LAB_00161b52:\n          uVar19 = 0;" statement_identifier : (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;)) (expression_statement "uVar26 = param_2[0x14];" (assignment_expression "uVar26 = param_2[0x14]" identifier = (subscript_expression "param_2[0x14]" identifier [ number_literal ])) ;) (expression_statement "uVar29 = uVar22;" (assignment_expression "uVar29 = uVar22" identifier = identifier) ;) (do_statement "do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);" do (compound_statement "{\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          }" { (if_statement "if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }" if (parenthesized_expression "(uVar26 == 0)" ( (binary_expression "uVar26 == 0" identifier == number_literal) )) (compound_statement "{\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }" { (expression_statement "uVar18 = (uint)*(byte *)local_80;" (assignment_expression "uVar18 = (uint)*(byte *)local_80" identifier = (binary_expression "(uint)*(byte *)local_80" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)local_80" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_80 = (float *)((int)local_80 + 1);" (assignment_expression "local_80 = (float *)((int)local_80 + 1)" identifier = (cast_expression "(float *)((int)local_80 + 1)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + 1)" ( (binary_expression "(int)local_80 + 1" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar26 = 8;" (assignment_expression "uVar26 = 8" identifier = number_literal) ;) (expression_statement "param_2[0x13] = uVar18;" (assignment_expression "param_2[0x13] = uVar18" (subscript_expression "param_2[0x13]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n              uVar18 = param_2[0x13];\n            }" else (compound_statement "{\n              uVar18 = param_2[0x13];\n            }" { (expression_statement "uVar18 = param_2[0x13];" (assignment_expression "uVar18 = param_2[0x13]" identifier = (subscript_expression "param_2[0x13]" identifier [ number_literal ])) ;) }))) (expression_statement "uVar25 = uVar29;" (assignment_expression "uVar25 = uVar29" identifier = identifier) ;) (if_statement "if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }" if (parenthesized_expression "(uVar26 <= uVar29)" ( (binary_expression "uVar26 <= uVar29" identifier <= identifier) )) (compound_statement "{\n              uVar25 = uVar26;\n            }" { (expression_statement "uVar25 = uVar26;" (assignment_expression "uVar25 = uVar26" identifier = identifier) ;) })) (expression_statement "uVar26 = uVar26 - uVar25;" (assignment_expression "uVar26 = uVar26 - uVar25" identifier = (binary_expression "uVar26 - uVar25" identifier - identifier)) ;) (expression_statement "uVar29 = uVar29 - uVar25;" (assignment_expression "uVar29 = uVar29 - uVar25" identifier = (binary_expression "uVar29 - uVar25" identifier - identifier)) ;) (expression_statement "uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);" (assignment_expression "uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f)" identifier = (binary_expression "uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f)" (binary_expression "uVar19 << ((byte)uVar25 & 0x1f)" identifier << (parenthesized_expression "((byte)uVar25 & 0x1f)" ( (binary_expression "(byte)uVar25 & 0x1f" (cast_expression "(byte)uVar25" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) | (binary_expression "~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f)" (unary_expression "~(-1 << ((byte)uVar25 & 0x1f))" ~ (parenthesized_expression "(-1 << ((byte)uVar25 & 0x1f))" ( (binary_expression "-1 << ((byte)uVar25 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar25 & 0x1f)" ( (binary_expression "(byte)uVar25 & 0x1f" (cast_expression "(byte)uVar25" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & (binary_expression "uVar18 >> ((byte)uVar26 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar26 & 0x1f)" ( (binary_expression "(byte)uVar26 & 0x1f" (cast_expression "(byte)uVar26" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))))) ;) }) while (parenthesized_expression "(0 < (int)uVar29)" ( (binary_expression "0 < (int)uVar29" number_literal < (cast_expression "(int)uVar29" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "param_2[0x14] = uVar26;" (assignment_expression "param_2[0x14] = uVar26" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }" if (parenthesized_expression "((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))))" ( (binary_expression "(local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" (parenthesized_expression "(local_68 != 0)" ( (binary_expression "local_68 != 0" identifier != number_literal) )) || (parenthesized_expression "(uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" ( (binary_expression "uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" identifier <= (call_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" identifier (argument_list "(uStack_6a,CONCAT11(bStack_6b,local_6c))" ( identifier , (call_expression "CONCAT11(bStack_6b,local_6c)" identifier (argument_list "(bStack_6b,local_6c)" ( identifier , identifier ))) )))) ))) )) (compound_statement "{\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }" { (expression_statement "fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));" (assignment_expression "fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" identifier = (cast_expression "(float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" ( (type_descriptor "float" primitive_type) ) (call_expression "CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" identifier (argument_list "(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" ( identifier , (call_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" identifier (argument_list "(uStack_6a,CONCAT11(bStack_6b,local_6c))" ( identifier , (call_expression "CONCAT11(bStack_6b,local_6c)" identifier (argument_list "(bStack_6b,local_6c)" ( identifier , identifier ))) ))) ))))) ;) (if_statement "if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }" if (parenthesized_expression "(local_68 < 0)" ( (binary_expression "local_68 < 0" identifier < number_literal) )) (compound_statement "{\n              fVar27 = fVar27 + DAT_0029f714;\n            }" { (expression_statement "fVar27 = fVar27 + DAT_0029f714;" (assignment_expression "fVar27 = fVar27 + DAT_0029f714" identifier = (binary_expression "fVar27 + DAT_0029f714" identifier + identifier)) ;) })) (expression_statement "local_3c = (double)fVar27;" (assignment_expression "local_3c = (double)fVar27" identifier = (cast_expression "(double)fVar27" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "dVar15 = (double)uVar19;" (assignment_expression "dVar15 = (double)uVar19" identifier = (cast_expression "(double)uVar19" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (goto_statement "goto LAB_00161c0a;" goto statement_identifier ;) })) (expression_statement "dVar15 = (double)DAT_0029f710;" (assignment_expression "dVar15 = (double)DAT_0029f710" identifier = (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier)) ;) }))) (if_statement "if (*(int *)(iVar20 + 0x34) != 0) {\n          *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15;\n        }" if (parenthesized_expression "(*(int *)(iVar20 + 0x34) != 0)" ( (binary_expression "*(int *)(iVar20 + 0x34) != 0" (pointer_expression "*(int *)(iVar20 + 0x34)" * (cast_expression "(int *)(iVar20 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x34)" ( (binary_expression "iVar20 + 0x34" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15;\n        }" { (expression_statement "*(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15;" (assignment_expression "*(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15" (pointer_expression "*(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8)" * (cast_expression "(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + *(int *)(iVar20 + 0x38) * 8)" ( (binary_expression "local_78 + *(int *)(iVar20 + 0x38) * 8" identifier + (binary_expression "*(int *)(iVar20 + 0x38) * 8" (pointer_expression "*(int *)(iVar20 + 0x38)" * (cast_expression "(int *)(iVar20 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x38)" ( (binary_expression "iVar20 + 0x38" identifier + number_literal) )))) * number_literal)) )))) = (binary_expression "(double)DAT_0029f710 - dVar15" (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier) - identifier)) ;) })) (expression_statement "local_64 = (float)((int)local_64 + 1);" (assignment_expression "local_64 = (float)((int)local_64 + 1)" identifier = (cast_expression "(float)((int)local_64 + 1)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((int)local_64 + 1)" ( (binary_expression "(int)local_64 + 1" (cast_expression "(int)local_64" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "local_78 = local_78 + iVar6 * 8;" (assignment_expression "local_78 = local_78 + iVar6 * 8" identifier = (binary_expression "local_78 + iVar6 * 8" identifier + (binary_expression "iVar6 * 8" identifier * number_literal))) ;) }) while (parenthesized_expression "(local_64 != (float)param_3)" ( (binary_expression "local_64 != (float)param_3" identifier != (cast_expression "(float)param_3" ( (type_descriptor "float" primitive_type) ) identifier)) )) ;) })))) })) (if_statement "if (iVar2 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0029eab0();\n  }" if (parenthesized_expression "(iVar2 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar2 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n    FUN_0029eab0();\n  }" { (expression_statement "FUN_0029eab0();" (call_expression "FUN_0029eab0()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (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 (pointer_declarator * 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 (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 (pointer_declarator * 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 = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = 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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (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 IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (switch_statement switch (parenthesized_expression ( IDENT )) (compound_statement { (case_statement case 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 = 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 = (subscript_expression IDENT [ LIT ])) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) * IDENT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * IDENT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * IDENT) )))) ;) (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)) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) * IDENT)) )))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (break_statement break ;)) (case_statement default : (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_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 = (subscript_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) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT % LIT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) & LIT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (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) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT % LIT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) << LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) << LIT)) | (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << LIT)) )))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )) << LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (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) ;) }) (else_clause else (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) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) }))) (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) )))) != 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)) )))) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT)) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (call_expression IDENT (argument_list ( IDENT , (call_expression IDENT (argument_list ( IDENT , IDENT ))) ))) + LIT)) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) }) (else_clause else (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 = 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) ))))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }))) (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 IDENT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) | (binary_expression (unary_expression ~ (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) ))) & (binary_expression IDENT >> (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))))) ;) }) while (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }))) (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 IDENT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) | (binary_expression (unary_expression ~ (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) ))) & (binary_expression IDENT >> (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))))) ;) }) while (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }))) (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 IDENT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) | (binary_expression (unary_expression ~ (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) ))) & (binary_expression IDENT >> (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))))) ;) }) while (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }))) (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 IDENT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) | (binary_expression (unary_expression ~ (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) ))) & (binary_expression IDENT >> (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))))) ;) }) while (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (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)) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT) )))) )))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })))) (break_statement break ;)) (case_statement case LIT : (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (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)) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( ))))) ;) (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)) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT * (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( ))))) ;) (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)) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT * (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (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)) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( ))))) ;) (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)) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT * (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( ))))) ;) (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)) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT * (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( ))))) ;) (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 (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)) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (binary_expression IDENT * (cast_expression ( (type_descriptor TYPE) ) IDENT))) )))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) }) (else_clause else (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 = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_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 = LIT) ;) (do_statement do (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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) + IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT << LIT) | (binary_expression IDENT >> LIT))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT << LIT) | (binary_expression IDENT >> LIT)) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT << LIT) | (binary_expression IDENT >> LIT)) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT << LIT) | (binary_expression IDENT >> LIT)) ))))) ;) }))) (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)) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })))) (break_statement break ;)) (case_statement case LIT : (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) != 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - IDENT) )))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (break_statement break ;) })) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (call_expression IDENT (argument_list ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) << LIT) )) >> LIT) ))) | (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ))))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) )) * (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT <= IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (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)) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (call_expression IDENT (argument_list ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) << LIT) )) >> LIT) ))) | (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ))))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) )) * (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT <= IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (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)) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (call_expression IDENT (argument_list ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) << LIT) )) >> LIT) ))) | (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ))))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) )) * (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT <= IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (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)) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) << LIT) )) >> LIT) ))) | (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , (call_expression IDENT (argument_list ( IDENT , IDENT ))) )))) - (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) )) * (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT <= IDENT)) ))) )) (compound_statement { (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) )))) != 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)) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - IDENT) )))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) ;) })) (break_statement break ;) })) (labeled_statement statement_identifier : (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 = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_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 = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) + IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) / IDENT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) / IDENT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) / IDENT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT & LIT) | (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << LIT) ))) >> LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) << LIT)) | (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << LIT)) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , (binary_expression (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) | (binary_expression IDENT & LIT)) )))) / IDENT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) << LIT)) | (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << LIT)) ))) / IDENT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) << LIT)) | (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << LIT)) ))) / IDENT) )))) ;) }))) (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)) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - (binary_expression (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) / IDENT)) )))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) }))) (break_statement break ;)) (case_statement case LIT : (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) )))) = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) )))) = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) )))) = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) != 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , IDENT )))))) )))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (break_statement break ;) })) (labeled_statement statement_identifier : (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 = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) )))) ;) (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 (binary_expression LIT << IDENT) | (binary_expression LIT >> (binary_expression LIT - IDENT)))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) & 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 (parenthesized_expression ( (binary_expression IDENT - LIT) )) + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (labeled_statement statement_identifier : (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 = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_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 (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , (call_expression IDENT (argument_list ( IDENT , (call_expression IDENT (argument_list ( IDENT , IDENT ))) ))) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) / IDENT) )) * IDENT) * (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;)) (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 = (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)) )))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) / IDENT)) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression IDENT * IDENT) * (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (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 IDENT <= 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 IDENT <= IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) / IDENT)) ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * IDENT) * (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }))) (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 IDENT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) | (binary_expression (unary_expression ~ (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) ))) & (binary_expression IDENT >> (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))))) ;) }) while (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) ;) (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 (call_expression IDENT (argument_list ( IDENT , (call_expression IDENT (argument_list ( IDENT , IDENT ))) ))) < IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , (call_expression IDENT (argument_list ( IDENT , (call_expression IDENT (argument_list ( IDENT , IDENT ))) ))) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression IDENT * IDENT) * (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }))) (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 IDENT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) | (binary_expression (unary_expression ~ (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) ))) & (binary_expression IDENT >> (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))))) ;) }) while (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) || (parenthesized_expression ( (binary_expression IDENT <= (call_expression IDENT (argument_list ( IDENT , (call_expression IDENT (argument_list ( IDENT , IDENT ))) )))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , (call_expression IDENT (argument_list ( IDENT , (call_expression IDENT (argument_list ( IDENT , IDENT ))) ))) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }))) (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 IDENT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) | (binary_expression (unary_expression ~ (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) ))) & (binary_expression IDENT >> (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))))) ;) }) while (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) ;) (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 <= (call_expression IDENT (argument_list ( IDENT , (call_expression IDENT (argument_list ( IDENT , IDENT ))) )))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , (call_expression IDENT (argument_list ( IDENT , (call_expression IDENT (argument_list ( IDENT , IDENT ))) ))) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression IDENT * IDENT) * (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 = LIT) ;) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) / IDENT) )) * IDENT) * (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;)) (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) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }))) (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 IDENT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) | (binary_expression (unary_expression ~ (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) ))) & (binary_expression IDENT >> (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))))) ;) }) while (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) ;) (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 <= (call_expression IDENT (argument_list ( IDENT , (call_expression IDENT (argument_list ( IDENT , IDENT ))) )))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , (call_expression IDENT (argument_list ( IDENT , (call_expression IDENT (argument_list ( IDENT , IDENT ))) ))) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }))) (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 (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)) )))) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) ;) })))) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (return_statement return ;) })))
(function_definition "void __regparm2\nFUN_00160f20(int param_1,uint *param_2,int param_3,undefined4 param_4,float *param_5,int param_6)\n\n{\n  float *pfVar1;\n  int iVar2;\n  ushort uVar3;\n  ushort uVar4;\n  ushort uVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  float fVar9;\n  float fVar10;\n  float fVar11;\n  byte bVar12;\n  float fVar13;\n  double dVar14;\n  double dVar15;\n  double dVar16;\n  float fVar17;\n  uint uVar18;\n  uint uVar19;\n  int iVar20;\n  double *pdVar21;\n  uint uVar22;\n  byte bVar23;\n  int iVar24;\n  uint uVar25;\n  uint uVar26;\n  float fVar27;\n  double *pdVar28;\n  uint uVar29;\n  double *pdVar30;\n  ushort uVar31;\n  int iVar32;\n  int iVar33;\n  int in_GS_OFFSET;\n  longdouble lVar34;\n  float *local_80;\n  int local_78;\n  byte local_6c;\n  byte bStack_6b;\n  ushort uStack_6a;\n  int local_68;\n  float local_64;\n  float local_60;\n  double *local_5c;\n  double local_3c;\n  float fStack_2c;\n  undefined4 uStack_28;\n  \n  fVar10 = DAT_002c5824;\n  fVar9 = DAT_002a7ff0;\n  fVar13 = DAT_002a7fec;\n  fVar27 = DAT_0029f710;\n  dVar16 = DAT_0029f138;\n  local_80 = param_5;\n  local_78 = param_6;\n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_1 == 0) {\n                    \n    __assert_fail("image != (Image *) NULL","MagickCore/quantum-import.c",0x1123,"ImportRGBOQuantum"\n                 );\n  }\n  if (*(int *)(param_1 + 0x3344) != -0x54535255) {\n                    \n    __assert_fail("image->signature == MagickCoreSignature","MagickCore/quantum-import.c",0x1124,\n                  "ImportRGBOQuantum");\n  }\n  uVar22 = *param_2;\n  switch(uVar22) {\n  case 8:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar32 = 0;\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      uVar22 = param_2[9];\n      do {\n        bVar12 = *(byte *)((int)param_5 + 1);\n        bVar23 = *(byte *)((int)param_5 + 2);\n        *(double *)(param_6 + iVar24 * 8) = (double)((float)*(byte *)param_5 * fVar9);\n        *(double *)(param_6 + iVar6 * 8) = (double)((float)bVar12 * fVar9);\n        *(double *)(param_6 + iVar7 * 8) = (double)((float)bVar23 * fVar9);\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9);\n        }\n        param_5 = (float *)((int)param_5 + uVar22 + 4);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;\n  default:\n    local_6c = 0;\n    bStack_6b = 0;\n    uStack_6a = 0;\n    local_68 = 0;\n    if (uVar22 != 0) goto LAB_00161285;\n    goto LAB_001612bc;\n  case 10:\n    if (param_2[0xb] == 0) {\n      if (0 < param_3) {\n        fVar27 = 0.0;\n        local_6c = 0;\n        bStack_6b = 0;\n        uStack_6a = 0;\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        uVar22 = param_2[9];\n        iVar33 = *(int *)(param_1 + 0x298);\n        uVar26 = 0;\n        do {\n          iVar24 = 0;\n          uVar29 = uVar26;\ncode_r0x001620a2:\n          if (uVar29 % 3 == 1) {\n            uVar26 = (uint)fVar27 >> 6 & 0xffc0;\ncode_r0x001620cb:\n            dVar16 = (double)uVar26;\n            if (iVar24 != 2) goto code_r0x001620d7;\ncode_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;\ncode_r0x001620f8:\n            uVar29 = uVar29 + 1;\n            iVar24 = iVar24 + 1;\n            goto code_r0x001620a2;\n          }\n          if (uVar29 % 3 == 2) {\n            uVar26 = ((uint)fVar27 & 0xffc) << 4;\n            goto code_r0x001620cb;\n          }\n          pfVar1 = local_80 + 1;\n          fVar27 = *local_80;\n          if (param_2[0x10] != 1) {\n            fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          }\n          dVar16 = (double)(((uint)fVar27 >> 0x16) << 6);\n          local_80 = pfVar1;\n          if (iVar24 == 2) goto code_r0x00162130;\ncode_r0x001620d7:\n          uVar26 = uVar29 + 1;\n          if (iVar24 != 3) {\n            if (iVar24 == 1) {\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }\n            else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }\n            goto code_r0x001620f8;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;\n          }\ncode_r0x0016217a:\n          iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar24;\n          bStack_6b = (byte)((uint)iVar24 >> 8);\n          uStack_6a = (ushort)((uint)iVar24 >> 0x10);\n          local_80 = (float *)((int)local_80 + uVar22);\n          local_78 = local_78 + iVar33 * 8;\n        } while (iVar24 != param_3);\n      }\n    }\n    else if (0 < param_3) {\n      iVar33 = *(int *)(param_1 + 0x2a8);\n      iVar20 = 0;\n      iVar24 = *(int *)(iVar33 + 8);\n      iVar6 = *(int *)(param_1 + 0x298);\n      iVar7 = *(int *)(iVar33 + 0x34);\n      iVar8 = *(int *)(iVar33 + 0x20);\n      iVar32 = *(int *)(iVar33 + 0x14);\n      do {\n        uVar29 = 0;\n        uVar26 = 10;\n        uVar22 = param_2[0x14];\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar26 <= uVar22) {\n            uVar18 = uVar26;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar24 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar32 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        uVar26 = 0;\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar8 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar29 <= uVar22) {\n            uVar18 = uVar29;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar29 = uVar29 - uVar18;\n          uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar29);\n        param_2[0x14] = uVar22;\n        if (iVar7 != 0) {\n          *(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));\n        }\n        iVar20 = iVar20 + 1;\n        local_78 = local_78 + iVar6 * 8;\n      } while (iVar20 != param_3);\n    }\n    break;\n  case 0x10:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        uVar22 = param_2[0x10];\n        do {\n          if (uVar22 == 1) {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          else {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          lVar34 = (longdouble)FUN_00159350();\n          if (*(int *)(iVar33 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n    }\n    else if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(iVar20 + 0x20);\n      iVar7 = *(int *)(iVar20 + 8);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        uVar3 = *(ushort *)(param_5 + 1);\n        uVar31 = *(ushort *)((int)param_5 + 6);\n        uVar4 = *(ushort *)param_5;\n        pdVar21 = (double *)(iVar24 * 8 + param_6);\n        uVar5 = *(ushort *)((int)param_5 + 2);\n        pdVar28 = (double *)(iVar6 * 8 + param_6);\n        pdVar30 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)uVar4;\n          *pdVar21 = (double)uVar5;\n          *pdVar28 = (double)uVar3;\n        }\n        else {\n          uVar31 = uVar31 << 8 | uVar31 >> 8;\n          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);\n          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);\n          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 8);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;\n  case 0x18:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }\n    goto code_r0x001616dd;\n  case 0x20:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        local_5c = (double *)0x0;\n        uVar22 = param_2[9];\n        uVar26 = param_2[0x10];\n        iVar33 = *(int *)(param_1 + 0x298);\n        do {\n          local_64 = *param_5;\n          if (uVar26 != 1) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3));\n          }\n          fVar13 = (local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar27 = fVar10;\n          if ((fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)) {\n            fVar27 = fVar13;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 8) * 8) = (double)fVar27;\n          if (uVar26 == 1) {\n            fVar27 = param_5[1];\n          }\n          else {\n            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));\n          }\n          fVar27 = (fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            local_60 = param_5[2];\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));\n          }\n          fVar27 = (local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            fVar27 = param_5[3];\n            local_6c = SUB41(fVar27,0);\n            bStack_6b = (byte)((uint)fVar27 >> 8);\n            uStack_6a = (ushort)((uint)fVar27 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);\n            bStack_6b = *(byte *)((int)param_5 + 0xe);\n            local_6c = *(byte *)((int)param_5 + 0xf);\n          }\n          fVar27 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          param_5 = (float *)((int)param_5 + uVar22 + 0x10);\n          param_6 = param_6 + iVar33 * 8;\n        } while (local_5c != (double *)param_3);\n      }\n      break;\n    }\ncode_r0x001616dd:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        fVar17 = DAT_002a7fec;\n        fVar27 = param_5[3];\n        fVar9 = param_5[1];\n        pdVar21 = (double *)(iVar6 * 8 + param_6);\n        fVar10 = param_5[2];\n        pdVar30 = (double *)(iVar24 * 8 + param_6);\n        fVar11 = *param_5;\n        pdVar28 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec);\n          *pdVar21 = (double)((float)(uint)fVar9 / fVar17);\n          *pdVar28 = (double)((float)(uint)fVar10 / fVar17);\n        }\n        else {\n          uVar3 = (ushort)((uint)fVar11 >> 8);\n          uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);\n          fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          *pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13);\n          *pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);\n          *pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 0x10);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;\n  case 0x40:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }\nLAB_00161285:\n    uVar26 = 0;\n    if (uVar22 < 0x41) {\n      uVar26 = uVar22;\n    }\n    bVar23 = (byte)(uVar26 - 1);\n    bVar12 = bVar23 & 0x1f;\n    uVar18 = 2 << (bVar23 & 0x1f);\n    uVar19 = uVar18;\n    uVar29 = 0 << bVar12 | 2U >> 0x20 - bVar12;\n    if ((uVar26 - 1 & 0x20) != 0) {\n      uVar19 = 0;\n      uVar29 = uVar18;\n    }\n    iVar20 = uVar19 - 1;\n    local_68 = (uVar29 - 1) + (uint)(uVar19 != 0);\n    local_6c = (byte)iVar20;\n    bStack_6b = (byte)((uint)iVar20 >> 8);\n    uStack_6a = (ushort)((uint)iVar20 >> 0x10);\nLAB_001612bc:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      local_64 = 0.0;\n      iVar33 = *(int *)(iVar20 + 8);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(param_1 + 0x298);\n      do {\n        pdVar28 = (double *)(iVar33 * 8 + local_78);\n        pdVar21 = (double *)(local_78 + iVar24 * 8);\n        if ((int)uVar22 < 1) {\n          fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (local_68 < 0) {\n            fVar27 = fVar27 + DAT_0029f714;\n          }\n          local_3c = (double)fVar27;\n          if (local_3c < dVar16) {\n            *pdVar28 = 0.0;\n          }\n          else {\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }\n          dVar15 = 0.0;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\nLAB_00161a0c:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          *pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710;\n          if (0 < (int)uVar22) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar15 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar15 = 0.0;\nLAB_00161c0a:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar15 = dVar14 * dVar15 * (double)DAT_0029f710;\n        }\n        else {\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {\n            *pdVar28 = (double)DAT_0029f710;\n          }\n          else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }\n          *pdVar21 = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }\n          dVar15 = (double)DAT_0029f710;\n        }\n        if (*(int *)(iVar20 + 0x34) != 0) {\n          *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15;\n        }\n        local_64 = (float)((int)local_64 + 1);\n        local_78 = local_78 + iVar6 * 8;\n      } while (local_64 != (float)param_3);\n    }\n  }\n  if (iVar2 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0029eab0();\n  }\n  return;\n}" (primitive_type "void") (ERROR "__regparm2" (identifier "__regparm2")) (function_declarator "FUN_00160f20(int param_1,uint *param_2,int param_3,undefined4 param_4,float *param_5,int param_6)" (identifier "FUN_00160f20") (parameter_list "(int param_1,uint *param_2,int param_3,undefined4 param_4,float *param_5,int param_6)" (( "(") (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 "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) (, ",") (parameter_declaration "float *param_5" (primitive_type "float") (pointer_declarator "*param_5" (* "*") (identifier "param_5"))) (, ",") (parameter_declaration "int param_6" (primitive_type "int") (identifier "param_6")) () ")"))) (compound_statement "{\n  float *pfVar1;\n  int iVar2;\n  ushort uVar3;\n  ushort uVar4;\n  ushort uVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  float fVar9;\n  float fVar10;\n  float fVar11;\n  byte bVar12;\n  float fVar13;\n  double dVar14;\n  double dVar15;\n  double dVar16;\n  float fVar17;\n  uint uVar18;\n  uint uVar19;\n  int iVar20;\n  double *pdVar21;\n  uint uVar22;\n  byte bVar23;\n  int iVar24;\n  uint uVar25;\n  uint uVar26;\n  float fVar27;\n  double *pdVar28;\n  uint uVar29;\n  double *pdVar30;\n  ushort uVar31;\n  int iVar32;\n  int iVar33;\n  int in_GS_OFFSET;\n  longdouble lVar34;\n  float *local_80;\n  int local_78;\n  byte local_6c;\n  byte bStack_6b;\n  ushort uStack_6a;\n  int local_68;\n  float local_64;\n  float local_60;\n  double *local_5c;\n  double local_3c;\n  float fStack_2c;\n  undefined4 uStack_28;\n  \n  fVar10 = DAT_002c5824;\n  fVar9 = DAT_002a7ff0;\n  fVar13 = DAT_002a7fec;\n  fVar27 = DAT_0029f710;\n  dVar16 = DAT_0029f138;\n  local_80 = param_5;\n  local_78 = param_6;\n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_1 == 0) {\n                    \n    __assert_fail("image != (Image *) NULL","MagickCore/quantum-import.c",0x1123,"ImportRGBOQuantum"\n                 );\n  }\n  if (*(int *)(param_1 + 0x3344) != -0x54535255) {\n                    \n    __assert_fail("image->signature == MagickCoreSignature","MagickCore/quantum-import.c",0x1124,\n                  "ImportRGBOQuantum");\n  }\n  uVar22 = *param_2;\n  switch(uVar22) {\n  case 8:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar32 = 0;\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      uVar22 = param_2[9];\n      do {\n        bVar12 = *(byte *)((int)param_5 + 1);\n        bVar23 = *(byte *)((int)param_5 + 2);\n        *(double *)(param_6 + iVar24 * 8) = (double)((float)*(byte *)param_5 * fVar9);\n        *(double *)(param_6 + iVar6 * 8) = (double)((float)bVar12 * fVar9);\n        *(double *)(param_6 + iVar7 * 8) = (double)((float)bVar23 * fVar9);\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9);\n        }\n        param_5 = (float *)((int)param_5 + uVar22 + 4);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;\n  default:\n    local_6c = 0;\n    bStack_6b = 0;\n    uStack_6a = 0;\n    local_68 = 0;\n    if (uVar22 != 0) goto LAB_00161285;\n    goto LAB_001612bc;\n  case 10:\n    if (param_2[0xb] == 0) {\n      if (0 < param_3) {\n        fVar27 = 0.0;\n        local_6c = 0;\n        bStack_6b = 0;\n        uStack_6a = 0;\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        uVar22 = param_2[9];\n        iVar33 = *(int *)(param_1 + 0x298);\n        uVar26 = 0;\n        do {\n          iVar24 = 0;\n          uVar29 = uVar26;\ncode_r0x001620a2:\n          if (uVar29 % 3 == 1) {\n            uVar26 = (uint)fVar27 >> 6 & 0xffc0;\ncode_r0x001620cb:\n            dVar16 = (double)uVar26;\n            if (iVar24 != 2) goto code_r0x001620d7;\ncode_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;\ncode_r0x001620f8:\n            uVar29 = uVar29 + 1;\n            iVar24 = iVar24 + 1;\n            goto code_r0x001620a2;\n          }\n          if (uVar29 % 3 == 2) {\n            uVar26 = ((uint)fVar27 & 0xffc) << 4;\n            goto code_r0x001620cb;\n          }\n          pfVar1 = local_80 + 1;\n          fVar27 = *local_80;\n          if (param_2[0x10] != 1) {\n            fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          }\n          dVar16 = (double)(((uint)fVar27 >> 0x16) << 6);\n          local_80 = pfVar1;\n          if (iVar24 == 2) goto code_r0x00162130;\ncode_r0x001620d7:\n          uVar26 = uVar29 + 1;\n          if (iVar24 != 3) {\n            if (iVar24 == 1) {\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }\n            else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }\n            goto code_r0x001620f8;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;\n          }\ncode_r0x0016217a:\n          iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar24;\n          bStack_6b = (byte)((uint)iVar24 >> 8);\n          uStack_6a = (ushort)((uint)iVar24 >> 0x10);\n          local_80 = (float *)((int)local_80 + uVar22);\n          local_78 = local_78 + iVar33 * 8;\n        } while (iVar24 != param_3);\n      }\n    }\n    else if (0 < param_3) {\n      iVar33 = *(int *)(param_1 + 0x2a8);\n      iVar20 = 0;\n      iVar24 = *(int *)(iVar33 + 8);\n      iVar6 = *(int *)(param_1 + 0x298);\n      iVar7 = *(int *)(iVar33 + 0x34);\n      iVar8 = *(int *)(iVar33 + 0x20);\n      iVar32 = *(int *)(iVar33 + 0x14);\n      do {\n        uVar29 = 0;\n        uVar26 = 10;\n        uVar22 = param_2[0x14];\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar26 <= uVar22) {\n            uVar18 = uVar26;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar24 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar32 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        uVar26 = 0;\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar8 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar29 <= uVar22) {\n            uVar18 = uVar29;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar29 = uVar29 - uVar18;\n          uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar29);\n        param_2[0x14] = uVar22;\n        if (iVar7 != 0) {\n          *(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));\n        }\n        iVar20 = iVar20 + 1;\n        local_78 = local_78 + iVar6 * 8;\n      } while (iVar20 != param_3);\n    }\n    break;\n  case 0x10:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        uVar22 = param_2[0x10];\n        do {\n          if (uVar22 == 1) {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          else {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          lVar34 = (longdouble)FUN_00159350();\n          if (*(int *)(iVar33 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n    }\n    else if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(iVar20 + 0x20);\n      iVar7 = *(int *)(iVar20 + 8);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        uVar3 = *(ushort *)(param_5 + 1);\n        uVar31 = *(ushort *)((int)param_5 + 6);\n        uVar4 = *(ushort *)param_5;\n        pdVar21 = (double *)(iVar24 * 8 + param_6);\n        uVar5 = *(ushort *)((int)param_5 + 2);\n        pdVar28 = (double *)(iVar6 * 8 + param_6);\n        pdVar30 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)uVar4;\n          *pdVar21 = (double)uVar5;\n          *pdVar28 = (double)uVar3;\n        }\n        else {\n          uVar31 = uVar31 << 8 | uVar31 >> 8;\n          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);\n          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);\n          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 8);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;\n  case 0x18:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }\n    goto code_r0x001616dd;\n  case 0x20:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        local_5c = (double *)0x0;\n        uVar22 = param_2[9];\n        uVar26 = param_2[0x10];\n        iVar33 = *(int *)(param_1 + 0x298);\n        do {\n          local_64 = *param_5;\n          if (uVar26 != 1) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3));\n          }\n          fVar13 = (local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar27 = fVar10;\n          if ((fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)) {\n            fVar27 = fVar13;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 8) * 8) = (double)fVar27;\n          if (uVar26 == 1) {\n            fVar27 = param_5[1];\n          }\n          else {\n            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));\n          }\n          fVar27 = (fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            local_60 = param_5[2];\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));\n          }\n          fVar27 = (local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            fVar27 = param_5[3];\n            local_6c = SUB41(fVar27,0);\n            bStack_6b = (byte)((uint)fVar27 >> 8);\n            uStack_6a = (ushort)((uint)fVar27 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);\n            bStack_6b = *(byte *)((int)param_5 + 0xe);\n            local_6c = *(byte *)((int)param_5 + 0xf);\n          }\n          fVar27 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          param_5 = (float *)((int)param_5 + uVar22 + 0x10);\n          param_6 = param_6 + iVar33 * 8;\n        } while (local_5c != (double *)param_3);\n      }\n      break;\n    }\ncode_r0x001616dd:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        fVar17 = DAT_002a7fec;\n        fVar27 = param_5[3];\n        fVar9 = param_5[1];\n        pdVar21 = (double *)(iVar6 * 8 + param_6);\n        fVar10 = param_5[2];\n        pdVar30 = (double *)(iVar24 * 8 + param_6);\n        fVar11 = *param_5;\n        pdVar28 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec);\n          *pdVar21 = (double)((float)(uint)fVar9 / fVar17);\n          *pdVar28 = (double)((float)(uint)fVar10 / fVar17);\n        }\n        else {\n          uVar3 = (ushort)((uint)fVar11 >> 8);\n          uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);\n          fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          *pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13);\n          *pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);\n          *pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 0x10);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;\n  case 0x40:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }\nLAB_00161285:\n    uVar26 = 0;\n    if (uVar22 < 0x41) {\n      uVar26 = uVar22;\n    }\n    bVar23 = (byte)(uVar26 - 1);\n    bVar12 = bVar23 & 0x1f;\n    uVar18 = 2 << (bVar23 & 0x1f);\n    uVar19 = uVar18;\n    uVar29 = 0 << bVar12 | 2U >> 0x20 - bVar12;\n    if ((uVar26 - 1 & 0x20) != 0) {\n      uVar19 = 0;\n      uVar29 = uVar18;\n    }\n    iVar20 = uVar19 - 1;\n    local_68 = (uVar29 - 1) + (uint)(uVar19 != 0);\n    local_6c = (byte)iVar20;\n    bStack_6b = (byte)((uint)iVar20 >> 8);\n    uStack_6a = (ushort)((uint)iVar20 >> 0x10);\nLAB_001612bc:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      local_64 = 0.0;\n      iVar33 = *(int *)(iVar20 + 8);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(param_1 + 0x298);\n      do {\n        pdVar28 = (double *)(iVar33 * 8 + local_78);\n        pdVar21 = (double *)(local_78 + iVar24 * 8);\n        if ((int)uVar22 < 1) {\n          fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (local_68 < 0) {\n            fVar27 = fVar27 + DAT_0029f714;\n          }\n          local_3c = (double)fVar27;\n          if (local_3c < dVar16) {\n            *pdVar28 = 0.0;\n          }\n          else {\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }\n          dVar15 = 0.0;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\nLAB_00161a0c:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          *pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710;\n          if (0 < (int)uVar22) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar15 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar15 = 0.0;\nLAB_00161c0a:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar15 = dVar14 * dVar15 * (double)DAT_0029f710;\n        }\n        else {\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {\n            *pdVar28 = (double)DAT_0029f710;\n          }\n          else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }\n          *pdVar21 = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }\n          dVar15 = (double)DAT_0029f710;\n        }\n        if (*(int *)(iVar20 + 0x34) != 0) {\n          *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15;\n        }\n        local_64 = (float)((int)local_64 + 1);\n        local_78 = local_78 + iVar6 * 8;\n      } while (local_64 != (float)param_3);\n    }\n  }\n  if (iVar2 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0029eab0();\n  }\n  return;\n}" ({ "{") (declaration "float *pfVar1;" (primitive_type "float") (pointer_declarator "*pfVar1" (* "*") (identifier "pfVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "ushort uVar3;" (type_identifier "ushort") (identifier "uVar3") (; ";")) (declaration "ushort uVar4;" (type_identifier "ushort") (identifier "uVar4") (; ";")) (declaration "ushort uVar5;" (type_identifier "ushort") (identifier "uVar5") (; ";")) (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 "float fVar9;" (primitive_type "float") (identifier "fVar9") (; ";")) (declaration "float fVar10;" (primitive_type "float") (identifier "fVar10") (; ";")) (declaration "float fVar11;" (primitive_type "float") (identifier "fVar11") (; ";")) (declaration "byte bVar12;" (type_identifier "byte") (identifier "bVar12") (; ";")) (declaration "float fVar13;" (primitive_type "float") (identifier "fVar13") (; ";")) (declaration "double dVar14;" (primitive_type "double") (identifier "dVar14") (; ";")) (declaration "double dVar15;" (primitive_type "double") (identifier "dVar15") (; ";")) (declaration "double dVar16;" (primitive_type "double") (identifier "dVar16") (; ";")) (declaration "float fVar17;" (primitive_type "float") (identifier "fVar17") (; ";")) (declaration "uint uVar18;" (type_identifier "uint") (identifier "uVar18") (; ";")) (declaration "uint uVar19;" (type_identifier "uint") (identifier "uVar19") (; ";")) (declaration "int iVar20;" (primitive_type "int") (identifier "iVar20") (; ";")) (declaration "double *pdVar21;" (primitive_type "double") (pointer_declarator "*pdVar21" (* "*") (identifier "pdVar21")) (; ";")) (declaration "uint uVar22;" (type_identifier "uint") (identifier "uVar22") (; ";")) (declaration "byte bVar23;" (type_identifier "byte") (identifier "bVar23") (; ";")) (declaration "int iVar24;" (primitive_type "int") (identifier "iVar24") (; ";")) (declaration "uint uVar25;" (type_identifier "uint") (identifier "uVar25") (; ";")) (declaration "uint uVar26;" (type_identifier "uint") (identifier "uVar26") (; ";")) (declaration "float fVar27;" (primitive_type "float") (identifier "fVar27") (; ";")) (declaration "double *pdVar28;" (primitive_type "double") (pointer_declarator "*pdVar28" (* "*") (identifier "pdVar28")) (; ";")) (declaration "uint uVar29;" (type_identifier "uint") (identifier "uVar29") (; ";")) (declaration "double *pdVar30;" (primitive_type "double") (pointer_declarator "*pdVar30" (* "*") (identifier "pdVar30")) (; ";")) (declaration "ushort uVar31;" (type_identifier "ushort") (identifier "uVar31") (; ";")) (declaration "int iVar32;" (primitive_type "int") (identifier "iVar32") (; ";")) (declaration "int iVar33;" (primitive_type "int") (identifier "iVar33") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "longdouble lVar34;" (type_identifier "longdouble") (identifier "lVar34") (; ";")) (declaration "float *local_80;" (primitive_type "float") (pointer_declarator "*local_80" (* "*") (identifier "local_80")) (; ";")) (declaration "int local_78;" (primitive_type "int") (identifier "local_78") (; ";")) (declaration "byte local_6c;" (type_identifier "byte") (identifier "local_6c") (; ";")) (declaration "byte bStack_6b;" (type_identifier "byte") (identifier "bStack_6b") (; ";")) (declaration "ushort uStack_6a;" (type_identifier "ushort") (identifier "uStack_6a") (; ";")) (declaration "int local_68;" (primitive_type "int") (identifier "local_68") (; ";")) (declaration "float local_64;" (primitive_type "float") (identifier "local_64") (; ";")) (declaration "float local_60;" (primitive_type "float") (identifier "local_60") (; ";")) (declaration "double *local_5c;" (primitive_type "double") (pointer_declarator "*local_5c" (* "*") (identifier "local_5c")) (; ";")) (declaration "double local_3c;" (primitive_type "double") (identifier "local_3c") (; ";")) (declaration "float fStack_2c;" (primitive_type "float") (identifier "fStack_2c") (; ";")) (declaration "undefined4 uStack_28;" (type_identifier "undefined4") (identifier "uStack_28") (; ";")) (expression_statement "fVar10 = DAT_002c5824;" (assignment_expression "fVar10 = DAT_002c5824" (identifier "fVar10") (= "=") (identifier "DAT_002c5824")) (; ";")) (expression_statement "fVar9 = DAT_002a7ff0;" (assignment_expression "fVar9 = DAT_002a7ff0" (identifier "fVar9") (= "=") (identifier "DAT_002a7ff0")) (; ";")) (expression_statement "fVar13 = DAT_002a7fec;" (assignment_expression "fVar13 = DAT_002a7fec" (identifier "fVar13") (= "=") (identifier "DAT_002a7fec")) (; ";")) (expression_statement "fVar27 = DAT_0029f710;" (assignment_expression "fVar27 = DAT_0029f710" (identifier "fVar27") (= "=") (identifier "DAT_0029f710")) (; ";")) (expression_statement "dVar16 = DAT_0029f138;" (assignment_expression "dVar16 = DAT_0029f138" (identifier "dVar16") (= "=") (identifier "DAT_0029f138")) (; ";")) (expression_statement "local_80 = param_5;" (assignment_expression "local_80 = param_5" (identifier "local_80") (= "=") (identifier "param_5")) (; ";")) (expression_statement "local_78 = param_6;" (assignment_expression "local_78 = param_6" (identifier "local_78") (= "=") (identifier "param_6")) (; ";")) (expression_statement "iVar2 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar2 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if (param_1 == 0) {\n                    \n    __assert_fail("image != (Image *) NULL","MagickCore/quantum-import.c",0x1123,"ImportRGBOQuantum"\n                 );\n  }" (if "if") (parenthesized_expression "(param_1 == 0)" (( "(") (binary_expression "param_1 == 0" (identifier "param_1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    __assert_fail("image != (Image *) NULL","MagickCore/quantum-import.c",0x1123,"ImportRGBOQuantum"\n                 );\n  }" ({ "{") (expression_statement "__assert_fail("image != (Image *) NULL","MagickCore/quantum-import.c",0x1123,"ImportRGBOQuantum"\n                 );" (call_expression "__assert_fail("image != (Image *) NULL","MagickCore/quantum-import.c",0x1123,"ImportRGBOQuantum"\n                 )" (identifier "__assert_fail") (argument_list "("image != (Image *) NULL","MagickCore/quantum-import.c",0x1123,"ImportRGBOQuantum"\n                 )" (( "(") (string_literal ""image != (Image *) NULL"" (" """) (string_content "image != (Image *) NULL") (" """)) (, ",") (string_literal ""MagickCore/quantum-import.c"" (" """) (string_content "MagickCore/quantum-import.c") (" """)) (, ",") (number_literal "0x1123") (, ",") (string_literal ""ImportRGBOQuantum"" (" """) (string_content "ImportRGBOQuantum") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if (*(int *)(param_1 + 0x3344) != -0x54535255) {\n                    \n    __assert_fail("image->signature == MagickCoreSignature","MagickCore/quantum-import.c",0x1124,\n                  "ImportRGBOQuantum");\n  }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x3344) != -0x54535255)" (( "(") (binary_expression "*(int *)(param_1 + 0x3344) != -0x54535255" (pointer_expression "*(int *)(param_1 + 0x3344)" (* "*") (cast_expression "(int *)(param_1 + 0x3344)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x3344)" (( "(") (binary_expression "param_1 + 0x3344" (identifier "param_1") (+ "+") (number_literal "0x3344")) () ")")))) (!= "!=") (number_literal "-0x54535255")) () ")")) (compound_statement "{\n                    \n    __assert_fail("image->signature == MagickCoreSignature","MagickCore/quantum-import.c",0x1124,\n                  "ImportRGBOQuantum");\n  }" ({ "{") (expression_statement "__assert_fail("image->signature == MagickCoreSignature","MagickCore/quantum-import.c",0x1124,\n                  "ImportRGBOQuantum");" (call_expression "__assert_fail("image->signature == MagickCoreSignature","MagickCore/quantum-import.c",0x1124,\n                  "ImportRGBOQuantum")" (identifier "__assert_fail") (argument_list "("image->signature == MagickCoreSignature","MagickCore/quantum-import.c",0x1124,\n                  "ImportRGBOQuantum")" (( "(") (string_literal ""image->signature == MagickCoreSignature"" (" """) (string_content "image->signature == MagickCoreSignature") (" """)) (, ",") (string_literal ""MagickCore/quantum-import.c"" (" """) (string_content "MagickCore/quantum-import.c") (" """)) (, ",") (number_literal "0x1124") (, ",") (string_literal ""ImportRGBOQuantum"" (" """) (string_content "ImportRGBOQuantum") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "uVar22 = *param_2;" (assignment_expression "uVar22 = *param_2" (identifier "uVar22") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (switch_statement "switch(uVar22) {\n  case 8:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar32 = 0;\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      uVar22 = param_2[9];\n      do {\n        bVar12 = *(byte *)((int)param_5 + 1);\n        bVar23 = *(byte *)((int)param_5 + 2);\n        *(double *)(param_6 + iVar24 * 8) = (double)((float)*(byte *)param_5 * fVar9);\n        *(double *)(param_6 + iVar6 * 8) = (double)((float)bVar12 * fVar9);\n        *(double *)(param_6 + iVar7 * 8) = (double)((float)bVar23 * fVar9);\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9);\n        }\n        param_5 = (float *)((int)param_5 + uVar22 + 4);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;\n  default:\n    local_6c = 0;\n    bStack_6b = 0;\n    uStack_6a = 0;\n    local_68 = 0;\n    if (uVar22 != 0) goto LAB_00161285;\n    goto LAB_001612bc;\n  case 10:\n    if (param_2[0xb] == 0) {\n      if (0 < param_3) {\n        fVar27 = 0.0;\n        local_6c = 0;\n        bStack_6b = 0;\n        uStack_6a = 0;\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        uVar22 = param_2[9];\n        iVar33 = *(int *)(param_1 + 0x298);\n        uVar26 = 0;\n        do {\n          iVar24 = 0;\n          uVar29 = uVar26;\ncode_r0x001620a2:\n          if (uVar29 % 3 == 1) {\n            uVar26 = (uint)fVar27 >> 6 & 0xffc0;\ncode_r0x001620cb:\n            dVar16 = (double)uVar26;\n            if (iVar24 != 2) goto code_r0x001620d7;\ncode_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;\ncode_r0x001620f8:\n            uVar29 = uVar29 + 1;\n            iVar24 = iVar24 + 1;\n            goto code_r0x001620a2;\n          }\n          if (uVar29 % 3 == 2) {\n            uVar26 = ((uint)fVar27 & 0xffc) << 4;\n            goto code_r0x001620cb;\n          }\n          pfVar1 = local_80 + 1;\n          fVar27 = *local_80;\n          if (param_2[0x10] != 1) {\n            fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          }\n          dVar16 = (double)(((uint)fVar27 >> 0x16) << 6);\n          local_80 = pfVar1;\n          if (iVar24 == 2) goto code_r0x00162130;\ncode_r0x001620d7:\n          uVar26 = uVar29 + 1;\n          if (iVar24 != 3) {\n            if (iVar24 == 1) {\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }\n            else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }\n            goto code_r0x001620f8;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;\n          }\ncode_r0x0016217a:\n          iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar24;\n          bStack_6b = (byte)((uint)iVar24 >> 8);\n          uStack_6a = (ushort)((uint)iVar24 >> 0x10);\n          local_80 = (float *)((int)local_80 + uVar22);\n          local_78 = local_78 + iVar33 * 8;\n        } while (iVar24 != param_3);\n      }\n    }\n    else if (0 < param_3) {\n      iVar33 = *(int *)(param_1 + 0x2a8);\n      iVar20 = 0;\n      iVar24 = *(int *)(iVar33 + 8);\n      iVar6 = *(int *)(param_1 + 0x298);\n      iVar7 = *(int *)(iVar33 + 0x34);\n      iVar8 = *(int *)(iVar33 + 0x20);\n      iVar32 = *(int *)(iVar33 + 0x14);\n      do {\n        uVar29 = 0;\n        uVar26 = 10;\n        uVar22 = param_2[0x14];\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar26 <= uVar22) {\n            uVar18 = uVar26;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar24 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar32 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        uVar26 = 0;\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar8 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar29 <= uVar22) {\n            uVar18 = uVar29;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar29 = uVar29 - uVar18;\n          uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar29);\n        param_2[0x14] = uVar22;\n        if (iVar7 != 0) {\n          *(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));\n        }\n        iVar20 = iVar20 + 1;\n        local_78 = local_78 + iVar6 * 8;\n      } while (iVar20 != param_3);\n    }\n    break;\n  case 0x10:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        uVar22 = param_2[0x10];\n        do {\n          if (uVar22 == 1) {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          else {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          lVar34 = (longdouble)FUN_00159350();\n          if (*(int *)(iVar33 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n    }\n    else if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(iVar20 + 0x20);\n      iVar7 = *(int *)(iVar20 + 8);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        uVar3 = *(ushort *)(param_5 + 1);\n        uVar31 = *(ushort *)((int)param_5 + 6);\n        uVar4 = *(ushort *)param_5;\n        pdVar21 = (double *)(iVar24 * 8 + param_6);\n        uVar5 = *(ushort *)((int)param_5 + 2);\n        pdVar28 = (double *)(iVar6 * 8 + param_6);\n        pdVar30 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)uVar4;\n          *pdVar21 = (double)uVar5;\n          *pdVar28 = (double)uVar3;\n        }\n        else {\n          uVar31 = uVar31 << 8 | uVar31 >> 8;\n          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);\n          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);\n          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 8);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;\n  case 0x18:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }\n    goto code_r0x001616dd;\n  case 0x20:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        local_5c = (double *)0x0;\n        uVar22 = param_2[9];\n        uVar26 = param_2[0x10];\n        iVar33 = *(int *)(param_1 + 0x298);\n        do {\n          local_64 = *param_5;\n          if (uVar26 != 1) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3));\n          }\n          fVar13 = (local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar27 = fVar10;\n          if ((fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)) {\n            fVar27 = fVar13;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 8) * 8) = (double)fVar27;\n          if (uVar26 == 1) {\n            fVar27 = param_5[1];\n          }\n          else {\n            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));\n          }\n          fVar27 = (fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            local_60 = param_5[2];\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));\n          }\n          fVar27 = (local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            fVar27 = param_5[3];\n            local_6c = SUB41(fVar27,0);\n            bStack_6b = (byte)((uint)fVar27 >> 8);\n            uStack_6a = (ushort)((uint)fVar27 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);\n            bStack_6b = *(byte *)((int)param_5 + 0xe);\n            local_6c = *(byte *)((int)param_5 + 0xf);\n          }\n          fVar27 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          param_5 = (float *)((int)param_5 + uVar22 + 0x10);\n          param_6 = param_6 + iVar33 * 8;\n        } while (local_5c != (double *)param_3);\n      }\n      break;\n    }\ncode_r0x001616dd:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        fVar17 = DAT_002a7fec;\n        fVar27 = param_5[3];\n        fVar9 = param_5[1];\n        pdVar21 = (double *)(iVar6 * 8 + param_6);\n        fVar10 = param_5[2];\n        pdVar30 = (double *)(iVar24 * 8 + param_6);\n        fVar11 = *param_5;\n        pdVar28 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec);\n          *pdVar21 = (double)((float)(uint)fVar9 / fVar17);\n          *pdVar28 = (double)((float)(uint)fVar10 / fVar17);\n        }\n        else {\n          uVar3 = (ushort)((uint)fVar11 >> 8);\n          uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);\n          fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          *pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13);\n          *pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);\n          *pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 0x10);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;\n  case 0x40:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }\nLAB_00161285:\n    uVar26 = 0;\n    if (uVar22 < 0x41) {\n      uVar26 = uVar22;\n    }\n    bVar23 = (byte)(uVar26 - 1);\n    bVar12 = bVar23 & 0x1f;\n    uVar18 = 2 << (bVar23 & 0x1f);\n    uVar19 = uVar18;\n    uVar29 = 0 << bVar12 | 2U >> 0x20 - bVar12;\n    if ((uVar26 - 1 & 0x20) != 0) {\n      uVar19 = 0;\n      uVar29 = uVar18;\n    }\n    iVar20 = uVar19 - 1;\n    local_68 = (uVar29 - 1) + (uint)(uVar19 != 0);\n    local_6c = (byte)iVar20;\n    bStack_6b = (byte)((uint)iVar20 >> 8);\n    uStack_6a = (ushort)((uint)iVar20 >> 0x10);\nLAB_001612bc:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      local_64 = 0.0;\n      iVar33 = *(int *)(iVar20 + 8);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(param_1 + 0x298);\n      do {\n        pdVar28 = (double *)(iVar33 * 8 + local_78);\n        pdVar21 = (double *)(local_78 + iVar24 * 8);\n        if ((int)uVar22 < 1) {\n          fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (local_68 < 0) {\n            fVar27 = fVar27 + DAT_0029f714;\n          }\n          local_3c = (double)fVar27;\n          if (local_3c < dVar16) {\n            *pdVar28 = 0.0;\n          }\n          else {\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }\n          dVar15 = 0.0;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\nLAB_00161a0c:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          *pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710;\n          if (0 < (int)uVar22) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar15 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar15 = 0.0;\nLAB_00161c0a:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar15 = dVar14 * dVar15 * (double)DAT_0029f710;\n        }\n        else {\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {\n            *pdVar28 = (double)DAT_0029f710;\n          }\n          else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }\n          *pdVar21 = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }\n          dVar15 = (double)DAT_0029f710;\n        }\n        if (*(int *)(iVar20 + 0x34) != 0) {\n          *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15;\n        }\n        local_64 = (float)((int)local_64 + 1);\n        local_78 = local_78 + iVar6 * 8;\n      } while (local_64 != (float)param_3);\n    }\n  }" (switch "switch") (parenthesized_expression "(uVar22)" (( "(") (identifier "uVar22") () ")")) (compound_statement "{\n  case 8:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar32 = 0;\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      uVar22 = param_2[9];\n      do {\n        bVar12 = *(byte *)((int)param_5 + 1);\n        bVar23 = *(byte *)((int)param_5 + 2);\n        *(double *)(param_6 + iVar24 * 8) = (double)((float)*(byte *)param_5 * fVar9);\n        *(double *)(param_6 + iVar6 * 8) = (double)((float)bVar12 * fVar9);\n        *(double *)(param_6 + iVar7 * 8) = (double)((float)bVar23 * fVar9);\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9);\n        }\n        param_5 = (float *)((int)param_5 + uVar22 + 4);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;\n  default:\n    local_6c = 0;\n    bStack_6b = 0;\n    uStack_6a = 0;\n    local_68 = 0;\n    if (uVar22 != 0) goto LAB_00161285;\n    goto LAB_001612bc;\n  case 10:\n    if (param_2[0xb] == 0) {\n      if (0 < param_3) {\n        fVar27 = 0.0;\n        local_6c = 0;\n        bStack_6b = 0;\n        uStack_6a = 0;\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        uVar22 = param_2[9];\n        iVar33 = *(int *)(param_1 + 0x298);\n        uVar26 = 0;\n        do {\n          iVar24 = 0;\n          uVar29 = uVar26;\ncode_r0x001620a2:\n          if (uVar29 % 3 == 1) {\n            uVar26 = (uint)fVar27 >> 6 & 0xffc0;\ncode_r0x001620cb:\n            dVar16 = (double)uVar26;\n            if (iVar24 != 2) goto code_r0x001620d7;\ncode_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;\ncode_r0x001620f8:\n            uVar29 = uVar29 + 1;\n            iVar24 = iVar24 + 1;\n            goto code_r0x001620a2;\n          }\n          if (uVar29 % 3 == 2) {\n            uVar26 = ((uint)fVar27 & 0xffc) << 4;\n            goto code_r0x001620cb;\n          }\n          pfVar1 = local_80 + 1;\n          fVar27 = *local_80;\n          if (param_2[0x10] != 1) {\n            fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          }\n          dVar16 = (double)(((uint)fVar27 >> 0x16) << 6);\n          local_80 = pfVar1;\n          if (iVar24 == 2) goto code_r0x00162130;\ncode_r0x001620d7:\n          uVar26 = uVar29 + 1;\n          if (iVar24 != 3) {\n            if (iVar24 == 1) {\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }\n            else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }\n            goto code_r0x001620f8;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;\n          }\ncode_r0x0016217a:\n          iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar24;\n          bStack_6b = (byte)((uint)iVar24 >> 8);\n          uStack_6a = (ushort)((uint)iVar24 >> 0x10);\n          local_80 = (float *)((int)local_80 + uVar22);\n          local_78 = local_78 + iVar33 * 8;\n        } while (iVar24 != param_3);\n      }\n    }\n    else if (0 < param_3) {\n      iVar33 = *(int *)(param_1 + 0x2a8);\n      iVar20 = 0;\n      iVar24 = *(int *)(iVar33 + 8);\n      iVar6 = *(int *)(param_1 + 0x298);\n      iVar7 = *(int *)(iVar33 + 0x34);\n      iVar8 = *(int *)(iVar33 + 0x20);\n      iVar32 = *(int *)(iVar33 + 0x14);\n      do {\n        uVar29 = 0;\n        uVar26 = 10;\n        uVar22 = param_2[0x14];\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar26 <= uVar22) {\n            uVar18 = uVar26;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar24 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar32 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        uVar26 = 0;\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar8 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar29 <= uVar22) {\n            uVar18 = uVar29;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar29 = uVar29 - uVar18;\n          uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar29);\n        param_2[0x14] = uVar22;\n        if (iVar7 != 0) {\n          *(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));\n        }\n        iVar20 = iVar20 + 1;\n        local_78 = local_78 + iVar6 * 8;\n      } while (iVar20 != param_3);\n    }\n    break;\n  case 0x10:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        uVar22 = param_2[0x10];\n        do {\n          if (uVar22 == 1) {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          else {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          lVar34 = (longdouble)FUN_00159350();\n          if (*(int *)(iVar33 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n    }\n    else if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(iVar20 + 0x20);\n      iVar7 = *(int *)(iVar20 + 8);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        uVar3 = *(ushort *)(param_5 + 1);\n        uVar31 = *(ushort *)((int)param_5 + 6);\n        uVar4 = *(ushort *)param_5;\n        pdVar21 = (double *)(iVar24 * 8 + param_6);\n        uVar5 = *(ushort *)((int)param_5 + 2);\n        pdVar28 = (double *)(iVar6 * 8 + param_6);\n        pdVar30 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)uVar4;\n          *pdVar21 = (double)uVar5;\n          *pdVar28 = (double)uVar3;\n        }\n        else {\n          uVar31 = uVar31 << 8 | uVar31 >> 8;\n          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);\n          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);\n          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 8);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;\n  case 0x18:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }\n    goto code_r0x001616dd;\n  case 0x20:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        local_5c = (double *)0x0;\n        uVar22 = param_2[9];\n        uVar26 = param_2[0x10];\n        iVar33 = *(int *)(param_1 + 0x298);\n        do {\n          local_64 = *param_5;\n          if (uVar26 != 1) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3));\n          }\n          fVar13 = (local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar27 = fVar10;\n          if ((fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)) {\n            fVar27 = fVar13;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 8) * 8) = (double)fVar27;\n          if (uVar26 == 1) {\n            fVar27 = param_5[1];\n          }\n          else {\n            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));\n          }\n          fVar27 = (fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            local_60 = param_5[2];\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));\n          }\n          fVar27 = (local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            fVar27 = param_5[3];\n            local_6c = SUB41(fVar27,0);\n            bStack_6b = (byte)((uint)fVar27 >> 8);\n            uStack_6a = (ushort)((uint)fVar27 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);\n            bStack_6b = *(byte *)((int)param_5 + 0xe);\n            local_6c = *(byte *)((int)param_5 + 0xf);\n          }\n          fVar27 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          param_5 = (float *)((int)param_5 + uVar22 + 0x10);\n          param_6 = param_6 + iVar33 * 8;\n        } while (local_5c != (double *)param_3);\n      }\n      break;\n    }\ncode_r0x001616dd:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        fVar17 = DAT_002a7fec;\n        fVar27 = param_5[3];\n        fVar9 = param_5[1];\n        pdVar21 = (double *)(iVar6 * 8 + param_6);\n        fVar10 = param_5[2];\n        pdVar30 = (double *)(iVar24 * 8 + param_6);\n        fVar11 = *param_5;\n        pdVar28 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec);\n          *pdVar21 = (double)((float)(uint)fVar9 / fVar17);\n          *pdVar28 = (double)((float)(uint)fVar10 / fVar17);\n        }\n        else {\n          uVar3 = (ushort)((uint)fVar11 >> 8);\n          uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);\n          fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          *pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13);\n          *pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);\n          *pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 0x10);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;\n  case 0x40:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }\nLAB_00161285:\n    uVar26 = 0;\n    if (uVar22 < 0x41) {\n      uVar26 = uVar22;\n    }\n    bVar23 = (byte)(uVar26 - 1);\n    bVar12 = bVar23 & 0x1f;\n    uVar18 = 2 << (bVar23 & 0x1f);\n    uVar19 = uVar18;\n    uVar29 = 0 << bVar12 | 2U >> 0x20 - bVar12;\n    if ((uVar26 - 1 & 0x20) != 0) {\n      uVar19 = 0;\n      uVar29 = uVar18;\n    }\n    iVar20 = uVar19 - 1;\n    local_68 = (uVar29 - 1) + (uint)(uVar19 != 0);\n    local_6c = (byte)iVar20;\n    bStack_6b = (byte)((uint)iVar20 >> 8);\n    uStack_6a = (ushort)((uint)iVar20 >> 0x10);\nLAB_001612bc:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      local_64 = 0.0;\n      iVar33 = *(int *)(iVar20 + 8);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(param_1 + 0x298);\n      do {\n        pdVar28 = (double *)(iVar33 * 8 + local_78);\n        pdVar21 = (double *)(local_78 + iVar24 * 8);\n        if ((int)uVar22 < 1) {\n          fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (local_68 < 0) {\n            fVar27 = fVar27 + DAT_0029f714;\n          }\n          local_3c = (double)fVar27;\n          if (local_3c < dVar16) {\n            *pdVar28 = 0.0;\n          }\n          else {\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }\n          dVar15 = 0.0;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\nLAB_00161a0c:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          *pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710;\n          if (0 < (int)uVar22) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar15 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar15 = 0.0;\nLAB_00161c0a:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar15 = dVar14 * dVar15 * (double)DAT_0029f710;\n        }\n        else {\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {\n            *pdVar28 = (double)DAT_0029f710;\n          }\n          else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }\n          *pdVar21 = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }\n          dVar15 = (double)DAT_0029f710;\n        }\n        if (*(int *)(iVar20 + 0x34) != 0) {\n          *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15;\n        }\n        local_64 = (float)((int)local_64 + 1);\n        local_78 = local_78 + iVar6 * 8;\n      } while (local_64 != (float)param_3);\n    }\n  }" ({ "{") (case_statement "case 8:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar32 = 0;\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      uVar22 = param_2[9];\n      do {\n        bVar12 = *(byte *)((int)param_5 + 1);\n        bVar23 = *(byte *)((int)param_5 + 2);\n        *(double *)(param_6 + iVar24 * 8) = (double)((float)*(byte *)param_5 * fVar9);\n        *(double *)(param_6 + iVar6 * 8) = (double)((float)bVar12 * fVar9);\n        *(double *)(param_6 + iVar7 * 8) = (double)((float)bVar23 * fVar9);\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9);\n        }\n        param_5 = (float *)((int)param_5 + uVar22 + 4);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;" (case "case") (number_literal "8") (: ":") (if_statement "if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar32 = 0;\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      uVar22 = param_2[9];\n      do {\n        bVar12 = *(byte *)((int)param_5 + 1);\n        bVar23 = *(byte *)((int)param_5 + 2);\n        *(double *)(param_6 + iVar24 * 8) = (double)((float)*(byte *)param_5 * fVar9);\n        *(double *)(param_6 + iVar6 * 8) = (double)((float)bVar12 * fVar9);\n        *(double *)(param_6 + iVar7 * 8) = (double)((float)bVar23 * fVar9);\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9);\n        }\n        param_5 = (float *)((int)param_5 + uVar22 + 4);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }" (if "if") (parenthesized_expression "(0 < param_3)" (( "(") (binary_expression "0 < param_3" (number_literal "0") (< "<") (identifier "param_3")) () ")")) (compound_statement "{\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar32 = 0;\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      uVar22 = param_2[9];\n      do {\n        bVar12 = *(byte *)((int)param_5 + 1);\n        bVar23 = *(byte *)((int)param_5 + 2);\n        *(double *)(param_6 + iVar24 * 8) = (double)((float)*(byte *)param_5 * fVar9);\n        *(double *)(param_6 + iVar6 * 8) = (double)((float)bVar12 * fVar9);\n        *(double *)(param_6 + iVar7 * 8) = (double)((float)bVar23 * fVar9);\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9);\n        }\n        param_5 = (float *)((int)param_5 + uVar22 + 4);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }" ({ "{") (expression_statement "iVar20 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar20 = *(int *)(param_1 + 0x2a8)" (identifier "iVar20") (= "=") (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")"))))) (; ";")) (expression_statement "iVar33 = *(int *)(param_1 + 0x298);" (assignment_expression "iVar33 = *(int *)(param_1 + 0x298)" (identifier "iVar33") (= "=") (pointer_expression "*(int *)(param_1 + 0x298)" (* "*") (cast_expression "(int *)(param_1 + 0x298)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x298)" (( "(") (binary_expression "param_1 + 0x298" (identifier "param_1") (+ "+") (number_literal "0x298")) () ")"))))) (; ";")) (expression_statement "iVar24 = *(int *)(iVar20 + 8);" (assignment_expression "iVar24 = *(int *)(iVar20 + 8)" (identifier "iVar24") (= "=") (pointer_expression "*(int *)(iVar20 + 8)" (* "*") (cast_expression "(int *)(iVar20 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + 8)" (( "(") (binary_expression "iVar20 + 8" (identifier "iVar20") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "iVar32 = 0;" (assignment_expression "iVar32 = 0" (identifier "iVar32") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar6 = *(int *)(iVar20 + 0x14);" (assignment_expression "iVar6 = *(int *)(iVar20 + 0x14)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(iVar20 + 0x14)" (* "*") (cast_expression "(int *)(iVar20 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + 0x14)" (( "(") (binary_expression "iVar20 + 0x14" (identifier "iVar20") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "iVar7 = *(int *)(iVar20 + 0x20);" (assignment_expression "iVar7 = *(int *)(iVar20 + 0x20)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(iVar20 + 0x20)" (* "*") (cast_expression "(int *)(iVar20 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + 0x20)" (( "(") (binary_expression "iVar20 + 0x20" (identifier "iVar20") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "iVar8 = *(int *)(iVar20 + 0x34);" (assignment_expression "iVar8 = *(int *)(iVar20 + 0x34)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(iVar20 + 0x34)" (* "*") (cast_expression "(int *)(iVar20 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + 0x34)" (( "(") (binary_expression "iVar20 + 0x34" (identifier "iVar20") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (expression_statement "uVar22 = param_2[9];" (assignment_expression "uVar22 = param_2[9]" (identifier "uVar22") (= "=") (subscript_expression "param_2[9]" (identifier "param_2") ([ "[") (number_literal "9") (] "]"))) (; ";")) (do_statement "do {\n        bVar12 = *(byte *)((int)param_5 + 1);\n        bVar23 = *(byte *)((int)param_5 + 2);\n        *(double *)(param_6 + iVar24 * 8) = (double)((float)*(byte *)param_5 * fVar9);\n        *(double *)(param_6 + iVar6 * 8) = (double)((float)bVar12 * fVar9);\n        *(double *)(param_6 + iVar7 * 8) = (double)((float)bVar23 * fVar9);\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9);\n        }\n        param_5 = (float *)((int)param_5 + uVar22 + 4);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);" (do "do") (compound_statement "{\n        bVar12 = *(byte *)((int)param_5 + 1);\n        bVar23 = *(byte *)((int)param_5 + 2);\n        *(double *)(param_6 + iVar24 * 8) = (double)((float)*(byte *)param_5 * fVar9);\n        *(double *)(param_6 + iVar6 * 8) = (double)((float)bVar12 * fVar9);\n        *(double *)(param_6 + iVar7 * 8) = (double)((float)bVar23 * fVar9);\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9);\n        }\n        param_5 = (float *)((int)param_5 + uVar22 + 4);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      }" ({ "{") (expression_statement "bVar12 = *(byte *)((int)param_5 + 1);" (assignment_expression "bVar12 = *(byte *)((int)param_5 + 1)" (identifier "bVar12") (= "=") (pointer_expression "*(byte *)((int)param_5 + 1)" (* "*") (cast_expression "(byte *)((int)param_5 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_5 + 1)" (( "(") (binary_expression "(int)param_5 + 1" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "bVar23 = *(byte *)((int)param_5 + 2);" (assignment_expression "bVar23 = *(byte *)((int)param_5 + 2)" (identifier "bVar23") (= "=") (pointer_expression "*(byte *)((int)param_5 + 2)" (* "*") (cast_expression "(byte *)((int)param_5 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_5 + 2)" (( "(") (binary_expression "(int)param_5 + 2" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "*(double *)(param_6 + iVar24 * 8) = (double)((float)*(byte *)param_5 * fVar9);" (assignment_expression "*(double *)(param_6 + iVar24 * 8) = (double)((float)*(byte *)param_5 * fVar9)" (pointer_expression "*(double *)(param_6 + iVar24 * 8)" (* "*") (cast_expression "(double *)(param_6 + iVar24 * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + iVar24 * 8)" (( "(") (binary_expression "param_6 + iVar24 * 8" (identifier "param_6") (+ "+") (binary_expression "iVar24 * 8" (identifier "iVar24") (* "*") (number_literal "8"))) () ")")))) (= "=") (cast_expression "(double)((float)*(byte *)param_5 * fVar9)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "((float)*(byte *)param_5 * fVar9)" (( "(") (binary_expression "(float)*(byte *)param_5 * fVar9" (cast_expression "(float)*(byte *)param_5" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (pointer_expression "*(byte *)param_5" (* "*") (cast_expression "(byte *)param_5" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_5")))) (* "*") (identifier "fVar9")) () ")")))) (; ";")) (expression_statement "*(double *)(param_6 + iVar6 * 8) = (double)((float)bVar12 * fVar9);" (assignment_expression "*(double *)(param_6 + iVar6 * 8) = (double)((float)bVar12 * fVar9)" (pointer_expression "*(double *)(param_6 + iVar6 * 8)" (* "*") (cast_expression "(double *)(param_6 + iVar6 * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + iVar6 * 8)" (( "(") (binary_expression "param_6 + iVar6 * 8" (identifier "param_6") (+ "+") (binary_expression "iVar6 * 8" (identifier "iVar6") (* "*") (number_literal "8"))) () ")")))) (= "=") (cast_expression "(double)((float)bVar12 * fVar9)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "((float)bVar12 * fVar9)" (( "(") (binary_expression "(float)bVar12 * fVar9" (cast_expression "(float)bVar12" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (identifier "bVar12")) (* "*") (identifier "fVar9")) () ")")))) (; ";")) (expression_statement "*(double *)(param_6 + iVar7 * 8) = (double)((float)bVar23 * fVar9);" (assignment_expression "*(double *)(param_6 + iVar7 * 8) = (double)((float)bVar23 * fVar9)" (pointer_expression "*(double *)(param_6 + iVar7 * 8)" (* "*") (cast_expression "(double *)(param_6 + iVar7 * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + iVar7 * 8)" (( "(") (binary_expression "param_6 + iVar7 * 8" (identifier "param_6") (+ "+") (binary_expression "iVar7 * 8" (identifier "iVar7") (* "*") (number_literal "8"))) () ")")))) (= "=") (cast_expression "(double)((float)bVar23 * fVar9)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "((float)bVar23 * fVar9)" (( "(") (binary_expression "(float)bVar23 * fVar9" (cast_expression "(float)bVar23" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (identifier "bVar23")) (* "*") (identifier "fVar9")) () ")")))) (; ";")) (if_statement "if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9);\n        }" (if "if") (parenthesized_expression "(iVar8 != 0)" (( "(") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9);\n        }" ({ "{") (expression_statement "*(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9);" (assignment_expression "*(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9)" (pointer_expression "*(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8)" (* "*") (cast_expression "(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + *(int *)(iVar20 + 0x38) * 8)" (( "(") (binary_expression "param_6 + *(int *)(iVar20 + 0x38) * 8" (identifier "param_6") (+ "+") (binary_expression "*(int *)(iVar20 + 0x38) * 8" (pointer_expression "*(int *)(iVar20 + 0x38)" (* "*") (cast_expression "(int *)(iVar20 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + 0x38)" (( "(") (binary_expression "iVar20 + 0x38" (identifier "iVar20") (+ "+") (number_literal "0x38")) () ")")))) (* "*") (number_literal "8"))) () ")")))) (= "=") (cast_expression "(double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9)" (( "(") (binary_expression "DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9" (identifier "DAT_0029f710") (- "-") (binary_expression "(float)*(byte *)((int)param_5 + 3) * fVar9" (cast_expression "(float)*(byte *)((int)param_5 + 3)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (pointer_expression "*(byte *)((int)param_5 + 3)" (* "*") (cast_expression "(byte *)((int)param_5 + 3)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_5 + 3)" (( "(") (binary_expression "(int)param_5 + 3" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (+ "+") (number_literal "3")) () ")"))))) (* "*") (identifier "fVar9"))) () ")")))) (; ";")) (} "}"))) (expression_statement "param_5 = (float *)((int)param_5 + uVar22 + 4);" (assignment_expression "param_5 = (float *)((int)param_5 + uVar22 + 4)" (identifier "param_5") (= "=") (cast_expression "(float *)((int)param_5 + uVar22 + 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_5 + uVar22 + 4)" (( "(") (binary_expression "(int)param_5 + uVar22 + 4" (binary_expression "(int)param_5 + uVar22" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (+ "+") (identifier "uVar22")) (+ "+") (number_literal "4")) () ")")))) (; ";")) (expression_statement "iVar32 = iVar32 + 1;" (assignment_expression "iVar32 = iVar32 + 1" (identifier "iVar32") (= "=") (binary_expression "iVar32 + 1" (identifier "iVar32") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_6 = param_6 + iVar33 * 8;" (assignment_expression "param_6 = param_6 + iVar33 * 8" (identifier "param_6") (= "=") (binary_expression "param_6 + iVar33 * 8" (identifier "param_6") (+ "+") (binary_expression "iVar33 * 8" (identifier "iVar33") (* "*") (number_literal "8")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar32 != param_3)" (( "(") (binary_expression "iVar32 != param_3" (identifier "iVar32") (!= "!=") (identifier "param_3")) () ")")) (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "default:\n    local_6c = 0;\n    bStack_6b = 0;\n    uStack_6a = 0;\n    local_68 = 0;\n    if (uVar22 != 0) goto LAB_00161285;\n    goto LAB_001612bc;" (default "default") (: ":") (expression_statement "local_6c = 0;" (assignment_expression "local_6c = 0" (identifier "local_6c") (= "=") (number_literal "0")) (; ";")) (expression_statement "bStack_6b = 0;" (assignment_expression "bStack_6b = 0" (identifier "bStack_6b") (= "=") (number_literal "0")) (; ";")) (expression_statement "uStack_6a = 0;" (assignment_expression "uStack_6a = 0" (identifier "uStack_6a") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_68 = 0;" (assignment_expression "local_68 = 0" (identifier "local_68") (= "=") (number_literal "0")) (; ";")) (if_statement "if (uVar22 != 0) goto LAB_00161285;" (if "if") (parenthesized_expression "(uVar22 != 0)" (( "(") (binary_expression "uVar22 != 0" (identifier "uVar22") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00161285;" (goto "goto") (statement_identifier "LAB_00161285") (; ";"))) (goto_statement "goto LAB_001612bc;" (goto "goto") (statement_identifier "LAB_001612bc") (; ";"))) (case_statement "case 10:\n    if (param_2[0xb] == 0) {\n      if (0 < param_3) {\n        fVar27 = 0.0;\n        local_6c = 0;\n        bStack_6b = 0;\n        uStack_6a = 0;\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        uVar22 = param_2[9];\n        iVar33 = *(int *)(param_1 + 0x298);\n        uVar26 = 0;\n        do {\n          iVar24 = 0;\n          uVar29 = uVar26;\ncode_r0x001620a2:\n          if (uVar29 % 3 == 1) {\n            uVar26 = (uint)fVar27 >> 6 & 0xffc0;\ncode_r0x001620cb:\n            dVar16 = (double)uVar26;\n            if (iVar24 != 2) goto code_r0x001620d7;\ncode_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;\ncode_r0x001620f8:\n            uVar29 = uVar29 + 1;\n            iVar24 = iVar24 + 1;\n            goto code_r0x001620a2;\n          }\n          if (uVar29 % 3 == 2) {\n            uVar26 = ((uint)fVar27 & 0xffc) << 4;\n            goto code_r0x001620cb;\n          }\n          pfVar1 = local_80 + 1;\n          fVar27 = *local_80;\n          if (param_2[0x10] != 1) {\n            fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          }\n          dVar16 = (double)(((uint)fVar27 >> 0x16) << 6);\n          local_80 = pfVar1;\n          if (iVar24 == 2) goto code_r0x00162130;\ncode_r0x001620d7:\n          uVar26 = uVar29 + 1;\n          if (iVar24 != 3) {\n            if (iVar24 == 1) {\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }\n            else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }\n            goto code_r0x001620f8;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;\n          }\ncode_r0x0016217a:\n          iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar24;\n          bStack_6b = (byte)((uint)iVar24 >> 8);\n          uStack_6a = (ushort)((uint)iVar24 >> 0x10);\n          local_80 = (float *)((int)local_80 + uVar22);\n          local_78 = local_78 + iVar33 * 8;\n        } while (iVar24 != param_3);\n      }\n    }\n    else if (0 < param_3) {\n      iVar33 = *(int *)(param_1 + 0x2a8);\n      iVar20 = 0;\n      iVar24 = *(int *)(iVar33 + 8);\n      iVar6 = *(int *)(param_1 + 0x298);\n      iVar7 = *(int *)(iVar33 + 0x34);\n      iVar8 = *(int *)(iVar33 + 0x20);\n      iVar32 = *(int *)(iVar33 + 0x14);\n      do {\n        uVar29 = 0;\n        uVar26 = 10;\n        uVar22 = param_2[0x14];\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar26 <= uVar22) {\n            uVar18 = uVar26;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar24 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar32 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        uVar26 = 0;\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar8 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar29 <= uVar22) {\n            uVar18 = uVar29;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar29 = uVar29 - uVar18;\n          uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar29);\n        param_2[0x14] = uVar22;\n        if (iVar7 != 0) {\n          *(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));\n        }\n        iVar20 = iVar20 + 1;\n        local_78 = local_78 + iVar6 * 8;\n      } while (iVar20 != param_3);\n    }\n    break;" (case "case") (number_literal "10") (: ":") (if_statement "if (param_2[0xb] == 0) {\n      if (0 < param_3) {\n        fVar27 = 0.0;\n        local_6c = 0;\n        bStack_6b = 0;\n        uStack_6a = 0;\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        uVar22 = param_2[9];\n        iVar33 = *(int *)(param_1 + 0x298);\n        uVar26 = 0;\n        do {\n          iVar24 = 0;\n          uVar29 = uVar26;\ncode_r0x001620a2:\n          if (uVar29 % 3 == 1) {\n            uVar26 = (uint)fVar27 >> 6 & 0xffc0;\ncode_r0x001620cb:\n            dVar16 = (double)uVar26;\n            if (iVar24 != 2) goto code_r0x001620d7;\ncode_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;\ncode_r0x001620f8:\n            uVar29 = uVar29 + 1;\n            iVar24 = iVar24 + 1;\n            goto code_r0x001620a2;\n          }\n          if (uVar29 % 3 == 2) {\n            uVar26 = ((uint)fVar27 & 0xffc) << 4;\n            goto code_r0x001620cb;\n          }\n          pfVar1 = local_80 + 1;\n          fVar27 = *local_80;\n          if (param_2[0x10] != 1) {\n            fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          }\n          dVar16 = (double)(((uint)fVar27 >> 0x16) << 6);\n          local_80 = pfVar1;\n          if (iVar24 == 2) goto code_r0x00162130;\ncode_r0x001620d7:\n          uVar26 = uVar29 + 1;\n          if (iVar24 != 3) {\n            if (iVar24 == 1) {\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }\n            else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }\n            goto code_r0x001620f8;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;\n          }\ncode_r0x0016217a:\n          iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar24;\n          bStack_6b = (byte)((uint)iVar24 >> 8);\n          uStack_6a = (ushort)((uint)iVar24 >> 0x10);\n          local_80 = (float *)((int)local_80 + uVar22);\n          local_78 = local_78 + iVar33 * 8;\n        } while (iVar24 != param_3);\n      }\n    }\n    else if (0 < param_3) {\n      iVar33 = *(int *)(param_1 + 0x2a8);\n      iVar20 = 0;\n      iVar24 = *(int *)(iVar33 + 8);\n      iVar6 = *(int *)(param_1 + 0x298);\n      iVar7 = *(int *)(iVar33 + 0x34);\n      iVar8 = *(int *)(iVar33 + 0x20);\n      iVar32 = *(int *)(iVar33 + 0x14);\n      do {\n        uVar29 = 0;\n        uVar26 = 10;\n        uVar22 = param_2[0x14];\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar26 <= uVar22) {\n            uVar18 = uVar26;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar24 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar32 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        uVar26 = 0;\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar8 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar29 <= uVar22) {\n            uVar18 = uVar29;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar29 = uVar29 - uVar18;\n          uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar29);\n        param_2[0x14] = uVar22;\n        if (iVar7 != 0) {\n          *(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));\n        }\n        iVar20 = iVar20 + 1;\n        local_78 = local_78 + iVar6 * 8;\n      } while (iVar20 != param_3);\n    }" (if "if") (parenthesized_expression "(param_2[0xb] == 0)" (( "(") (binary_expression "param_2[0xb] == 0" (subscript_expression "param_2[0xb]" (identifier "param_2") ([ "[") (number_literal "0xb") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (0 < param_3) {\n        fVar27 = 0.0;\n        local_6c = 0;\n        bStack_6b = 0;\n        uStack_6a = 0;\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        uVar22 = param_2[9];\n        iVar33 = *(int *)(param_1 + 0x298);\n        uVar26 = 0;\n        do {\n          iVar24 = 0;\n          uVar29 = uVar26;\ncode_r0x001620a2:\n          if (uVar29 % 3 == 1) {\n            uVar26 = (uint)fVar27 >> 6 & 0xffc0;\ncode_r0x001620cb:\n            dVar16 = (double)uVar26;\n            if (iVar24 != 2) goto code_r0x001620d7;\ncode_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;\ncode_r0x001620f8:\n            uVar29 = uVar29 + 1;\n            iVar24 = iVar24 + 1;\n            goto code_r0x001620a2;\n          }\n          if (uVar29 % 3 == 2) {\n            uVar26 = ((uint)fVar27 & 0xffc) << 4;\n            goto code_r0x001620cb;\n          }\n          pfVar1 = local_80 + 1;\n          fVar27 = *local_80;\n          if (param_2[0x10] != 1) {\n            fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          }\n          dVar16 = (double)(((uint)fVar27 >> 0x16) << 6);\n          local_80 = pfVar1;\n          if (iVar24 == 2) goto code_r0x00162130;\ncode_r0x001620d7:\n          uVar26 = uVar29 + 1;\n          if (iVar24 != 3) {\n            if (iVar24 == 1) {\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }\n            else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }\n            goto code_r0x001620f8;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;\n          }\ncode_r0x0016217a:\n          iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar24;\n          bStack_6b = (byte)((uint)iVar24 >> 8);\n          uStack_6a = (ushort)((uint)iVar24 >> 0x10);\n          local_80 = (float *)((int)local_80 + uVar22);\n          local_78 = local_78 + iVar33 * 8;\n        } while (iVar24 != param_3);\n      }\n    }" ({ "{") (if_statement "if (0 < param_3) {\n        fVar27 = 0.0;\n        local_6c = 0;\n        bStack_6b = 0;\n        uStack_6a = 0;\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        uVar22 = param_2[9];\n        iVar33 = *(int *)(param_1 + 0x298);\n        uVar26 = 0;\n        do {\n          iVar24 = 0;\n          uVar29 = uVar26;\ncode_r0x001620a2:\n          if (uVar29 % 3 == 1) {\n            uVar26 = (uint)fVar27 >> 6 & 0xffc0;\ncode_r0x001620cb:\n            dVar16 = (double)uVar26;\n            if (iVar24 != 2) goto code_r0x001620d7;\ncode_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;\ncode_r0x001620f8:\n            uVar29 = uVar29 + 1;\n            iVar24 = iVar24 + 1;\n            goto code_r0x001620a2;\n          }\n          if (uVar29 % 3 == 2) {\n            uVar26 = ((uint)fVar27 & 0xffc) << 4;\n            goto code_r0x001620cb;\n          }\n          pfVar1 = local_80 + 1;\n          fVar27 = *local_80;\n          if (param_2[0x10] != 1) {\n            fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          }\n          dVar16 = (double)(((uint)fVar27 >> 0x16) << 6);\n          local_80 = pfVar1;\n          if (iVar24 == 2) goto code_r0x00162130;\ncode_r0x001620d7:\n          uVar26 = uVar29 + 1;\n          if (iVar24 != 3) {\n            if (iVar24 == 1) {\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }\n            else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }\n            goto code_r0x001620f8;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;\n          }\ncode_r0x0016217a:\n          iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar24;\n          bStack_6b = (byte)((uint)iVar24 >> 8);\n          uStack_6a = (ushort)((uint)iVar24 >> 0x10);\n          local_80 = (float *)((int)local_80 + uVar22);\n          local_78 = local_78 + iVar33 * 8;\n        } while (iVar24 != param_3);\n      }" (if "if") (parenthesized_expression "(0 < param_3)" (( "(") (binary_expression "0 < param_3" (number_literal "0") (< "<") (identifier "param_3")) () ")")) (compound_statement "{\n        fVar27 = 0.0;\n        local_6c = 0;\n        bStack_6b = 0;\n        uStack_6a = 0;\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        uVar22 = param_2[9];\n        iVar33 = *(int *)(param_1 + 0x298);\n        uVar26 = 0;\n        do {\n          iVar24 = 0;\n          uVar29 = uVar26;\ncode_r0x001620a2:\n          if (uVar29 % 3 == 1) {\n            uVar26 = (uint)fVar27 >> 6 & 0xffc0;\ncode_r0x001620cb:\n            dVar16 = (double)uVar26;\n            if (iVar24 != 2) goto code_r0x001620d7;\ncode_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;\ncode_r0x001620f8:\n            uVar29 = uVar29 + 1;\n            iVar24 = iVar24 + 1;\n            goto code_r0x001620a2;\n          }\n          if (uVar29 % 3 == 2) {\n            uVar26 = ((uint)fVar27 & 0xffc) << 4;\n            goto code_r0x001620cb;\n          }\n          pfVar1 = local_80 + 1;\n          fVar27 = *local_80;\n          if (param_2[0x10] != 1) {\n            fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          }\n          dVar16 = (double)(((uint)fVar27 >> 0x16) << 6);\n          local_80 = pfVar1;\n          if (iVar24 == 2) goto code_r0x00162130;\ncode_r0x001620d7:\n          uVar26 = uVar29 + 1;\n          if (iVar24 != 3) {\n            if (iVar24 == 1) {\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }\n            else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }\n            goto code_r0x001620f8;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;\n          }\ncode_r0x0016217a:\n          iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar24;\n          bStack_6b = (byte)((uint)iVar24 >> 8);\n          uStack_6a = (ushort)((uint)iVar24 >> 0x10);\n          local_80 = (float *)((int)local_80 + uVar22);\n          local_78 = local_78 + iVar33 * 8;\n        } while (iVar24 != param_3);\n      }" ({ "{") (expression_statement "fVar27 = 0.0;" (assignment_expression "fVar27 = 0.0" (identifier "fVar27") (= "=") (number_literal "0.0")) (; ";")) (expression_statement "local_6c = 0;" (assignment_expression "local_6c = 0" (identifier "local_6c") (= "=") (number_literal "0")) (; ";")) (expression_statement "bStack_6b = 0;" (assignment_expression "bStack_6b = 0" (identifier "bStack_6b") (= "=") (number_literal "0")) (; ";")) (expression_statement "uStack_6a = 0;" (assignment_expression "uStack_6a = 0" (identifier "uStack_6a") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar20 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar20 = *(int *)(param_1 + 0x2a8)" (identifier "iVar20") (= "=") (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")"))))) (; ";")) (expression_statement "uVar22 = param_2[9];" (assignment_expression "uVar22 = param_2[9]" (identifier "uVar22") (= "=") (subscript_expression "param_2[9]" (identifier "param_2") ([ "[") (number_literal "9") (] "]"))) (; ";")) (expression_statement "iVar33 = *(int *)(param_1 + 0x298);" (assignment_expression "iVar33 = *(int *)(param_1 + 0x298)" (identifier "iVar33") (= "=") (pointer_expression "*(int *)(param_1 + 0x298)" (* "*") (cast_expression "(int *)(param_1 + 0x298)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x298)" (( "(") (binary_expression "param_1 + 0x298" (identifier "param_1") (+ "+") (number_literal "0x298")) () ")"))))) (; ";")) (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" (identifier "uVar26") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          iVar24 = 0;\n          uVar29 = uVar26;\ncode_r0x001620a2:\n          if (uVar29 % 3 == 1) {\n            uVar26 = (uint)fVar27 >> 6 & 0xffc0;\ncode_r0x001620cb:\n            dVar16 = (double)uVar26;\n            if (iVar24 != 2) goto code_r0x001620d7;\ncode_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;\ncode_r0x001620f8:\n            uVar29 = uVar29 + 1;\n            iVar24 = iVar24 + 1;\n            goto code_r0x001620a2;\n          }\n          if (uVar29 % 3 == 2) {\n            uVar26 = ((uint)fVar27 & 0xffc) << 4;\n            goto code_r0x001620cb;\n          }\n          pfVar1 = local_80 + 1;\n          fVar27 = *local_80;\n          if (param_2[0x10] != 1) {\n            fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          }\n          dVar16 = (double)(((uint)fVar27 >> 0x16) << 6);\n          local_80 = pfVar1;\n          if (iVar24 == 2) goto code_r0x00162130;\ncode_r0x001620d7:\n          uVar26 = uVar29 + 1;\n          if (iVar24 != 3) {\n            if (iVar24 == 1) {\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }\n            else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }\n            goto code_r0x001620f8;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;\n          }\ncode_r0x0016217a:\n          iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar24;\n          bStack_6b = (byte)((uint)iVar24 >> 8);\n          uStack_6a = (ushort)((uint)iVar24 >> 0x10);\n          local_80 = (float *)((int)local_80 + uVar22);\n          local_78 = local_78 + iVar33 * 8;\n        } while (iVar24 != param_3);" (do "do") (compound_statement "{\n          iVar24 = 0;\n          uVar29 = uVar26;\ncode_r0x001620a2:\n          if (uVar29 % 3 == 1) {\n            uVar26 = (uint)fVar27 >> 6 & 0xffc0;\ncode_r0x001620cb:\n            dVar16 = (double)uVar26;\n            if (iVar24 != 2) goto code_r0x001620d7;\ncode_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;\ncode_r0x001620f8:\n            uVar29 = uVar29 + 1;\n            iVar24 = iVar24 + 1;\n            goto code_r0x001620a2;\n          }\n          if (uVar29 % 3 == 2) {\n            uVar26 = ((uint)fVar27 & 0xffc) << 4;\n            goto code_r0x001620cb;\n          }\n          pfVar1 = local_80 + 1;\n          fVar27 = *local_80;\n          if (param_2[0x10] != 1) {\n            fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          }\n          dVar16 = (double)(((uint)fVar27 >> 0x16) << 6);\n          local_80 = pfVar1;\n          if (iVar24 == 2) goto code_r0x00162130;\ncode_r0x001620d7:\n          uVar26 = uVar29 + 1;\n          if (iVar24 != 3) {\n            if (iVar24 == 1) {\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }\n            else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }\n            goto code_r0x001620f8;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;\n          }\ncode_r0x0016217a:\n          iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;\n          local_6c = (byte)iVar24;\n          bStack_6b = (byte)((uint)iVar24 >> 8);\n          uStack_6a = (ushort)((uint)iVar24 >> 0x10);\n          local_80 = (float *)((int)local_80 + uVar22);\n          local_78 = local_78 + iVar33 * 8;\n        }" ({ "{") (expression_statement "iVar24 = 0;" (assignment_expression "iVar24 = 0" (identifier "iVar24") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar29 = uVar26;" (assignment_expression "uVar29 = uVar26" (identifier "uVar29") (= "=") (identifier "uVar26")) (; ";")) (labeled_statement "code_r0x001620a2:\n          if (uVar29 % 3 == 1) {\n            uVar26 = (uint)fVar27 >> 6 & 0xffc0;\ncode_r0x001620cb:\n            dVar16 = (double)uVar26;\n            if (iVar24 != 2) goto code_r0x001620d7;\ncode_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;\ncode_r0x001620f8:\n            uVar29 = uVar29 + 1;\n            iVar24 = iVar24 + 1;\n            goto code_r0x001620a2;\n          }" (statement_identifier "code_r0x001620a2") (: ":") (if_statement "if (uVar29 % 3 == 1) {\n            uVar26 = (uint)fVar27 >> 6 & 0xffc0;\ncode_r0x001620cb:\n            dVar16 = (double)uVar26;\n            if (iVar24 != 2) goto code_r0x001620d7;\ncode_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;\ncode_r0x001620f8:\n            uVar29 = uVar29 + 1;\n            iVar24 = iVar24 + 1;\n            goto code_r0x001620a2;\n          }" (if "if") (parenthesized_expression "(uVar29 % 3 == 1)" (( "(") (binary_expression "uVar29 % 3 == 1" (binary_expression "uVar29 % 3" (identifier "uVar29") (% "%") (number_literal "3")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n            uVar26 = (uint)fVar27 >> 6 & 0xffc0;\ncode_r0x001620cb:\n            dVar16 = (double)uVar26;\n            if (iVar24 != 2) goto code_r0x001620d7;\ncode_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;\ncode_r0x001620f8:\n            uVar29 = uVar29 + 1;\n            iVar24 = iVar24 + 1;\n            goto code_r0x001620a2;\n          }" ({ "{") (expression_statement "uVar26 = (uint)fVar27 >> 6 & 0xffc0;" (assignment_expression "uVar26 = (uint)fVar27 >> 6 & 0xffc0" (identifier "uVar26") (= "=") (binary_expression "(uint)fVar27 >> 6 & 0xffc0" (binary_expression "(uint)fVar27 >> 6" (cast_expression "(uint)fVar27" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar27")) (>> ">>") (number_literal "6")) (& "&") (number_literal "0xffc0"))) (; ";")) (labeled_statement "code_r0x001620cb:\n            dVar16 = (double)uVar26;" (statement_identifier "code_r0x001620cb") (: ":") (expression_statement "dVar16 = (double)uVar26;" (assignment_expression "dVar16 = (double)uVar26" (identifier "dVar16") (= "=") (cast_expression "(double)uVar26" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "uVar26"))) (; ";"))) (if_statement "if (iVar24 != 2) goto code_r0x001620d7;" (if "if") (parenthesized_expression "(iVar24 != 2)" (( "(") (binary_expression "iVar24 != 2" (identifier "iVar24") (!= "!=") (number_literal "2")) () ")")) (goto_statement "goto code_r0x001620d7;" (goto "goto") (statement_identifier "code_r0x001620d7") (; ";"))) (labeled_statement "code_r0x00162130:\n            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;" (statement_identifier "code_r0x00162130") (: ":") (expression_statement "*(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;" (assignment_expression "*(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16" (pointer_expression "*(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8)" (* "*") (cast_expression "(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_78 + *(int *)(iVar20 + 0x20) * 8)" (( "(") (binary_expression "local_78 + *(int *)(iVar20 + 0x20) * 8" (identifier "local_78") (+ "+") (binary_expression "*(int *)(iVar20 + 0x20) * 8" (pointer_expression "*(int *)(iVar20 + 0x20)" (* "*") (cast_expression "(int *)(iVar20 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + 0x20)" (( "(") (binary_expression "iVar20 + 0x20" (identifier "iVar20") (+ "+") (number_literal "0x20")) () ")")))) (* "*") (number_literal "8"))) () ")")))) (= "=") (identifier "dVar16")) (; ";"))) (labeled_statement "code_r0x001620f8:\n            uVar29 = uVar29 + 1;" (statement_identifier "code_r0x001620f8") (: ":") (expression_statement "uVar29 = uVar29 + 1;" (assignment_expression "uVar29 = uVar29 + 1" (identifier "uVar29") (= "=") (binary_expression "uVar29 + 1" (identifier "uVar29") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "iVar24 = iVar24 + 1;" (assignment_expression "iVar24 = iVar24 + 1" (identifier "iVar24") (= "=") (binary_expression "iVar24 + 1" (identifier "iVar24") (+ "+") (number_literal "1"))) (; ";")) (goto_statement "goto code_r0x001620a2;" (goto "goto") (statement_identifier "code_r0x001620a2") (; ";")) (} "}")))) (if_statement "if (uVar29 % 3 == 2) {\n            uVar26 = ((uint)fVar27 & 0xffc) << 4;\n            goto code_r0x001620cb;\n          }" (if "if") (parenthesized_expression "(uVar29 % 3 == 2)" (( "(") (binary_expression "uVar29 % 3 == 2" (binary_expression "uVar29 % 3" (identifier "uVar29") (% "%") (number_literal "3")) (== "==") (number_literal "2")) () ")")) (compound_statement "{\n            uVar26 = ((uint)fVar27 & 0xffc) << 4;\n            goto code_r0x001620cb;\n          }" ({ "{") (expression_statement "uVar26 = ((uint)fVar27 & 0xffc) << 4;" (assignment_expression "uVar26 = ((uint)fVar27 & 0xffc) << 4" (identifier "uVar26") (= "=") (binary_expression "((uint)fVar27 & 0xffc) << 4" (parenthesized_expression "((uint)fVar27 & 0xffc)" (( "(") (binary_expression "(uint)fVar27 & 0xffc" (cast_expression "(uint)fVar27" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar27")) (& "&") (number_literal "0xffc")) () ")")) (<< "<<") (number_literal "4"))) (; ";")) (goto_statement "goto code_r0x001620cb;" (goto "goto") (statement_identifier "code_r0x001620cb") (; ";")) (} "}"))) (expression_statement "pfVar1 = local_80 + 1;" (assignment_expression "pfVar1 = local_80 + 1" (identifier "pfVar1") (= "=") (binary_expression "local_80 + 1" (identifier "local_80") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "fVar27 = *local_80;" (assignment_expression "fVar27 = *local_80" (identifier "fVar27") (= "=") (pointer_expression "*local_80" (* "*") (identifier "local_80"))) (; ";")) (if_statement "if (param_2[0x10] != 1) {\n            fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          }" (if "if") (parenthesized_expression "(param_2[0x10] != 1)" (( "(") (binary_expression "param_2[0x10] != 1" (subscript_expression "param_2[0x10]" (identifier "param_2") ([ "[") (number_literal "0x10") (] "]")) (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n            fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          }" ({ "{") (expression_statement "fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);" (assignment_expression "fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18)" (identifier "fVar27") (= "=") (cast_expression "(float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18)" (( "(") (binary_expression "(uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18" (binary_expression "(uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                             ((uint)fVar27 & 0xff00) << 8" (binary_expression "(uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8" (binary_expression "(uint)fVar27 >> 0x18" (cast_expression "(uint)fVar27" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar27")) (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "((uint)fVar27 & 0xff0000) >> 8" (parenthesized_expression "((uint)fVar27 & 0xff0000)" (( "(") (binary_expression "(uint)fVar27 & 0xff0000" (cast_expression "(uint)fVar27" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar27")) (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "((uint)fVar27 & 0xff00) << 8" (parenthesized_expression "((uint)fVar27 & 0xff00)" (( "(") (binary_expression "(uint)fVar27 & 0xff00" (cast_expression "(uint)fVar27" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar27")) (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "(int)fVar27 << 0x18" (cast_expression "(int)fVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "fVar27")) (<< "<<") (number_literal "0x18"))) () ")")))) (; ";")) (} "}"))) (expression_statement "dVar16 = (double)(((uint)fVar27 >> 0x16) << 6);" (assignment_expression "dVar16 = (double)(((uint)fVar27 >> 0x16) << 6)" (identifier "dVar16") (= "=") (cast_expression "(double)(((uint)fVar27 >> 0x16) << 6)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "(((uint)fVar27 >> 0x16) << 6)" (( "(") (binary_expression "((uint)fVar27 >> 0x16) << 6" (parenthesized_expression "((uint)fVar27 >> 0x16)" (( "(") (binary_expression "(uint)fVar27 >> 0x16" (cast_expression "(uint)fVar27" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar27")) (>> ">>") (number_literal "0x16")) () ")")) (<< "<<") (number_literal "6")) () ")")))) (; ";")) (expression_statement "local_80 = pfVar1;" (assignment_expression "local_80 = pfVar1" (identifier "local_80") (= "=") (identifier "pfVar1")) (; ";")) (if_statement "if (iVar24 == 2) goto code_r0x00162130;" (if "if") (parenthesized_expression "(iVar24 == 2)" (( "(") (binary_expression "iVar24 == 2" (identifier "iVar24") (== "==") (number_literal "2")) () ")")) (goto_statement "goto code_r0x00162130;" (goto "goto") (statement_identifier "code_r0x00162130") (; ";"))) (labeled_statement "code_r0x001620d7:\n          uVar26 = uVar29 + 1;" (statement_identifier "code_r0x001620d7") (: ":") (expression_statement "uVar26 = uVar29 + 1;" (assignment_expression "uVar26 = uVar29 + 1" (identifier "uVar26") (= "=") (binary_expression "uVar29 + 1" (identifier "uVar29") (+ "+") (number_literal "1"))) (; ";"))) (if_statement "if (iVar24 != 3) {\n            if (iVar24 == 1) {\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }\n            else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }\n            goto code_r0x001620f8;\n          }" (if "if") (parenthesized_expression "(iVar24 != 3)" (( "(") (binary_expression "iVar24 != 3" (identifier "iVar24") (!= "!=") (number_literal "3")) () ")")) (compound_statement "{\n            if (iVar24 == 1) {\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }\n            else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }\n            goto code_r0x001620f8;\n          }" ({ "{") (if_statement "if (iVar24 == 1) {\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }\n            else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }" (if "if") (parenthesized_expression "(iVar24 == 1)" (( "(") (binary_expression "iVar24 == 1" (identifier "iVar24") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;\n            }" ({ "{") (expression_statement "*(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;" (assignment_expression "*(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16" (pointer_expression "*(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8)" (* "*") (cast_expression "(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_78 + *(int *)(iVar20 + 0x14) * 8)" (( "(") (binary_expression "local_78 + *(int *)(iVar20 + 0x14) * 8" (identifier "local_78") (+ "+") (binary_expression "*(int *)(iVar20 + 0x14) * 8" (pointer_expression "*(int *)(iVar20 + 0x14)" (* "*") (cast_expression "(int *)(iVar20 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + 0x14)" (( "(") (binary_expression "iVar20 + 0x14" (identifier "iVar20") (+ "+") (number_literal "0x14")) () ")")))) (* "*") (number_literal "8"))) () ")")))) (= "=") (identifier "dVar16")) (; ";")) (} "}")) (else_clause "else {\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }" (else "else") (compound_statement "{\n              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;\n              if (iVar24 == 3) goto code_r0x0016217a;\n            }" ({ "{") (expression_statement "*(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;" (assignment_expression "*(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16" (pointer_expression "*(double *)(local_78 + *(int *)(iVar20 + 8) * 8)" (* "*") (cast_expression "(double *)(local_78 + *(int *)(iVar20 + 8) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_78 + *(int *)(iVar20 + 8) * 8)" (( "(") (binary_expression "local_78 + *(int *)(iVar20 + 8) * 8" (identifier "local_78") (+ "+") (binary_expression "*(int *)(iVar20 + 8) * 8" (pointer_expression "*(int *)(iVar20 + 8)" (* "*") (cast_expression "(int *)(iVar20 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + 8)" (( "(") (binary_expression "iVar20 + 8" (identifier "iVar20") (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "8"))) () ")")))) (= "=") (identifier "dVar16")) (; ";")) (if_statement "if (iVar24 == 3) goto code_r0x0016217a;" (if "if") (parenthesized_expression "(iVar24 == 3)" (( "(") (binary_expression "iVar24 == 3" (identifier "iVar24") (== "==") (number_literal "3")) () ")")) (goto_statement "goto code_r0x0016217a;" (goto "goto") (statement_identifier "code_r0x0016217a") (; ";"))) (} "}")))) (goto_statement "goto code_r0x001620f8;" (goto "goto") (statement_identifier "code_r0x001620f8") (; ";")) (} "}"))) (if_statement "if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;\n          }" (if "if") (parenthesized_expression "(*(int *)(iVar20 + 0x34) != 0)" (( "(") (binary_expression "*(int *)(iVar20 + 0x34) != 0" (pointer_expression "*(int *)(iVar20 + 0x34)" (* "*") (cast_expression "(int *)(iVar20 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + 0x34)" (( "(") (binary_expression "iVar20 + 0x34" (identifier "iVar20") (+ "+") (number_literal "0x34")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;\n          }" ({ "{") (expression_statement "*(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;" (assignment_expression "*(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16" (pointer_expression "*(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8)" (* "*") (cast_expression "(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_78 + *(int *)(iVar20 + 0x38) * 8)" (( "(") (binary_expression "local_78 + *(int *)(iVar20 + 0x38) * 8" (identifier "local_78") (+ "+") (binary_expression "*(int *)(iVar20 + 0x38) * 8" (pointer_expression "*(int *)(iVar20 + 0x38)" (* "*") (cast_expression "(int *)(iVar20 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + 0x38)" (( "(") (binary_expression "iVar20 + 0x38" (identifier "iVar20") (+ "+") (number_literal "0x38")) () ")")))) (* "*") (number_literal "8"))) () ")")))) (= "=") (binary_expression "(double)DAT_0029f710 - dVar16" (cast_expression "(double)DAT_0029f710" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f710")) (- "-") (identifier "dVar16"))) (; ";")) (} "}"))) (labeled_statement "code_r0x0016217a:\n          iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;" (statement_identifier "code_r0x0016217a") (: ":") (expression_statement "iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;" (assignment_expression "iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1" (identifier "iVar24") (= "=") (binary_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1" (call_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" (identifier "CONCAT22") (argument_list "(uStack_6a,CONCAT11(bStack_6b,local_6c))" (( "(") (identifier "uStack_6a") (, ",") (call_expression "CONCAT11(bStack_6b,local_6c)" (identifier "CONCAT11") (argument_list "(bStack_6b,local_6c)" (( "(") (identifier "bStack_6b") (, ",") (identifier "local_6c") () ")"))) () ")"))) (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "local_6c = (byte)iVar24;" (assignment_expression "local_6c = (byte)iVar24" (identifier "local_6c") (= "=") (cast_expression "(byte)iVar24" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "iVar24"))) (; ";")) (expression_statement "bStack_6b = (byte)((uint)iVar24 >> 8);" (assignment_expression "bStack_6b = (byte)((uint)iVar24 >> 8)" (identifier "bStack_6b") (= "=") (call_expression "(byte)((uint)iVar24 >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uint)iVar24 >> 8)" (( "(") (binary_expression "(uint)iVar24 >> 8" (cast_expression "(uint)iVar24" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "iVar24")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "uStack_6a = (ushort)((uint)iVar24 >> 0x10);" (assignment_expression "uStack_6a = (ushort)((uint)iVar24 >> 0x10)" (identifier "uStack_6a") (= "=") (call_expression "(ushort)((uint)iVar24 >> 0x10)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "((uint)iVar24 >> 0x10)" (( "(") (binary_expression "(uint)iVar24 >> 0x10" (cast_expression "(uint)iVar24" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "iVar24")) (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "local_80 = (float *)((int)local_80 + uVar22);" (assignment_expression "local_80 = (float *)((int)local_80 + uVar22)" (identifier "local_80") (= "=") (cast_expression "(float *)((int)local_80 + uVar22)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_80 + uVar22)" (( "(") (binary_expression "(int)local_80 + uVar22" (cast_expression "(int)local_80" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_80")) (+ "+") (identifier "uVar22")) () ")")))) (; ";")) (expression_statement "local_78 = local_78 + iVar33 * 8;" (assignment_expression "local_78 = local_78 + iVar33 * 8" (identifier "local_78") (= "=") (binary_expression "local_78 + iVar33 * 8" (identifier "local_78") (+ "+") (binary_expression "iVar33 * 8" (identifier "iVar33") (* "*") (number_literal "8")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar24 != param_3)" (( "(") (binary_expression "iVar24 != param_3" (identifier "iVar24") (!= "!=") (identifier "param_3")) () ")")) (; ";")) (} "}"))) (} "}")) (else_clause "else if (0 < param_3) {\n      iVar33 = *(int *)(param_1 + 0x2a8);\n      iVar20 = 0;\n      iVar24 = *(int *)(iVar33 + 8);\n      iVar6 = *(int *)(param_1 + 0x298);\n      iVar7 = *(int *)(iVar33 + 0x34);\n      iVar8 = *(int *)(iVar33 + 0x20);\n      iVar32 = *(int *)(iVar33 + 0x14);\n      do {\n        uVar29 = 0;\n        uVar26 = 10;\n        uVar22 = param_2[0x14];\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar26 <= uVar22) {\n            uVar18 = uVar26;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar24 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar32 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        uVar26 = 0;\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar8 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar29 <= uVar22) {\n            uVar18 = uVar29;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar29 = uVar29 - uVar18;\n          uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar29);\n        param_2[0x14] = uVar22;\n        if (iVar7 != 0) {\n          *(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));\n        }\n        iVar20 = iVar20 + 1;\n        local_78 = local_78 + iVar6 * 8;\n      } while (iVar20 != param_3);\n    }" (else "else") (if_statement "if (0 < param_3) {\n      iVar33 = *(int *)(param_1 + 0x2a8);\n      iVar20 = 0;\n      iVar24 = *(int *)(iVar33 + 8);\n      iVar6 = *(int *)(param_1 + 0x298);\n      iVar7 = *(int *)(iVar33 + 0x34);\n      iVar8 = *(int *)(iVar33 + 0x20);\n      iVar32 = *(int *)(iVar33 + 0x14);\n      do {\n        uVar29 = 0;\n        uVar26 = 10;\n        uVar22 = param_2[0x14];\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar26 <= uVar22) {\n            uVar18 = uVar26;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar24 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar32 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        uVar26 = 0;\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar8 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar29 <= uVar22) {\n            uVar18 = uVar29;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar29 = uVar29 - uVar18;\n          uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar29);\n        param_2[0x14] = uVar22;\n        if (iVar7 != 0) {\n          *(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));\n        }\n        iVar20 = iVar20 + 1;\n        local_78 = local_78 + iVar6 * 8;\n      } while (iVar20 != param_3);\n    }" (if "if") (parenthesized_expression "(0 < param_3)" (( "(") (binary_expression "0 < param_3" (number_literal "0") (< "<") (identifier "param_3")) () ")")) (compound_statement "{\n      iVar33 = *(int *)(param_1 + 0x2a8);\n      iVar20 = 0;\n      iVar24 = *(int *)(iVar33 + 8);\n      iVar6 = *(int *)(param_1 + 0x298);\n      iVar7 = *(int *)(iVar33 + 0x34);\n      iVar8 = *(int *)(iVar33 + 0x20);\n      iVar32 = *(int *)(iVar33 + 0x14);\n      do {\n        uVar29 = 0;\n        uVar26 = 10;\n        uVar22 = param_2[0x14];\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar26 <= uVar22) {\n            uVar18 = uVar26;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar24 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar32 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        uVar26 = 0;\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar8 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar29 <= uVar22) {\n            uVar18 = uVar29;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar29 = uVar29 - uVar18;\n          uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar29);\n        param_2[0x14] = uVar22;\n        if (iVar7 != 0) {\n          *(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));\n        }\n        iVar20 = iVar20 + 1;\n        local_78 = local_78 + iVar6 * 8;\n      } while (iVar20 != param_3);\n    }" ({ "{") (expression_statement "iVar33 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar33 = *(int *)(param_1 + 0x2a8)" (identifier "iVar33") (= "=") (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")"))))) (; ";")) (expression_statement "iVar20 = 0;" (assignment_expression "iVar20 = 0" (identifier "iVar20") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar24 = *(int *)(iVar33 + 8);" (assignment_expression "iVar24 = *(int *)(iVar33 + 8)" (identifier "iVar24") (= "=") (pointer_expression "*(int *)(iVar33 + 8)" (* "*") (cast_expression "(int *)(iVar33 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar33 + 8)" (( "(") (binary_expression "iVar33 + 8" (identifier "iVar33") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "iVar6 = *(int *)(param_1 + 0x298);" (assignment_expression "iVar6 = *(int *)(param_1 + 0x298)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(param_1 + 0x298)" (* "*") (cast_expression "(int *)(param_1 + 0x298)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x298)" (( "(") (binary_expression "param_1 + 0x298" (identifier "param_1") (+ "+") (number_literal "0x298")) () ")"))))) (; ";")) (expression_statement "iVar7 = *(int *)(iVar33 + 0x34);" (assignment_expression "iVar7 = *(int *)(iVar33 + 0x34)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(iVar33 + 0x34)" (* "*") (cast_expression "(int *)(iVar33 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar33 + 0x34)" (( "(") (binary_expression "iVar33 + 0x34" (identifier "iVar33") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (expression_statement "iVar8 = *(int *)(iVar33 + 0x20);" (assignment_expression "iVar8 = *(int *)(iVar33 + 0x20)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(iVar33 + 0x20)" (* "*") (cast_expression "(int *)(iVar33 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar33 + 0x20)" (( "(") (binary_expression "iVar33 + 0x20" (identifier "iVar33") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "iVar32 = *(int *)(iVar33 + 0x14);" (assignment_expression "iVar32 = *(int *)(iVar33 + 0x14)" (identifier "iVar32") (= "=") (pointer_expression "*(int *)(iVar33 + 0x14)" (* "*") (cast_expression "(int *)(iVar33 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar33 + 0x14)" (( "(") (binary_expression "iVar33 + 0x14" (identifier "iVar33") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (do_statement "do {\n        uVar29 = 0;\n        uVar26 = 10;\n        uVar22 = param_2[0x14];\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar26 <= uVar22) {\n            uVar18 = uVar26;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar24 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar32 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        uVar26 = 0;\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar8 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar29 <= uVar22) {\n            uVar18 = uVar29;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar29 = uVar29 - uVar18;\n          uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar29);\n        param_2[0x14] = uVar22;\n        if (iVar7 != 0) {\n          *(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));\n        }\n        iVar20 = iVar20 + 1;\n        local_78 = local_78 + iVar6 * 8;\n      } while (iVar20 != param_3);" (do "do") (compound_statement "{\n        uVar29 = 0;\n        uVar26 = 10;\n        uVar22 = param_2[0x14];\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar26 <= uVar22) {\n            uVar18 = uVar26;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar24 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar32 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 0;\n        uVar26 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);\n        uVar26 = 0;\n        param_2[0x14] = uVar22;\n        *(double *)(local_78 + iVar8 * 8) = (double)((uVar29 & 0x3ff) << 6);\n        uVar29 = 10;\n        do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar29 <= uVar22) {\n            uVar18 = uVar29;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar29 = uVar29 - uVar18;\n          uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar29);\n        param_2[0x14] = uVar22;\n        if (iVar7 != 0) {\n          *(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));\n        }\n        iVar20 = iVar20 + 1;\n        local_78 = local_78 + iVar6 * 8;\n      }" ({ "{") (expression_statement "uVar29 = 0;" (assignment_expression "uVar29 = 0" (identifier "uVar29") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar26 = 10;" (assignment_expression "uVar26 = 10" (identifier "uVar26") (= "=") (number_literal "10")) (; ";")) (expression_statement "uVar22 = param_2[0x14];" (assignment_expression "uVar22 = param_2[0x14]" (identifier "uVar22") (= "=") (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]"))) (; ";")) (do_statement "do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar26 <= uVar22) {\n            uVar18 = uVar26;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);" (do "do") (compound_statement "{\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar26 <= uVar22) {\n            uVar18 = uVar26;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        }" ({ "{") (if_statement "if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }" (if "if") (parenthesized_expression "(uVar22 == 0)" (( "(") (binary_expression "uVar22 == 0" (identifier "uVar22") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }" ({ "{") (expression_statement "uVar19 = (uint)*(byte *)local_80;" (assignment_expression "uVar19 = (uint)*(byte *)local_80" (identifier "uVar19") (= "=") (binary_expression "(uint)*(byte *)local_80" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)local_80" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_80")))) (; ";")) (expression_statement "local_80 = (float *)((int)local_80 + 1);" (assignment_expression "local_80 = (float *)((int)local_80 + 1)" (identifier "local_80") (= "=") (cast_expression "(float *)((int)local_80 + 1)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_80 + 1)" (( "(") (binary_expression "(int)local_80 + 1" (cast_expression "(int)local_80" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_80")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "uVar22 = 8;" (assignment_expression "uVar22 = 8" (identifier "uVar22") (= "=") (number_literal "8")) (; ";")) (expression_statement "param_2[0x13] = uVar19;" (assignment_expression "param_2[0x13] = uVar19" (subscript_expression "param_2[0x13]" (identifier "param_2") ([ "[") (number_literal "0x13") (] "]")) (= "=") (identifier "uVar19")) (; ";")) (} "}")) (else_clause "else {\n            uVar19 = param_2[0x13];\n          }" (else "else") (compound_statement "{\n            uVar19 = param_2[0x13];\n          }" ({ "{") (expression_statement "uVar19 = param_2[0x13];" (assignment_expression "uVar19 = param_2[0x13]" (identifier "uVar19") (= "=") (subscript_expression "param_2[0x13]" (identifier "param_2") ([ "[") (number_literal "0x13") (] "]"))) (; ";")) (} "}")))) (expression_statement "uVar18 = uVar22;" (assignment_expression "uVar18 = uVar22" (identifier "uVar18") (= "=") (identifier "uVar22")) (; ";")) (if_statement "if (uVar26 <= uVar22) {\n            uVar18 = uVar26;\n          }" (if "if") (parenthesized_expression "(uVar26 <= uVar22)" (( "(") (binary_expression "uVar26 <= uVar22" (identifier "uVar26") (<= "<=") (identifier "uVar22")) () ")")) (compound_statement "{\n            uVar18 = uVar26;\n          }" ({ "{") (expression_statement "uVar18 = uVar26;" (assignment_expression "uVar18 = uVar26" (identifier "uVar18") (= "=") (identifier "uVar26")) (; ";")) (} "}"))) (expression_statement "uVar22 = uVar22 - uVar18;" (assignment_expression "uVar22 = uVar22 - uVar18" (identifier "uVar22") (= "=") (binary_expression "uVar22 - uVar18" (identifier "uVar22") (- "-") (identifier "uVar18"))) (; ";")) (expression_statement "uVar26 = uVar26 - uVar18;" (assignment_expression "uVar26 = uVar26 - uVar18" (identifier "uVar26") (= "=") (binary_expression "uVar26 - uVar18" (identifier "uVar26") (- "-") (identifier "uVar18"))) (; ";")) (expression_statement "uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);" (assignment_expression "uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f)" (identifier "uVar29") (= "=") (binary_expression "uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f)" (binary_expression "uVar29 << ((byte)uVar18 & 0x1f)" (identifier "uVar29") (<< "<<") (parenthesized_expression "((byte)uVar18 & 0x1f)" (( "(") (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar18")) (& "&") (number_literal "0x1f")) () ")"))) (| "|") (binary_expression "~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f)" (unary_expression "~(-1 << ((byte)uVar18 & 0x1f))" (~ "~") (parenthesized_expression "(-1 << ((byte)uVar18 & 0x1f))" (( "(") (binary_expression "-1 << ((byte)uVar18 & 0x1f)" (number_literal "-1") (<< "<<") (parenthesized_expression "((byte)uVar18 & 0x1f)" (( "(") (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar18")) (& "&") (number_literal "0x1f")) () ")"))) () ")"))) (& "&") (binary_expression "uVar19 >> ((byte)uVar22 & 0x1f)" (identifier "uVar19") (>> ">>") (parenthesized_expression "((byte)uVar22 & 0x1f)" (( "(") (binary_expression "(byte)uVar22 & 0x1f" (cast_expression "(byte)uVar22" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar22")) (& "&") (number_literal "0x1f")) () ")")))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(0 < (int)uVar26)" (( "(") (binary_expression "0 < (int)uVar26" (number_literal "0") (< "<") (cast_expression "(int)uVar26" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar26"))) () ")")) (; ";")) (expression_statement "param_2[0x14] = uVar22;" (assignment_expression "param_2[0x14] = uVar22" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (identifier "uVar22")) (; ";")) (expression_statement "*(double *)(local_78 + iVar24 * 8) = (double)((uVar29 & 0x3ff) << 6);" (assignment_expression "*(double *)(local_78 + iVar24 * 8) = (double)((uVar29 & 0x3ff) << 6)" (pointer_expression "*(double *)(local_78 + iVar24 * 8)" (* "*") (cast_expression "(double *)(local_78 + iVar24 * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_78 + iVar24 * 8)" (( "(") (binary_expression "local_78 + iVar24 * 8" (identifier "local_78") (+ "+") (binary_expression "iVar24 * 8" (identifier "iVar24") (* "*") (number_literal "8"))) () ")")))) (= "=") (cast_expression "(double)((uVar29 & 0x3ff) << 6)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "((uVar29 & 0x3ff) << 6)" (( "(") (binary_expression "(uVar29 & 0x3ff) << 6" (parenthesized_expression "(uVar29 & 0x3ff)" (( "(") (binary_expression "uVar29 & 0x3ff" (identifier "uVar29") (& "&") (number_literal "0x3ff")) () ")")) (<< "<<") (number_literal "6")) () ")")))) (; ";")) (expression_statement "uVar29 = 0;" (assignment_expression "uVar29 = 0" (identifier "uVar29") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar26 = 10;" (assignment_expression "uVar26 = 10" (identifier "uVar26") (= "=") (number_literal "10")) (; ";")) (do_statement "do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);" (do "do") (compound_statement "{\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        }" ({ "{") (if_statement "if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }" (if "if") (parenthesized_expression "(uVar22 == 0)" (( "(") (binary_expression "uVar22 == 0" (identifier "uVar22") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }" ({ "{") (expression_statement "uVar19 = (uint)*(byte *)local_80;" (assignment_expression "uVar19 = (uint)*(byte *)local_80" (identifier "uVar19") (= "=") (binary_expression "(uint)*(byte *)local_80" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)local_80" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_80")))) (; ";")) (expression_statement "local_80 = (float *)((int)local_80 + 1);" (assignment_expression "local_80 = (float *)((int)local_80 + 1)" (identifier "local_80") (= "=") (cast_expression "(float *)((int)local_80 + 1)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_80 + 1)" (( "(") (binary_expression "(int)local_80 + 1" (cast_expression "(int)local_80" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_80")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "uVar22 = 8;" (assignment_expression "uVar22 = 8" (identifier "uVar22") (= "=") (number_literal "8")) (; ";")) (expression_statement "param_2[0x13] = uVar19;" (assignment_expression "param_2[0x13] = uVar19" (subscript_expression "param_2[0x13]" (identifier "param_2") ([ "[") (number_literal "0x13") (] "]")) (= "=") (identifier "uVar19")) (; ";")) (} "}")) (else_clause "else {\n            uVar19 = param_2[0x13];\n          }" (else "else") (compound_statement "{\n            uVar19 = param_2[0x13];\n          }" ({ "{") (expression_statement "uVar19 = param_2[0x13];" (assignment_expression "uVar19 = param_2[0x13]" (identifier "uVar19") (= "=") (subscript_expression "param_2[0x13]" (identifier "param_2") ([ "[") (number_literal "0x13") (] "]"))) (; ";")) (} "}")))) (expression_statement "uVar18 = uVar26;" (assignment_expression "uVar18 = uVar26" (identifier "uVar18") (= "=") (identifier "uVar26")) (; ";")) (if_statement "if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }" (if "if") (parenthesized_expression "(uVar22 <= uVar26)" (( "(") (binary_expression "uVar22 <= uVar26" (identifier "uVar22") (<= "<=") (identifier "uVar26")) () ")")) (compound_statement "{\n            uVar18 = uVar22;\n          }" ({ "{") (expression_statement "uVar18 = uVar22;" (assignment_expression "uVar18 = uVar22" (identifier "uVar18") (= "=") (identifier "uVar22")) (; ";")) (} "}"))) (expression_statement "uVar22 = uVar22 - uVar18;" (assignment_expression "uVar22 = uVar22 - uVar18" (identifier "uVar22") (= "=") (binary_expression "uVar22 - uVar18" (identifier "uVar22") (- "-") (identifier "uVar18"))) (; ";")) (expression_statement "uVar26 = uVar26 - uVar18;" (assignment_expression "uVar26 = uVar26 - uVar18" (identifier "uVar26") (= "=") (binary_expression "uVar26 - uVar18" (identifier "uVar26") (- "-") (identifier "uVar18"))) (; ";")) (expression_statement "uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);" (assignment_expression "uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f)" (identifier "uVar29") (= "=") (binary_expression "uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f)" (binary_expression "uVar29 << ((byte)uVar18 & 0x1f)" (identifier "uVar29") (<< "<<") (parenthesized_expression "((byte)uVar18 & 0x1f)" (( "(") (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar18")) (& "&") (number_literal "0x1f")) () ")"))) (| "|") (binary_expression "~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f)" (unary_expression "~(-1 << ((byte)uVar18 & 0x1f))" (~ "~") (parenthesized_expression "(-1 << ((byte)uVar18 & 0x1f))" (( "(") (binary_expression "-1 << ((byte)uVar18 & 0x1f)" (number_literal "-1") (<< "<<") (parenthesized_expression "((byte)uVar18 & 0x1f)" (( "(") (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar18")) (& "&") (number_literal "0x1f")) () ")"))) () ")"))) (& "&") (binary_expression "uVar19 >> ((byte)uVar22 & 0x1f)" (identifier "uVar19") (>> ">>") (parenthesized_expression "((byte)uVar22 & 0x1f)" (( "(") (binary_expression "(byte)uVar22 & 0x1f" (cast_expression "(byte)uVar22" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar22")) (& "&") (number_literal "0x1f")) () ")")))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(0 < (int)uVar26)" (( "(") (binary_expression "0 < (int)uVar26" (number_literal "0") (< "<") (cast_expression "(int)uVar26" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar26"))) () ")")) (; ";")) (expression_statement "param_2[0x14] = uVar22;" (assignment_expression "param_2[0x14] = uVar22" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (identifier "uVar22")) (; ";")) (expression_statement "*(double *)(local_78 + iVar32 * 8) = (double)((uVar29 & 0x3ff) << 6);" (assignment_expression "*(double *)(local_78 + iVar32 * 8) = (double)((uVar29 & 0x3ff) << 6)" (pointer_expression "*(double *)(local_78 + iVar32 * 8)" (* "*") (cast_expression "(double *)(local_78 + iVar32 * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_78 + iVar32 * 8)" (( "(") (binary_expression "local_78 + iVar32 * 8" (identifier "local_78") (+ "+") (binary_expression "iVar32 * 8" (identifier "iVar32") (* "*") (number_literal "8"))) () ")")))) (= "=") (cast_expression "(double)((uVar29 & 0x3ff) << 6)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "((uVar29 & 0x3ff) << 6)" (( "(") (binary_expression "(uVar29 & 0x3ff) << 6" (parenthesized_expression "(uVar29 & 0x3ff)" (( "(") (binary_expression "uVar29 & 0x3ff" (identifier "uVar29") (& "&") (number_literal "0x3ff")) () ")")) (<< "<<") (number_literal "6")) () ")")))) (; ";")) (expression_statement "uVar29 = 0;" (assignment_expression "uVar29 = 0" (identifier "uVar29") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar26 = 10;" (assignment_expression "uVar26 = 10" (identifier "uVar26") (= "=") (number_literal "10")) (; ";")) (do_statement "do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar26);" (do "do") (compound_statement "{\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar26;\n          if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar26 = uVar26 - uVar18;\n          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        }" ({ "{") (if_statement "if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }" (if "if") (parenthesized_expression "(uVar22 == 0)" (( "(") (binary_expression "uVar22 == 0" (identifier "uVar22") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }" ({ "{") (expression_statement "uVar19 = (uint)*(byte *)local_80;" (assignment_expression "uVar19 = (uint)*(byte *)local_80" (identifier "uVar19") (= "=") (binary_expression "(uint)*(byte *)local_80" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)local_80" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_80")))) (; ";")) (expression_statement "local_80 = (float *)((int)local_80 + 1);" (assignment_expression "local_80 = (float *)((int)local_80 + 1)" (identifier "local_80") (= "=") (cast_expression "(float *)((int)local_80 + 1)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_80 + 1)" (( "(") (binary_expression "(int)local_80 + 1" (cast_expression "(int)local_80" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_80")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "uVar22 = 8;" (assignment_expression "uVar22 = 8" (identifier "uVar22") (= "=") (number_literal "8")) (; ";")) (expression_statement "param_2[0x13] = uVar19;" (assignment_expression "param_2[0x13] = uVar19" (subscript_expression "param_2[0x13]" (identifier "param_2") ([ "[") (number_literal "0x13") (] "]")) (= "=") (identifier "uVar19")) (; ";")) (} "}")) (else_clause "else {\n            uVar19 = param_2[0x13];\n          }" (else "else") (compound_statement "{\n            uVar19 = param_2[0x13];\n          }" ({ "{") (expression_statement "uVar19 = param_2[0x13];" (assignment_expression "uVar19 = param_2[0x13]" (identifier "uVar19") (= "=") (subscript_expression "param_2[0x13]" (identifier "param_2") ([ "[") (number_literal "0x13") (] "]"))) (; ";")) (} "}")))) (expression_statement "uVar18 = uVar26;" (assignment_expression "uVar18 = uVar26" (identifier "uVar18") (= "=") (identifier "uVar26")) (; ";")) (if_statement "if (uVar22 <= uVar26) {\n            uVar18 = uVar22;\n          }" (if "if") (parenthesized_expression "(uVar22 <= uVar26)" (( "(") (binary_expression "uVar22 <= uVar26" (identifier "uVar22") (<= "<=") (identifier "uVar26")) () ")")) (compound_statement "{\n            uVar18 = uVar22;\n          }" ({ "{") (expression_statement "uVar18 = uVar22;" (assignment_expression "uVar18 = uVar22" (identifier "uVar18") (= "=") (identifier "uVar22")) (; ";")) (} "}"))) (expression_statement "uVar22 = uVar22 - uVar18;" (assignment_expression "uVar22 = uVar22 - uVar18" (identifier "uVar22") (= "=") (binary_expression "uVar22 - uVar18" (identifier "uVar22") (- "-") (identifier "uVar18"))) (; ";")) (expression_statement "uVar26 = uVar26 - uVar18;" (assignment_expression "uVar26 = uVar26 - uVar18" (identifier "uVar26") (= "=") (binary_expression "uVar26 - uVar18" (identifier "uVar26") (- "-") (identifier "uVar18"))) (; ";")) (expression_statement "uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);" (assignment_expression "uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f)" (identifier "uVar29") (= "=") (binary_expression "uVar29 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f)" (binary_expression "uVar29 << ((byte)uVar18 & 0x1f)" (identifier "uVar29") (<< "<<") (parenthesized_expression "((byte)uVar18 & 0x1f)" (( "(") (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar18")) (& "&") (number_literal "0x1f")) () ")"))) (| "|") (binary_expression "~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f)" (unary_expression "~(-1 << ((byte)uVar18 & 0x1f))" (~ "~") (parenthesized_expression "(-1 << ((byte)uVar18 & 0x1f))" (( "(") (binary_expression "-1 << ((byte)uVar18 & 0x1f)" (number_literal "-1") (<< "<<") (parenthesized_expression "((byte)uVar18 & 0x1f)" (( "(") (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar18")) (& "&") (number_literal "0x1f")) () ")"))) () ")"))) (& "&") (binary_expression "uVar19 >> ((byte)uVar22 & 0x1f)" (identifier "uVar19") (>> ">>") (parenthesized_expression "((byte)uVar22 & 0x1f)" (( "(") (binary_expression "(byte)uVar22 & 0x1f" (cast_expression "(byte)uVar22" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar22")) (& "&") (number_literal "0x1f")) () ")")))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(0 < (int)uVar26)" (( "(") (binary_expression "0 < (int)uVar26" (number_literal "0") (< "<") (cast_expression "(int)uVar26" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar26"))) () ")")) (; ";")) (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" (identifier "uVar26") (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x14] = uVar22;" (assignment_expression "param_2[0x14] = uVar22" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (identifier "uVar22")) (; ";")) (expression_statement "*(double *)(local_78 + iVar8 * 8) = (double)((uVar29 & 0x3ff) << 6);" (assignment_expression "*(double *)(local_78 + iVar8 * 8) = (double)((uVar29 & 0x3ff) << 6)" (pointer_expression "*(double *)(local_78 + iVar8 * 8)" (* "*") (cast_expression "(double *)(local_78 + iVar8 * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_78 + iVar8 * 8)" (( "(") (binary_expression "local_78 + iVar8 * 8" (identifier "local_78") (+ "+") (binary_expression "iVar8 * 8" (identifier "iVar8") (* "*") (number_literal "8"))) () ")")))) (= "=") (cast_expression "(double)((uVar29 & 0x3ff) << 6)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "((uVar29 & 0x3ff) << 6)" (( "(") (binary_expression "(uVar29 & 0x3ff) << 6" (parenthesized_expression "(uVar29 & 0x3ff)" (( "(") (binary_expression "uVar29 & 0x3ff" (identifier "uVar29") (& "&") (number_literal "0x3ff")) () ")")) (<< "<<") (number_literal "6")) () ")")))) (; ";")) (expression_statement "uVar29 = 10;" (assignment_expression "uVar29 = 10" (identifier "uVar29") (= "=") (number_literal "10")) (; ";")) (do_statement "do {\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar29 <= uVar22) {\n            uVar18 = uVar29;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar29 = uVar29 - uVar18;\n          uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        } while (0 < (int)uVar29);" (do "do") (compound_statement "{\n          if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }\n          uVar18 = uVar22;\n          if (uVar29 <= uVar22) {\n            uVar18 = uVar29;\n          }\n          uVar22 = uVar22 - uVar18;\n          uVar29 = uVar29 - uVar18;\n          uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);\n        }" ({ "{") (if_statement "if (uVar22 == 0) {\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }\n          else {\n            uVar19 = param_2[0x13];\n          }" (if "if") (parenthesized_expression "(uVar22 == 0)" (( "(") (binary_expression "uVar22 == 0" (identifier "uVar22") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            uVar19 = (uint)*(byte *)local_80;\n            local_80 = (float *)((int)local_80 + 1);\n            uVar22 = 8;\n            param_2[0x13] = uVar19;\n          }" ({ "{") (expression_statement "uVar19 = (uint)*(byte *)local_80;" (assignment_expression "uVar19 = (uint)*(byte *)local_80" (identifier "uVar19") (= "=") (binary_expression "(uint)*(byte *)local_80" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)local_80" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_80")))) (; ";")) (expression_statement "local_80 = (float *)((int)local_80 + 1);" (assignment_expression "local_80 = (float *)((int)local_80 + 1)" (identifier "local_80") (= "=") (cast_expression "(float *)((int)local_80 + 1)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_80 + 1)" (( "(") (binary_expression "(int)local_80 + 1" (cast_expression "(int)local_80" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_80")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "uVar22 = 8;" (assignment_expression "uVar22 = 8" (identifier "uVar22") (= "=") (number_literal "8")) (; ";")) (expression_statement "param_2[0x13] = uVar19;" (assignment_expression "param_2[0x13] = uVar19" (subscript_expression "param_2[0x13]" (identifier "param_2") ([ "[") (number_literal "0x13") (] "]")) (= "=") (identifier "uVar19")) (; ";")) (} "}")) (else_clause "else {\n            uVar19 = param_2[0x13];\n          }" (else "else") (compound_statement "{\n            uVar19 = param_2[0x13];\n          }" ({ "{") (expression_statement "uVar19 = param_2[0x13];" (assignment_expression "uVar19 = param_2[0x13]" (identifier "uVar19") (= "=") (subscript_expression "param_2[0x13]" (identifier "param_2") ([ "[") (number_literal "0x13") (] "]"))) (; ";")) (} "}")))) (expression_statement "uVar18 = uVar22;" (assignment_expression "uVar18 = uVar22" (identifier "uVar18") (= "=") (identifier "uVar22")) (; ";")) (if_statement "if (uVar29 <= uVar22) {\n            uVar18 = uVar29;\n          }" (if "if") (parenthesized_expression "(uVar29 <= uVar22)" (( "(") (binary_expression "uVar29 <= uVar22" (identifier "uVar29") (<= "<=") (identifier "uVar22")) () ")")) (compound_statement "{\n            uVar18 = uVar29;\n          }" ({ "{") (expression_statement "uVar18 = uVar29;" (assignment_expression "uVar18 = uVar29" (identifier "uVar18") (= "=") (identifier "uVar29")) (; ";")) (} "}"))) (expression_statement "uVar22 = uVar22 - uVar18;" (assignment_expression "uVar22 = uVar22 - uVar18" (identifier "uVar22") (= "=") (binary_expression "uVar22 - uVar18" (identifier "uVar22") (- "-") (identifier "uVar18"))) (; ";")) (expression_statement "uVar29 = uVar29 - uVar18;" (assignment_expression "uVar29 = uVar29 - uVar18" (identifier "uVar29") (= "=") (binary_expression "uVar29 - uVar18" (identifier "uVar29") (- "-") (identifier "uVar18"))) (; ";")) (expression_statement "uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);" (assignment_expression "uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f)" (identifier "uVar26") (= "=") (binary_expression "uVar26 << ((byte)uVar18 & 0x1f) |\n                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f)" (binary_expression "uVar26 << ((byte)uVar18 & 0x1f)" (identifier "uVar26") (<< "<<") (parenthesized_expression "((byte)uVar18 & 0x1f)" (( "(") (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar18")) (& "&") (number_literal "0x1f")) () ")"))) (| "|") (binary_expression "~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f)" (unary_expression "~(-1 << ((byte)uVar18 & 0x1f))" (~ "~") (parenthesized_expression "(-1 << ((byte)uVar18 & 0x1f))" (( "(") (binary_expression "-1 << ((byte)uVar18 & 0x1f)" (number_literal "-1") (<< "<<") (parenthesized_expression "((byte)uVar18 & 0x1f)" (( "(") (binary_expression "(byte)uVar18 & 0x1f" (cast_expression "(byte)uVar18" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar18")) (& "&") (number_literal "0x1f")) () ")"))) () ")"))) (& "&") (binary_expression "uVar19 >> ((byte)uVar22 & 0x1f)" (identifier "uVar19") (>> ">>") (parenthesized_expression "((byte)uVar22 & 0x1f)" (( "(") (binary_expression "(byte)uVar22 & 0x1f" (cast_expression "(byte)uVar22" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar22")) (& "&") (number_literal "0x1f")) () ")")))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(0 < (int)uVar29)" (( "(") (binary_expression "0 < (int)uVar29" (number_literal "0") (< "<") (cast_expression "(int)uVar29" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar29"))) () ")")) (; ";")) (expression_statement "param_2[0x14] = uVar22;" (assignment_expression "param_2[0x14] = uVar22" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (identifier "uVar22")) (; ";")) (if_statement "if (iVar7 != 0) {\n          *(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));\n        }" (if "if") (parenthesized_expression "(iVar7 != 0)" (( "(") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          *(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));\n        }" ({ "{") (expression_statement "*(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));" (assignment_expression "*(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6))" (pointer_expression "*(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8)" (* "*") (cast_expression "(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_78 + *(int *)(iVar33 + 0x38) * 8)" (( "(") (binary_expression "local_78 + *(int *)(iVar33 + 0x38) * 8" (identifier "local_78") (+ "+") (binary_expression "*(int *)(iVar33 + 0x38) * 8" (pointer_expression "*(int *)(iVar33 + 0x38)" (* "*") (cast_expression "(int *)(iVar33 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar33 + 0x38)" (( "(") (binary_expression "iVar33 + 0x38" (identifier "iVar33") (+ "+") (number_literal "0x38")) () ")")))) (* "*") (number_literal "8"))) () ")")))) (= "=") (cast_expression "(double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6))" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6))" (( "(") (binary_expression "DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6)" (identifier "DAT_0029f710") (- "-") (cast_expression "(float)((uVar26 & 0x3ff) << 6)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "((uVar26 & 0x3ff) << 6)" (( "(") (binary_expression "(uVar26 & 0x3ff) << 6" (parenthesized_expression "(uVar26 & 0x3ff)" (( "(") (binary_expression "uVar26 & 0x3ff" (identifier "uVar26") (& "&") (number_literal "0x3ff")) () ")")) (<< "<<") (number_literal "6")) () ")")))) () ")")))) (; ";")) (} "}"))) (expression_statement "iVar20 = iVar20 + 1;" (assignment_expression "iVar20 = iVar20 + 1" (identifier "iVar20") (= "=") (binary_expression "iVar20 + 1" (identifier "iVar20") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_78 = local_78 + iVar6 * 8;" (assignment_expression "local_78 = local_78 + iVar6 * 8" (identifier "local_78") (= "=") (binary_expression "local_78 + iVar6 * 8" (identifier "local_78") (+ "+") (binary_expression "iVar6 * 8" (identifier "iVar6") (* "*") (number_literal "8")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar20 != param_3)" (( "(") (binary_expression "iVar20 != param_3" (identifier "iVar20") (!= "!=") (identifier "param_3")) () ")")) (; ";")) (} "}"))))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x10:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        uVar22 = param_2[0x10];\n        do {\n          if (uVar22 == 1) {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          else {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          lVar34 = (longdouble)FUN_00159350();\n          if (*(int *)(iVar33 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n    }\n    else if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(iVar20 + 0x20);\n      iVar7 = *(int *)(iVar20 + 8);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        uVar3 = *(ushort *)(param_5 + 1);\n        uVar31 = *(ushort *)((int)param_5 + 6);\n        uVar4 = *(ushort *)param_5;\n        pdVar21 = (double *)(iVar24 * 8 + param_6);\n        uVar5 = *(ushort *)((int)param_5 + 2);\n        pdVar28 = (double *)(iVar6 * 8 + param_6);\n        pdVar30 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)uVar4;\n          *pdVar21 = (double)uVar5;\n          *pdVar28 = (double)uVar3;\n        }\n        else {\n          uVar31 = uVar31 << 8 | uVar31 >> 8;\n          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);\n          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);\n          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 8);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;" (case "case") (number_literal "0x10") (: ":") (if_statement "if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        uVar22 = param_2[0x10];\n        do {\n          if (uVar22 == 1) {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          else {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          lVar34 = (longdouble)FUN_00159350();\n          if (*(int *)(iVar33 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n    }\n    else if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(iVar20 + 0x20);\n      iVar7 = *(int *)(iVar20 + 8);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        uVar3 = *(ushort *)(param_5 + 1);\n        uVar31 = *(ushort *)((int)param_5 + 6);\n        uVar4 = *(ushort *)param_5;\n        pdVar21 = (double *)(iVar24 * 8 + param_6);\n        uVar5 = *(ushort *)((int)param_5 + 2);\n        pdVar28 = (double *)(iVar6 * 8 + param_6);\n        pdVar30 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)uVar4;\n          *pdVar21 = (double)uVar5;\n          *pdVar28 = (double)uVar3;\n        }\n        else {\n          uVar31 = uVar31 << 8 | uVar31 >> 8;\n          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);\n          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);\n          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 8);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }" (if "if") (parenthesized_expression "(param_2[2] == 1)" (( "(") (binary_expression "param_2[2] == 1" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n      if (0 < param_3) {\n        iVar20 = 0;\n        uVar22 = param_2[0x10];\n        do {\n          if (uVar22 == 1) {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          else {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          lVar34 = (longdouble)FUN_00159350();\n          if (*(int *)(iVar33 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n    }" ({ "{") (if_statement "if (0 < param_3) {\n        iVar20 = 0;\n        uVar22 = param_2[0x10];\n        do {\n          if (uVar22 == 1) {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          else {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          lVar34 = (longdouble)FUN_00159350();\n          if (*(int *)(iVar33 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }" (if "if") (parenthesized_expression "(0 < param_3)" (( "(") (binary_expression "0 < param_3" (number_literal "0") (< "<") (identifier "param_3")) () ")")) (compound_statement "{\n        iVar20 = 0;\n        uVar22 = param_2[0x10];\n        do {\n          if (uVar22 == 1) {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          else {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          lVar34 = (longdouble)FUN_00159350();\n          if (*(int *)(iVar33 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }" ({ "{") (expression_statement "iVar20 = 0;" (assignment_expression "iVar20 = 0" (identifier "iVar20") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar22 = param_2[0x10];" (assignment_expression "uVar22 = param_2[0x10]" (identifier "uVar22") (= "=") (subscript_expression "param_2[0x10]" (identifier "param_2") ([ "[") (number_literal "0x10") (] "]"))) (; ";")) (do_statement "do {\n          if (uVar22 == 1) {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          else {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          lVar34 = (longdouble)FUN_00159350();\n          if (*(int *)(iVar33 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);" (do "do") (compound_statement "{\n          if (uVar22 == 1) {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          else {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          lVar34 = (longdouble)FUN_00159350();\n          if (*(int *)(iVar33 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        }" ({ "{") (if_statement "if (uVar22 == 1) {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }\n          else {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }" (if "if") (parenthesized_expression "(uVar22 == 1)" (( "(") (binary_expression "uVar22 == 1" (identifier "uVar22") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }" ({ "{") (expression_statement "lVar34 = (longdouble)FUN_00159350();" (assignment_expression "lVar34 = (longdouble)FUN_00159350()" (identifier "lVar34") (= "=") (cast_expression "(longdouble)FUN_00159350()" (( "(") (type_descriptor "longdouble" (type_identifier "longdouble")) () ")") (call_expression "FUN_00159350()" (identifier "FUN_00159350") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "fVar27 = DAT_0029f710;" (assignment_expression "fVar27 = DAT_0029f710" (identifier "fVar27") (= "=") (identifier "DAT_0029f710")) (; ";")) (expression_statement "iVar33 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar33 = *(int *)(param_1 + 0x2a8)" (identifier "iVar33") (= "=") (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")"))))) (; ";")) (expression_statement "*(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);" (assignment_expression "*(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34)" (pointer_expression "*(double *)(param_6 + *(int *)(iVar33 + 8) * 8)" (* "*") (cast_expression "(double *)(param_6 + *(int *)(iVar33 + 8) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + *(int *)(iVar33 + 8) * 8)" (( "(") (binary_expression "param_6 + *(int *)(iVar33 + 8) * 8" (identifier "param_6") (+ "+") (binary_expression "*(int *)(iVar33 + 8) * 8" (pointer_expression "*(int *)(iVar33 + 8)" (* "*") (cast_expression "(int *)(iVar33 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar33 + 8)" (( "(") (binary_expression "iVar33 + 8" (identifier "iVar33") (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "8"))) () ")")))) (= "=") (cast_expression "(double)((longdouble)DAT_0029f710 * lVar34)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "((longdouble)DAT_0029f710 * lVar34)" (( "(") (binary_expression "(longdouble)DAT_0029f710 * lVar34" (cast_expression "(longdouble)DAT_0029f710" (( "(") (type_descriptor "longdouble" (type_identifier "longdouble")) () ")") (identifier "DAT_0029f710")) (* "*") (identifier "lVar34")) () ")")))) (; ";")) (expression_statement "lVar34 = (longdouble)FUN_00159350();" (assignment_expression "lVar34 = (longdouble)FUN_00159350()" (identifier "lVar34") (= "=") (cast_expression "(longdouble)FUN_00159350()" (( "(") (type_descriptor "longdouble" (type_identifier "longdouble")) () ")") (call_expression "FUN_00159350()" (identifier "FUN_00159350") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "*(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);" (assignment_expression "*(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27)" (pointer_expression "*(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8)" (* "*") (cast_expression "(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + *(int *)(iVar33 + 0x14) * 8)" (( "(") (binary_expression "param_6 + *(int *)(iVar33 + 0x14) * 8" (identifier "param_6") (+ "+") (binary_expression "*(int *)(iVar33 + 0x14) * 8" (pointer_expression "*(int *)(iVar33 + 0x14)" (* "*") (cast_expression "(int *)(iVar33 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar33 + 0x14)" (( "(") (binary_expression "iVar33 + 0x14" (identifier "iVar33") (+ "+") (number_literal "0x14")) () ")")))) (* "*") (number_literal "8"))) () ")")))) (= "=") (cast_expression "(double)(lVar34 * (longdouble)fVar27)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "(lVar34 * (longdouble)fVar27)" (( "(") (binary_expression "lVar34 * (longdouble)fVar27" (identifier "lVar34") (* "*") (cast_expression "(longdouble)fVar27" (( "(") (type_descriptor "longdouble" (type_identifier "longdouble")) () ")") (identifier "fVar27"))) () ")")))) (; ";")) (expression_statement "lVar34 = (longdouble)FUN_00159350();" (assignment_expression "lVar34 = (longdouble)FUN_00159350()" (identifier "lVar34") (= "=") (cast_expression "(longdouble)FUN_00159350()" (( "(") (type_descriptor "longdouble" (type_identifier "longdouble")) () ")") (call_expression "FUN_00159350()" (identifier "FUN_00159350") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "*(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);" (assignment_expression "*(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27)" (pointer_expression "*(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8)" (* "*") (cast_expression "(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + *(int *)(iVar33 + 0x20) * 8)" (( "(") (binary_expression "param_6 + *(int *)(iVar33 + 0x20) * 8" (identifier "param_6") (+ "+") (binary_expression "*(int *)(iVar33 + 0x20) * 8" (pointer_expression "*(int *)(iVar33 + 0x20)" (* "*") (cast_expression "(int *)(iVar33 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar33 + 0x20)" (( "(") (binary_expression "iVar33 + 0x20" (identifier "iVar33") (+ "+") (number_literal "0x20")) () ")")))) (* "*") (number_literal "8"))) () ")")))) (= "=") (cast_expression "(double)(lVar34 * (longdouble)fVar27)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "(lVar34 * (longdouble)fVar27)" (( "(") (binary_expression "lVar34 * (longdouble)fVar27" (identifier "lVar34") (* "*") (cast_expression "(longdouble)fVar27" (( "(") (type_descriptor "longdouble" (type_identifier "longdouble")) () ")") (identifier "fVar27"))) () ")")))) (; ";")) (} "}")) (else_clause "else {\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }" (else "else") (compound_statement "{\n            lVar34 = (longdouble)FUN_00159350();\n            fVar27 = DAT_0029f710;\n            iVar33 = *(int *)(param_1 + 0x2a8);\n            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n            lVar34 = (longdouble)FUN_00159350();\n            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);\n          }" ({ "{") (expression_statement "lVar34 = (longdouble)FUN_00159350();" (assignment_expression "lVar34 = (longdouble)FUN_00159350()" (identifier "lVar34") (= "=") (cast_expression "(longdouble)FUN_00159350()" (( "(") (type_descriptor "longdouble" (type_identifier "longdouble")) () ")") (call_expression "FUN_00159350()" (identifier "FUN_00159350") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "fVar27 = DAT_0029f710;" (assignment_expression "fVar27 = DAT_0029f710" (identifier "fVar27") (= "=") (identifier "DAT_0029f710")) (; ";")) (expression_statement "iVar33 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar33 = *(int *)(param_1 + 0x2a8)" (identifier "iVar33") (= "=") (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")"))))) (; ";")) (expression_statement "*(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34);" (assignment_expression "*(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =\n                 (double)((longdouble)DAT_0029f710 * lVar34)" (pointer_expression "*(double *)(param_6 + *(int *)(iVar33 + 8) * 8)" (* "*") (cast_expression "(double *)(param_6 + *(int *)(iVar33 + 8) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + *(int *)(iVar33 + 8) * 8)" (( "(") (binary_expression "param_6 + *(int *)(iVar33 + 8) * 8" (identifier "param_6") (+ "+") (binary_expression "*(int *)(iVar33 + 8) * 8" (pointer_expression "*(int *)(iVar33 + 8)" (* "*") (cast_expression "(int *)(iVar33 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar33 + 8)" (( "(") (binary_expression "iVar33 + 8" (identifier "iVar33") (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "8"))) () ")")))) (= "=") (cast_expression "(double)((longdouble)DAT_0029f710 * lVar34)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "((longdouble)DAT_0029f710 * lVar34)" (( "(") (binary_expression "(longdouble)DAT_0029f710 * lVar34" (cast_expression "(longdouble)DAT_0029f710" (( "(") (type_descriptor "longdouble" (type_identifier "longdouble")) () ")") (identifier "DAT_0029f710")) (* "*") (identifier "lVar34")) () ")")))) (; ";")) (expression_statement "lVar34 = (longdouble)FUN_00159350();" (assignment_expression "lVar34 = (longdouble)FUN_00159350()" (identifier "lVar34") (= "=") (cast_expression "(longdouble)FUN_00159350()" (( "(") (type_descriptor "longdouble" (type_identifier "longdouble")) () ")") (call_expression "FUN_00159350()" (identifier "FUN_00159350") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "*(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);" (assignment_expression "*(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27)" (pointer_expression "*(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8)" (* "*") (cast_expression "(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + *(int *)(iVar33 + 0x14) * 8)" (( "(") (binary_expression "param_6 + *(int *)(iVar33 + 0x14) * 8" (identifier "param_6") (+ "+") (binary_expression "*(int *)(iVar33 + 0x14) * 8" (pointer_expression "*(int *)(iVar33 + 0x14)" (* "*") (cast_expression "(int *)(iVar33 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar33 + 0x14)" (( "(") (binary_expression "iVar33 + 0x14" (identifier "iVar33") (+ "+") (number_literal "0x14")) () ")")))) (* "*") (number_literal "8"))) () ")")))) (= "=") (cast_expression "(double)(lVar34 * (longdouble)fVar27)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "(lVar34 * (longdouble)fVar27)" (( "(") (binary_expression "lVar34 * (longdouble)fVar27" (identifier "lVar34") (* "*") (cast_expression "(longdouble)fVar27" (( "(") (type_descriptor "longdouble" (type_identifier "longdouble")) () ")") (identifier "fVar27"))) () ")")))) (; ";")) (expression_statement "lVar34 = (longdouble)FUN_00159350();" (assignment_expression "lVar34 = (longdouble)FUN_00159350()" (identifier "lVar34") (= "=") (cast_expression "(longdouble)FUN_00159350()" (( "(") (type_descriptor "longdouble" (type_identifier "longdouble")) () ")") (call_expression "FUN_00159350()" (identifier "FUN_00159350") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "*(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27);" (assignment_expression "*(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =\n                 (double)(lVar34 * (longdouble)fVar27)" (pointer_expression "*(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8)" (* "*") (cast_expression "(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + *(int *)(iVar33 + 0x20) * 8)" (( "(") (binary_expression "param_6 + *(int *)(iVar33 + 0x20) * 8" (identifier "param_6") (+ "+") (binary_expression "*(int *)(iVar33 + 0x20) * 8" (pointer_expression "*(int *)(iVar33 + 0x20)" (* "*") (cast_expression "(int *)(iVar33 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar33 + 0x20)" (( "(") (binary_expression "iVar33 + 0x20" (identifier "iVar33") (+ "+") (number_literal "0x20")) () ")")))) (* "*") (number_literal "8"))) () ")")))) (= "=") (cast_expression "(double)(lVar34 * (longdouble)fVar27)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "(lVar34 * (longdouble)fVar27)" (( "(") (binary_expression "lVar34 * (longdouble)fVar27" (identifier "lVar34") (* "*") (cast_expression "(longdouble)fVar27" (( "(") (type_descriptor "longdouble" (type_identifier "longdouble")) () ")") (identifier "fVar27"))) () ")")))) (; ";")) (} "}")))) (expression_statement "lVar34 = (longdouble)FUN_00159350();" (assignment_expression "lVar34 = (longdouble)FUN_00159350()" (identifier "lVar34") (= "=") (cast_expression "(longdouble)FUN_00159350()" (( "(") (type_descriptor "longdouble" (type_identifier "longdouble")) () ")") (call_expression "FUN_00159350()" (identifier "FUN_00159350") (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if (*(int *)(iVar33 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);\n          }" (if "if") (parenthesized_expression "(*(int *)(iVar33 + 0x34) != 0)" (( "(") (binary_expression "*(int *)(iVar33 + 0x34) != 0" (pointer_expression "*(int *)(iVar33 + 0x34)" (* "*") (cast_expression "(int *)(iVar33 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar33 + 0x34)" (( "(") (binary_expression "iVar33 + 0x34" (identifier "iVar33") (+ "+") (number_literal "0x34")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            *(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);\n          }" ({ "{") (expression_statement "*(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);" (assignment_expression "*(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =\n                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710)" (pointer_expression "*(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8)" (* "*") (cast_expression "(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + *(int *)(iVar33 + 0x38) * 8)" (( "(") (binary_expression "param_6 + *(int *)(iVar33 + 0x38) * 8" (identifier "param_6") (+ "+") (binary_expression "*(int *)(iVar33 + 0x38) * 8" (pointer_expression "*(int *)(iVar33 + 0x38)" (* "*") (cast_expression "(int *)(iVar33 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar33 + 0x38)" (( "(") (binary_expression "iVar33 + 0x38" (identifier "iVar33") (+ "+") (number_literal "0x38")) () ")")))) (* "*") (number_literal "8"))) () ")")))) (= "=") (cast_expression "(double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710)" (( "(") (binary_expression "(longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710" (cast_expression "(longdouble)DAT_0029f710" (( "(") (type_descriptor "longdouble" (type_identifier "longdouble")) () ")") (identifier "DAT_0029f710")) (- "-") (binary_expression "lVar34 * (longdouble)DAT_0029f710" (identifier "lVar34") (* "*") (cast_expression "(longdouble)DAT_0029f710" (( "(") (type_descriptor "longdouble" (type_identifier "longdouble")) () ")") (identifier "DAT_0029f710")))) () ")")))) (; ";")) (} "}"))) (expression_statement "iVar20 = iVar20 + 1;" (assignment_expression "iVar20 = iVar20 + 1" (identifier "iVar20") (= "=") (binary_expression "iVar20 + 1" (identifier "iVar20") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;" (assignment_expression "param_6 = param_6 + *(int *)(param_1 + 0x298) * 8" (identifier "param_6") (= "=") (binary_expression "param_6 + *(int *)(param_1 + 0x298) * 8" (identifier "param_6") (+ "+") (binary_expression "*(int *)(param_1 + 0x298) * 8" (pointer_expression "*(int *)(param_1 + 0x298)" (* "*") (cast_expression "(int *)(param_1 + 0x298)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x298)" (( "(") (binary_expression "param_1 + 0x298" (identifier "param_1") (+ "+") (number_literal "0x298")) () ")")))) (* "*") (number_literal "8")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar20 != param_3)" (( "(") (binary_expression "iVar20 != param_3" (identifier "iVar20") (!= "!=") (identifier "param_3")) () ")")) (; ";")) (} "}"))) (} "}")) (else_clause "else if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(iVar20 + 0x20);\n      iVar7 = *(int *)(iVar20 + 8);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        uVar3 = *(ushort *)(param_5 + 1);\n        uVar31 = *(ushort *)((int)param_5 + 6);\n        uVar4 = *(ushort *)param_5;\n        pdVar21 = (double *)(iVar24 * 8 + param_6);\n        uVar5 = *(ushort *)((int)param_5 + 2);\n        pdVar28 = (double *)(iVar6 * 8 + param_6);\n        pdVar30 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)uVar4;\n          *pdVar21 = (double)uVar5;\n          *pdVar28 = (double)uVar3;\n        }\n        else {\n          uVar31 = uVar31 << 8 | uVar31 >> 8;\n          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);\n          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);\n          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 8);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }" (else "else") (if_statement "if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(iVar20 + 0x20);\n      iVar7 = *(int *)(iVar20 + 8);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        uVar3 = *(ushort *)(param_5 + 1);\n        uVar31 = *(ushort *)((int)param_5 + 6);\n        uVar4 = *(ushort *)param_5;\n        pdVar21 = (double *)(iVar24 * 8 + param_6);\n        uVar5 = *(ushort *)((int)param_5 + 2);\n        pdVar28 = (double *)(iVar6 * 8 + param_6);\n        pdVar30 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)uVar4;\n          *pdVar21 = (double)uVar5;\n          *pdVar28 = (double)uVar3;\n        }\n        else {\n          uVar31 = uVar31 << 8 | uVar31 >> 8;\n          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);\n          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);\n          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 8);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }" (if "if") (parenthesized_expression "(0 < param_3)" (( "(") (binary_expression "0 < param_3" (number_literal "0") (< "<") (identifier "param_3")) () ")")) (compound_statement "{\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(iVar20 + 0x20);\n      iVar7 = *(int *)(iVar20 + 8);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        uVar3 = *(ushort *)(param_5 + 1);\n        uVar31 = *(ushort *)((int)param_5 + 6);\n        uVar4 = *(ushort *)param_5;\n        pdVar21 = (double *)(iVar24 * 8 + param_6);\n        uVar5 = *(ushort *)((int)param_5 + 2);\n        pdVar28 = (double *)(iVar6 * 8 + param_6);\n        pdVar30 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)uVar4;\n          *pdVar21 = (double)uVar5;\n          *pdVar28 = (double)uVar3;\n        }\n        else {\n          uVar31 = uVar31 << 8 | uVar31 >> 8;\n          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);\n          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);\n          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 8);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }" ({ "{") (expression_statement "iVar20 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar20 = *(int *)(param_1 + 0x2a8)" (identifier "iVar20") (= "=") (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")"))))) (; ";")) (expression_statement "uVar22 = param_2[0x10];" (assignment_expression "uVar22 = param_2[0x10]" (identifier "uVar22") (= "=") (subscript_expression "param_2[0x10]" (identifier "param_2") ([ "[") (number_literal "0x10") (] "]"))) (; ";")) (expression_statement "uVar26 = param_2[9];" (assignment_expression "uVar26 = param_2[9]" (identifier "uVar26") (= "=") (subscript_expression "param_2[9]" (identifier "param_2") ([ "[") (number_literal "9") (] "]"))) (; ";")) (expression_statement "iVar33 = *(int *)(param_1 + 0x298);" (assignment_expression "iVar33 = *(int *)(param_1 + 0x298)" (identifier "iVar33") (= "=") (pointer_expression "*(int *)(param_1 + 0x298)" (* "*") (cast_expression "(int *)(param_1 + 0x298)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x298)" (( "(") (binary_expression "param_1 + 0x298" (identifier "param_1") (+ "+") (number_literal "0x298")) () ")"))))) (; ";")) (expression_statement "iVar24 = *(int *)(iVar20 + 0x14);" (assignment_expression "iVar24 = *(int *)(iVar20 + 0x14)" (identifier "iVar24") (= "=") (pointer_expression "*(int *)(iVar20 + 0x14)" (* "*") (cast_expression "(int *)(iVar20 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + 0x14)" (( "(") (binary_expression "iVar20 + 0x14" (identifier "iVar20") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "iVar6 = *(int *)(iVar20 + 0x20);" (assignment_expression "iVar6 = *(int *)(iVar20 + 0x20)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(iVar20 + 0x20)" (* "*") (cast_expression "(int *)(iVar20 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + 0x20)" (( "(") (binary_expression "iVar20 + 0x20" (identifier "iVar20") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "iVar7 = *(int *)(iVar20 + 8);" (assignment_expression "iVar7 = *(int *)(iVar20 + 8)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(iVar20 + 8)" (* "*") (cast_expression "(int *)(iVar20 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + 8)" (( "(") (binary_expression "iVar20 + 8" (identifier "iVar20") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "iVar8 = *(int *)(iVar20 + 0x34);" (assignment_expression "iVar8 = *(int *)(iVar20 + 0x34)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(iVar20 + 0x34)" (* "*") (cast_expression "(int *)(iVar20 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + 0x34)" (( "(") (binary_expression "iVar20 + 0x34" (identifier "iVar20") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (expression_statement "iVar32 = 0;" (assignment_expression "iVar32 = 0" (identifier "iVar32") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        uVar3 = *(ushort *)(param_5 + 1);\n        uVar31 = *(ushort *)((int)param_5 + 6);\n        uVar4 = *(ushort *)param_5;\n        pdVar21 = (double *)(iVar24 * 8 + param_6);\n        uVar5 = *(ushort *)((int)param_5 + 2);\n        pdVar28 = (double *)(iVar6 * 8 + param_6);\n        pdVar30 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)uVar4;\n          *pdVar21 = (double)uVar5;\n          *pdVar28 = (double)uVar3;\n        }\n        else {\n          uVar31 = uVar31 << 8 | uVar31 >> 8;\n          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);\n          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);\n          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 8);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);" (do "do") (compound_statement "{\n        uVar3 = *(ushort *)(param_5 + 1);\n        uVar31 = *(ushort *)((int)param_5 + 6);\n        uVar4 = *(ushort *)param_5;\n        pdVar21 = (double *)(iVar24 * 8 + param_6);\n        uVar5 = *(ushort *)((int)param_5 + 2);\n        pdVar28 = (double *)(iVar6 * 8 + param_6);\n        pdVar30 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)uVar4;\n          *pdVar21 = (double)uVar5;\n          *pdVar28 = (double)uVar3;\n        }\n        else {\n          uVar31 = uVar31 << 8 | uVar31 >> 8;\n          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);\n          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);\n          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 8);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      }" ({ "{") (expression_statement "uVar3 = *(ushort *)(param_5 + 1);" (assignment_expression "uVar3 = *(ushort *)(param_5 + 1)" (identifier "uVar3") (= "=") (pointer_expression "*(ushort *)(param_5 + 1)" (* "*") (cast_expression "(ushort *)(param_5 + 1)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 1)" (( "(") (binary_expression "param_5 + 1" (identifier "param_5") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "uVar31 = *(ushort *)((int)param_5 + 6);" (assignment_expression "uVar31 = *(ushort *)((int)param_5 + 6)" (identifier "uVar31") (= "=") (pointer_expression "*(ushort *)((int)param_5 + 6)" (* "*") (cast_expression "(ushort *)((int)param_5 + 6)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_5 + 6)" (( "(") (binary_expression "(int)param_5 + 6" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (+ "+") (number_literal "6")) () ")"))))) (; ";")) (expression_statement "uVar4 = *(ushort *)param_5;" (assignment_expression "uVar4 = *(ushort *)param_5" (identifier "uVar4") (= "=") (pointer_expression "*(ushort *)param_5" (* "*") (cast_expression "(ushort *)param_5" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_5")))) (; ";")) (expression_statement "pdVar21 = (double *)(iVar24 * 8 + param_6);" (assignment_expression "pdVar21 = (double *)(iVar24 * 8 + param_6)" (identifier "pdVar21") (= "=") (cast_expression "(double *)(iVar24 * 8 + param_6)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar24 * 8 + param_6)" (( "(") (binary_expression "iVar24 * 8 + param_6" (binary_expression "iVar24 * 8" (identifier "iVar24") (* "*") (number_literal "8")) (+ "+") (identifier "param_6")) () ")")))) (; ";")) (expression_statement "uVar5 = *(ushort *)((int)param_5 + 2);" (assignment_expression "uVar5 = *(ushort *)((int)param_5 + 2)" (identifier "uVar5") (= "=") (pointer_expression "*(ushort *)((int)param_5 + 2)" (* "*") (cast_expression "(ushort *)((int)param_5 + 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_5 + 2)" (( "(") (binary_expression "(int)param_5 + 2" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "pdVar28 = (double *)(iVar6 * 8 + param_6);" (assignment_expression "pdVar28 = (double *)(iVar6 * 8 + param_6)" (identifier "pdVar28") (= "=") (cast_expression "(double *)(iVar6 * 8 + param_6)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 * 8 + param_6)" (( "(") (binary_expression "iVar6 * 8 + param_6" (binary_expression "iVar6 * 8" (identifier "iVar6") (* "*") (number_literal "8")) (+ "+") (identifier "param_6")) () ")")))) (; ";")) (expression_statement "pdVar30 = (double *)(iVar7 * 8 + param_6);" (assignment_expression "pdVar30 = (double *)(iVar7 * 8 + param_6)" (identifier "pdVar30") (= "=") (cast_expression "(double *)(iVar7 * 8 + param_6)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 * 8 + param_6)" (( "(") (binary_expression "iVar7 * 8 + param_6" (binary_expression "iVar7 * 8" (identifier "iVar7") (* "*") (number_literal "8")) (+ "+") (identifier "param_6")) () ")")))) (; ";")) (if_statement "if (uVar22 == 1) {\n          *pdVar30 = (double)uVar4;\n          *pdVar21 = (double)uVar5;\n          *pdVar28 = (double)uVar3;\n        }\n        else {\n          uVar31 = uVar31 << 8 | uVar31 >> 8;\n          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);\n          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);\n          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n        }" (if "if") (parenthesized_expression "(uVar22 == 1)" (( "(") (binary_expression "uVar22 == 1" (identifier "uVar22") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n          *pdVar30 = (double)uVar4;\n          *pdVar21 = (double)uVar5;\n          *pdVar28 = (double)uVar3;\n        }" ({ "{") (expression_statement "*pdVar30 = (double)uVar4;" (assignment_expression "*pdVar30 = (double)uVar4" (pointer_expression "*pdVar30" (* "*") (identifier "pdVar30")) (= "=") (cast_expression "(double)uVar4" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "uVar4"))) (; ";")) (expression_statement "*pdVar21 = (double)uVar5;" (assignment_expression "*pdVar21 = (double)uVar5" (pointer_expression "*pdVar21" (* "*") (identifier "pdVar21")) (= "=") (cast_expression "(double)uVar5" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "uVar5"))) (; ";")) (expression_statement "*pdVar28 = (double)uVar3;" (assignment_expression "*pdVar28 = (double)uVar3" (pointer_expression "*pdVar28" (* "*") (identifier "pdVar28")) (= "=") (cast_expression "(double)uVar3" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "uVar3"))) (; ";")) (} "}")) (else_clause "else {\n          uVar31 = uVar31 << 8 | uVar31 >> 8;\n          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);\n          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);\n          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n        }" (else "else") (compound_statement "{\n          uVar31 = uVar31 << 8 | uVar31 >> 8;\n          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);\n          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);\n          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);\n        }" ({ "{") (expression_statement "uVar31 = uVar31 << 8 | uVar31 >> 8;" (assignment_expression "uVar31 = uVar31 << 8 | uVar31 >> 8" (identifier "uVar31") (= "=") (binary_expression "uVar31 << 8 | uVar31 >> 8" (binary_expression "uVar31 << 8" (identifier "uVar31") (<< "<<") (number_literal "8")) (| "|") (binary_expression "uVar31 >> 8" (identifier "uVar31") (>> ">>") (number_literal "8")))) (; ";")) (expression_statement "*pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);" (assignment_expression "*pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8)" (pointer_expression "*pdVar30" (* "*") (identifier "pdVar30")) (= "=") (cast_expression "(double)(ushort)(uVar4 << 8 | uVar4 >> 8)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (call_expression "(ushort)(uVar4 << 8 | uVar4 >> 8)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "(uVar4 << 8 | uVar4 >> 8)" (( "(") (binary_expression "uVar4 << 8 | uVar4 >> 8" (binary_expression "uVar4 << 8" (identifier "uVar4") (<< "<<") (number_literal "8")) (| "|") (binary_expression "uVar4 >> 8" (identifier "uVar4") (>> ">>") (number_literal "8"))) () ")"))))) (; ";")) (expression_statement "*pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);" (assignment_expression "*pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8)" (pointer_expression "*pdVar21" (* "*") (identifier "pdVar21")) (= "=") (cast_expression "(double)(ushort)(uVar5 << 8 | uVar5 >> 8)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (call_expression "(ushort)(uVar5 << 8 | uVar5 >> 8)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "(uVar5 << 8 | uVar5 >> 8)" (( "(") (binary_expression "uVar5 << 8 | uVar5 >> 8" (binary_expression "uVar5 << 8" (identifier "uVar5") (<< "<<") (number_literal "8")) (| "|") (binary_expression "uVar5 >> 8" (identifier "uVar5") (>> ">>") (number_literal "8"))) () ")"))))) (; ";")) (expression_statement "*pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);" (assignment_expression "*pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8)" (pointer_expression "*pdVar28" (* "*") (identifier "pdVar28")) (= "=") (cast_expression "(double)(ushort)(uVar3 << 8 | uVar3 >> 8)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (call_expression "(ushort)(uVar3 << 8 | uVar3 >> 8)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "(uVar3 << 8 | uVar3 >> 8)" (( "(") (binary_expression "uVar3 << 8 | uVar3 >> 8" (binary_expression "uVar3 << 8" (identifier "uVar3") (<< "<<") (number_literal "8")) (| "|") (binary_expression "uVar3 >> 8" (identifier "uVar3") (>> ">>") (number_literal "8"))) () ")"))))) (; ";")) (} "}")))) (if_statement "if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);\n        }" (if "if") (parenthesized_expression "(iVar8 != 0)" (( "(") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);\n        }" ({ "{") (expression_statement "*(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);" (assignment_expression "*(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31)" (pointer_expression "*(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8)" (* "*") (cast_expression "(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + *(int *)(iVar20 + 0x38) * 8)" (( "(") (binary_expression "param_6 + *(int *)(iVar20 + 0x38) * 8" (identifier "param_6") (+ "+") (binary_expression "*(int *)(iVar20 + 0x38) * 8" (pointer_expression "*(int *)(iVar20 + 0x38)" (* "*") (cast_expression "(int *)(iVar20 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + 0x38)" (( "(") (binary_expression "iVar20 + 0x38" (identifier "iVar20") (+ "+") (number_literal "0x38")) () ")")))) (* "*") (number_literal "8"))) () ")")))) (= "=") (cast_expression "(double)(fVar27 - (float)uVar31)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "(fVar27 - (float)uVar31)" (( "(") (binary_expression "fVar27 - (float)uVar31" (identifier "fVar27") (- "-") (cast_expression "(float)uVar31" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (identifier "uVar31"))) () ")")))) (; ";")) (} "}"))) (expression_statement "param_5 = (float *)((int)param_5 + uVar26 + 8);" (assignment_expression "param_5 = (float *)((int)param_5 + uVar26 + 8)" (identifier "param_5") (= "=") (cast_expression "(float *)((int)param_5 + uVar26 + 8)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_5 + uVar26 + 8)" (( "(") (binary_expression "(int)param_5 + uVar26 + 8" (binary_expression "(int)param_5 + uVar26" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (+ "+") (identifier "uVar26")) (+ "+") (number_literal "8")) () ")")))) (; ";")) (expression_statement "iVar32 = iVar32 + 1;" (assignment_expression "iVar32 = iVar32 + 1" (identifier "iVar32") (= "=") (binary_expression "iVar32 + 1" (identifier "iVar32") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_6 = param_6 + iVar33 * 8;" (assignment_expression "param_6 = param_6 + iVar33 * 8" (identifier "param_6") (= "=") (binary_expression "param_6 + iVar33 * 8" (identifier "param_6") (+ "+") (binary_expression "iVar33 * 8" (identifier "iVar33") (* "*") (number_literal "8")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar32 != param_3)" (( "(") (binary_expression "iVar32 != param_3" (identifier "iVar32") (!= "!=") (identifier "param_3")) () ")")) (; ";")) (} "}"))))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x18:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }\n    goto code_r0x001616dd;" (case "case") (number_literal "0x18") (: ":") (if_statement "if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }" (if "if") (parenthesized_expression "(param_2[2] == 1)" (( "(") (binary_expression "param_2[2] == 1" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }" ({ "{") (if_statement "if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }" (if "if") (parenthesized_expression "(0 < param_3)" (( "(") (binary_expression "0 < param_3" (number_literal "0") (< "<") (identifier "param_3")) () ")")) (compound_statement "{\n        iVar20 = 0;\n        do {\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }" ({ "{") (expression_statement "iVar20 = 0;" (assignment_expression "iVar20 = 0" (identifier "iVar20") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);" (do "do") (compound_statement "{\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) = (double)fStack_2c;\n          FUN_00159670();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c);\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        }" ({ "{") (expression_statement "FUN_00159670();" (call_expression "FUN_00159670()" (identifier "FUN_00159670") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) = (double)fStack_2c;" (assignment_expression "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) = (double)fStack_2c" (pointer_expression "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" (* "*") (cast_expression "(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" (( "(") (binary_expression "param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" (identifier "param_6") (+ "+") (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 8)" (( "(") (binary_expression "*(int *)(param_1 + 0x2a8) + 8" (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")")))) (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "8"))) () ")")))) (= "=") (cast_expression "(double)fStack_2c" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "fStack_2c"))) (; ";")) (expression_statement "FUN_00159670();" (call_expression "FUN_00159670()" (identifier "FUN_00159670") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) = (double)fStack_2c;" (assignment_expression "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) = (double)fStack_2c" (pointer_expression "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" (* "*") (cast_expression "(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" (( "(") (binary_expression "param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" (identifier "param_6") (+ "+") (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x14)" (( "(") (binary_expression "*(int *)(param_1 + 0x2a8) + 0x14" (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")")))) (+ "+") (number_literal "0x14")) () ")")))) (* "*") (number_literal "8"))) () ")")))) (= "=") (cast_expression "(double)fStack_2c" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "fStack_2c"))) (; ";")) (expression_statement "FUN_00159670();" (call_expression "FUN_00159670()" (identifier "FUN_00159670") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) = (double)fStack_2c;" (assignment_expression "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) = (double)fStack_2c" (pointer_expression "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" (* "*") (cast_expression "(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" (( "(") (binary_expression "param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" (identifier "param_6") (+ "+") (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x20)" (( "(") (binary_expression "*(int *)(param_1 + 0x2a8) + 0x20" (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")")))) (+ "+") (number_literal "0x20")) () ")")))) (* "*") (number_literal "8"))) () ")")))) (= "=") (cast_expression "(double)fStack_2c" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "fStack_2c"))) (; ";")) (expression_statement "FUN_00159670();" (call_expression "FUN_00159670()" (identifier "FUN_00159670") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c);\n          }" (if "if") (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0)" (( "(") (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x34)" (( "(") (binary_expression "*(int *)(param_1 + 0x2a8) + 0x34" (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")")))) (+ "+") (number_literal "0x34")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c);\n          }" ({ "{") (expression_statement "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c);" (assignment_expression "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - fStack_2c)" (pointer_expression "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" (* "*") (cast_expression "(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" (( "(") (binary_expression "param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" (identifier "param_6") (+ "+") (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x38)" (( "(") (binary_expression "*(int *)(param_1 + 0x2a8) + 0x38" (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")")))) (+ "+") (number_literal "0x38")) () ")")))) (* "*") (number_literal "8"))) () ")")))) (= "=") (cast_expression "(double)(DAT_0029f710 - fStack_2c)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "(DAT_0029f710 - fStack_2c)" (( "(") (binary_expression "DAT_0029f710 - fStack_2c" (identifier "DAT_0029f710") (- "-") (identifier "fStack_2c")) () ")")))) (; ";")) (} "}"))) (expression_statement "iVar20 = iVar20 + 1;" (assignment_expression "iVar20 = iVar20 + 1" (identifier "iVar20") (= "=") (binary_expression "iVar20 + 1" (identifier "iVar20") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;" (assignment_expression "param_6 = param_6 + *(int *)(param_1 + 0x298) * 8" (identifier "param_6") (= "=") (binary_expression "param_6 + *(int *)(param_1 + 0x298) * 8" (identifier "param_6") (+ "+") (binary_expression "*(int *)(param_1 + 0x298) * 8" (pointer_expression "*(int *)(param_1 + 0x298)" (* "*") (cast_expression "(int *)(param_1 + 0x298)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x298)" (( "(") (binary_expression "param_1 + 0x298" (identifier "param_1") (+ "+") (number_literal "0x298")) () ")")))) (* "*") (number_literal "8")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar20 != param_3)" (( "(") (binary_expression "iVar20 != param_3" (identifier "iVar20") (!= "!=") (identifier "param_3")) () ")")) (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";")) (} "}"))) (goto_statement "goto code_r0x001616dd;" (goto "goto") (statement_identifier "code_r0x001616dd") (; ";"))) (case_statement "case 0x20:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        local_5c = (double *)0x0;\n        uVar22 = param_2[9];\n        uVar26 = param_2[0x10];\n        iVar33 = *(int *)(param_1 + 0x298);\n        do {\n          local_64 = *param_5;\n          if (uVar26 != 1) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3));\n          }\n          fVar13 = (local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar27 = fVar10;\n          if ((fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)) {\n            fVar27 = fVar13;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 8) * 8) = (double)fVar27;\n          if (uVar26 == 1) {\n            fVar27 = param_5[1];\n          }\n          else {\n            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));\n          }\n          fVar27 = (fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            local_60 = param_5[2];\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));\n          }\n          fVar27 = (local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            fVar27 = param_5[3];\n            local_6c = SUB41(fVar27,0);\n            bStack_6b = (byte)((uint)fVar27 >> 8);\n            uStack_6a = (ushort)((uint)fVar27 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);\n            bStack_6b = *(byte *)((int)param_5 + 0xe);\n            local_6c = *(byte *)((int)param_5 + 0xf);\n          }\n          fVar27 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          param_5 = (float *)((int)param_5 + uVar22 + 0x10);\n          param_6 = param_6 + iVar33 * 8;\n        } while (local_5c != (double *)param_3);\n      }\n      break;\n    }\ncode_r0x001616dd:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        fVar17 = DAT_002a7fec;\n        fVar27 = param_5[3];\n        fVar9 = param_5[1];\n        pdVar21 = (double *)(iVar6 * 8 + param_6);\n        fVar10 = param_5[2];\n        pdVar30 = (double *)(iVar24 * 8 + param_6);\n        fVar11 = *param_5;\n        pdVar28 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec);\n          *pdVar21 = (double)((float)(uint)fVar9 / fVar17);\n          *pdVar28 = (double)((float)(uint)fVar10 / fVar17);\n        }\n        else {\n          uVar3 = (ushort)((uint)fVar11 >> 8);\n          uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);\n          fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          *pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13);\n          *pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);\n          *pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 0x10);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }\n    break;" (case "case") (number_literal "0x20") (: ":") (if_statement "if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        local_5c = (double *)0x0;\n        uVar22 = param_2[9];\n        uVar26 = param_2[0x10];\n        iVar33 = *(int *)(param_1 + 0x298);\n        do {\n          local_64 = *param_5;\n          if (uVar26 != 1) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3));\n          }\n          fVar13 = (local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar27 = fVar10;\n          if ((fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)) {\n            fVar27 = fVar13;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 8) * 8) = (double)fVar27;\n          if (uVar26 == 1) {\n            fVar27 = param_5[1];\n          }\n          else {\n            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));\n          }\n          fVar27 = (fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            local_60 = param_5[2];\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));\n          }\n          fVar27 = (local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            fVar27 = param_5[3];\n            local_6c = SUB41(fVar27,0);\n            bStack_6b = (byte)((uint)fVar27 >> 8);\n            uStack_6a = (ushort)((uint)fVar27 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);\n            bStack_6b = *(byte *)((int)param_5 + 0xe);\n            local_6c = *(byte *)((int)param_5 + 0xf);\n          }\n          fVar27 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          param_5 = (float *)((int)param_5 + uVar22 + 0x10);\n          param_6 = param_6 + iVar33 * 8;\n        } while (local_5c != (double *)param_3);\n      }\n      break;\n    }" (if "if") (parenthesized_expression "(param_2[2] == 1)" (( "(") (binary_expression "param_2[2] == 1" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n      if (0 < param_3) {\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        local_5c = (double *)0x0;\n        uVar22 = param_2[9];\n        uVar26 = param_2[0x10];\n        iVar33 = *(int *)(param_1 + 0x298);\n        do {\n          local_64 = *param_5;\n          if (uVar26 != 1) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3));\n          }\n          fVar13 = (local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar27 = fVar10;\n          if ((fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)) {\n            fVar27 = fVar13;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 8) * 8) = (double)fVar27;\n          if (uVar26 == 1) {\n            fVar27 = param_5[1];\n          }\n          else {\n            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));\n          }\n          fVar27 = (fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            local_60 = param_5[2];\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));\n          }\n          fVar27 = (local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            fVar27 = param_5[3];\n            local_6c = SUB41(fVar27,0);\n            bStack_6b = (byte)((uint)fVar27 >> 8);\n            uStack_6a = (ushort)((uint)fVar27 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);\n            bStack_6b = *(byte *)((int)param_5 + 0xe);\n            local_6c = *(byte *)((int)param_5 + 0xf);\n          }\n          fVar27 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          param_5 = (float *)((int)param_5 + uVar22 + 0x10);\n          param_6 = param_6 + iVar33 * 8;\n        } while (local_5c != (double *)param_3);\n      }\n      break;\n    }" ({ "{") (if_statement "if (0 < param_3) {\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        local_5c = (double *)0x0;\n        uVar22 = param_2[9];\n        uVar26 = param_2[0x10];\n        iVar33 = *(int *)(param_1 + 0x298);\n        do {\n          local_64 = *param_5;\n          if (uVar26 != 1) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3));\n          }\n          fVar13 = (local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar27 = fVar10;\n          if ((fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)) {\n            fVar27 = fVar13;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 8) * 8) = (double)fVar27;\n          if (uVar26 == 1) {\n            fVar27 = param_5[1];\n          }\n          else {\n            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));\n          }\n          fVar27 = (fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            local_60 = param_5[2];\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));\n          }\n          fVar27 = (local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            fVar27 = param_5[3];\n            local_6c = SUB41(fVar27,0);\n            bStack_6b = (byte)((uint)fVar27 >> 8);\n            uStack_6a = (ushort)((uint)fVar27 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);\n            bStack_6b = *(byte *)((int)param_5 + 0xe);\n            local_6c = *(byte *)((int)param_5 + 0xf);\n          }\n          fVar27 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          param_5 = (float *)((int)param_5 + uVar22 + 0x10);\n          param_6 = param_6 + iVar33 * 8;\n        } while (local_5c != (double *)param_3);\n      }" (if "if") (parenthesized_expression "(0 < param_3)" (( "(") (binary_expression "0 < param_3" (number_literal "0") (< "<") (identifier "param_3")) () ")")) (compound_statement "{\n        iVar20 = *(int *)(param_1 + 0x2a8);\n        local_5c = (double *)0x0;\n        uVar22 = param_2[9];\n        uVar26 = param_2[0x10];\n        iVar33 = *(int *)(param_1 + 0x298);\n        do {\n          local_64 = *param_5;\n          if (uVar26 != 1) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3));\n          }\n          fVar13 = (local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar27 = fVar10;\n          if ((fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)) {\n            fVar27 = fVar13;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 8) * 8) = (double)fVar27;\n          if (uVar26 == 1) {\n            fVar27 = param_5[1];\n          }\n          else {\n            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));\n          }\n          fVar27 = (fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            local_60 = param_5[2];\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));\n          }\n          fVar27 = (local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            fVar27 = param_5[3];\n            local_6c = SUB41(fVar27,0);\n            bStack_6b = (byte)((uint)fVar27 >> 8);\n            uStack_6a = (ushort)((uint)fVar27 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);\n            bStack_6b = *(byte *)((int)param_5 + 0xe);\n            local_6c = *(byte *)((int)param_5 + 0xf);\n          }\n          fVar27 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          param_5 = (float *)((int)param_5 + uVar22 + 0x10);\n          param_6 = param_6 + iVar33 * 8;\n        } while (local_5c != (double *)param_3);\n      }" ({ "{") (expression_statement "iVar20 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar20 = *(int *)(param_1 + 0x2a8)" (identifier "iVar20") (= "=") (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")"))))) (; ";")) (expression_statement "local_5c = (double *)0x0;" (assignment_expression "local_5c = (double *)0x0" (identifier "local_5c") (= "=") (cast_expression "(double *)0x0" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "uVar22 = param_2[9];" (assignment_expression "uVar22 = param_2[9]" (identifier "uVar22") (= "=") (subscript_expression "param_2[9]" (identifier "param_2") ([ "[") (number_literal "9") (] "]"))) (; ";")) (expression_statement "uVar26 = param_2[0x10];" (assignment_expression "uVar26 = param_2[0x10]" (identifier "uVar26") (= "=") (subscript_expression "param_2[0x10]" (identifier "param_2") ([ "[") (number_literal "0x10") (] "]"))) (; ";")) (expression_statement "iVar33 = *(int *)(param_1 + 0x298);" (assignment_expression "iVar33 = *(int *)(param_1 + 0x298)" (identifier "iVar33") (= "=") (pointer_expression "*(int *)(param_1 + 0x298)" (* "*") (cast_expression "(int *)(param_1 + 0x298)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x298)" (( "(") (binary_expression "param_1 + 0x298" (identifier "param_1") (+ "+") (number_literal "0x298")) () ")"))))) (; ";")) (do_statement "do {\n          local_64 = *param_5;\n          if (uVar26 != 1) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3));\n          }\n          fVar13 = (local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar27 = fVar10;\n          if ((fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)) {\n            fVar27 = fVar13;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 8) * 8) = (double)fVar27;\n          if (uVar26 == 1) {\n            fVar27 = param_5[1];\n          }\n          else {\n            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));\n          }\n          fVar27 = (fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            local_60 = param_5[2];\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));\n          }\n          fVar27 = (local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            fVar27 = param_5[3];\n            local_6c = SUB41(fVar27,0);\n            bStack_6b = (byte)((uint)fVar27 >> 8);\n            uStack_6a = (ushort)((uint)fVar27 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);\n            bStack_6b = *(byte *)((int)param_5 + 0xe);\n            local_6c = *(byte *)((int)param_5 + 0xf);\n          }\n          fVar27 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          param_5 = (float *)((int)param_5 + uVar22 + 0x10);\n          param_6 = param_6 + iVar33 * 8;\n        } while (local_5c != (double *)param_3);" (do "do") (compound_statement "{\n          local_64 = *param_5;\n          if (uVar26 != 1) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3));\n          }\n          fVar13 = (local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar27 = fVar10;\n          if ((fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)) {\n            fVar27 = fVar13;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 8) * 8) = (double)fVar27;\n          if (uVar26 == 1) {\n            fVar27 = param_5[1];\n          }\n          else {\n            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));\n          }\n          fVar27 = (fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            local_60 = param_5[2];\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));\n          }\n          fVar27 = (local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          *(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8) = (double)fVar13;\n          if (uVar26 == 1) {\n            fVar27 = param_5[3];\n            local_6c = SUB41(fVar27,0);\n            bStack_6b = (byte)((uint)fVar27 >> 8);\n            uStack_6a = (ushort)((uint)fVar27 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);\n            bStack_6b = *(byte *)((int)param_5 + 0xe);\n            local_6c = *(byte *)((int)param_5 + 0xf);\n          }\n          fVar27 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);\n          fVar13 = DAT_002c5824;\n          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }\n          if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);\n          }\n          local_5c = (double *)((int)local_5c + 1);\n          param_5 = (float *)((int)param_5 + uVar22 + 0x10);\n          param_6 = param_6 + iVar33 * 8;\n        }" ({ "{") (expression_statement "local_64 = *param_5;" (assignment_expression "local_64 = *param_5" (identifier "local_64") (= "=") (pointer_expression "*param_5" (* "*") (identifier "param_5"))) (; ";")) (if_statement "if (uVar26 != 1) {\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3));\n          }" (if "if") (parenthesized_expression "(uVar26 != 1)" (( "(") (binary_expression "uVar26 != 1" (identifier "uVar26") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3));\n          }" ({ "{") (expression_statement "local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3));" (assignment_expression "local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3))" (identifier "local_64") (= "=") (cast_expression "(float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3))" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (call_expression "CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3))" (identifier "CONCAT31") (argument_list "(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2)),\n                                       *(byte *)((int)param_5 + 3))" (( "(") (call_expression "CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2))" (identifier "CONCAT21") (argument_list "((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1),\n                                                *(byte *)((int)param_5 + 2))" (( "(") (binary_expression "(ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |\n                                                (ushort)*(byte *)((int)param_5 + 1)" (call_expression "(ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "(((uint)*(byte *)param_5 << 0x18) >> 0x10)" (( "(") (binary_expression "((uint)*(byte *)param_5 << 0x18) >> 0x10" (parenthesized_expression "((uint)*(byte *)param_5 << 0x18)" (( "(") (binary_expression "(uint)*(byte *)param_5 << 0x18" (binary_expression "(uint)*(byte *)param_5" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)param_5" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_5"))) (<< "<<") (number_literal "0x18")) () ")")) (>> ">>") (number_literal "0x10")) () ")"))) (| "|") (binary_expression "(ushort)*(byte *)((int)param_5 + 1)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (* "*") (cast_expression "(byte *)((int)param_5 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_5 + 1)" (( "(") (binary_expression "(int)param_5 + 1" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (+ "+") (number_literal "1")) () ")"))))) (, ",") (pointer_expression "*(byte *)((int)param_5 + 2)" (* "*") (cast_expression "(byte *)((int)param_5 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_5 + 2)" (( "(") (binary_expression "(int)param_5 + 2" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (+ "+") (number_literal "2")) () ")")))) () ")"))) (, ",") (pointer_expression "*(byte *)((int)param_5 + 3)" (* "*") (cast_expression "(byte *)((int)param_5 + 3)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_5 + 3)" (( "(") (binary_expression "(int)param_5 + 3" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (+ "+") (number_literal "3")) () ")")))) () ")"))))) (; ";")) (} "}"))) (expression_statement "fVar13 = (local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);" (assignment_expression "fVar13 = (local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7)" (identifier "fVar13") (= "=") (binary_expression "(local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7)" (parenthesized_expression "(local_64 - (float)*(double *)(param_2 + 3))" (( "(") (binary_expression "local_64 - (float)*(double *)(param_2 + 3)" (identifier "local_64") (- "-") (cast_expression "(float)*(double *)(param_2 + 3)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (pointer_expression "*(double *)(param_2 + 3)" (* "*") (cast_expression "(double *)(param_2 + 3)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 3)" (( "(") (binary_expression "param_2 + 3" (identifier "param_2") (+ "+") (number_literal "3")) () ")")))))) () ")")) (* "*") (cast_expression "(float)*(double *)(param_2 + 7)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (pointer_expression "*(double *)(param_2 + 7)" (* "*") (cast_expression "(double *)(param_2 + 7)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 7)" (( "(") (binary_expression "param_2 + 7" (identifier "param_2") (+ "+") (number_literal "7")) () ")"))))))) (; ";")) (expression_statement "fVar27 = fVar10;" (assignment_expression "fVar27 = fVar10" (identifier "fVar27") (= "=") (identifier "fVar10")) (; ";")) (if_statement "if ((fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)) {\n            fVar27 = fVar13;\n          }" (if "if") (parenthesized_expression "((fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828))" (( "(") (binary_expression "(fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)" (parenthesized_expression "(fVar10 <= fVar13)" (( "(") (binary_expression "fVar10 <= fVar13" (identifier "fVar10") (<= "<=") (identifier "fVar13")) () ")")) (&& "&&") (parenthesized_expression "(fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)" (( "(") (comma_expression "fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828" (assignment_expression "fVar27 = DAT_002c5828" (identifier "fVar27") (= "=") (identifier "DAT_002c5828")) (, ",") (binary_expression "fVar13 <= DAT_002c5828" (identifier "fVar13") (<= "<=") (identifier "DAT_002c5828"))) () ")"))) () ")")) (compound_statement "{\n            fVar27 = fVar13;\n          }" ({ "{") (expression_statement "fVar27 = fVar13;" (assignment_expression "fVar27 = fVar13" (identifier "fVar27") (= "=") (identifier "fVar13")) (; ";")) (} "}"))) (expression_statement "*(double *)(param_6 + *(int *)(iVar20 + 8) * 8) = (double)fVar27;" (assignment_expression "*(double *)(param_6 + *(int *)(iVar20 + 8) * 8) = (double)fVar27" (pointer_expression "*(double *)(param_6 + *(int *)(iVar20 + 8) * 8)" (* "*") (cast_expression "(double *)(param_6 + *(int *)(iVar20 + 8) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + *(int *)(iVar20 + 8) * 8)" (( "(") (binary_expression "param_6 + *(int *)(iVar20 + 8) * 8" (identifier "param_6") (+ "+") (binary_expression "*(int *)(iVar20 + 8) * 8" (pointer_expression "*(int *)(iVar20 + 8)" (* "*") (cast_expression "(int *)(iVar20 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + 8)" (( "(") (binary_expression "iVar20 + 8" (identifier "iVar20") (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "8"))) () ")")))) (= "=") (cast_expression "(double)fVar27" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "fVar27"))) (; ";")) (if_statement "if (uVar26 == 1) {\n            fVar27 = param_5[1];\n          }\n          else {\n            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));\n          }" (if "if") (parenthesized_expression "(uVar26 == 1)" (( "(") (binary_expression "uVar26 == 1" (identifier "uVar26") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n            fVar27 = param_5[1];\n          }" ({ "{") (expression_statement "fVar27 = param_5[1];" (assignment_expression "fVar27 = param_5[1]" (identifier "fVar27") (= "=") (subscript_expression "param_5[1]" (identifier "param_5") ([ "[") (number_literal "1") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));\n          }" (else "else") (compound_statement "{\n            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));\n          }" ({ "{") (expression_statement "fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7));" (assignment_expression "fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7))" (identifier "fVar27") (= "=") (cast_expression "(float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7))" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (call_expression "CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7))" (identifier "CONCAT31") (argument_list "(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6)),\n                                     *(byte *)((int)param_5 + 7))" (( "(") (call_expression "CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6))" (identifier "CONCAT21") (argument_list "((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),\n                                              *(byte *)((int)param_5 + 6))" (( "(") (binary_expression "(ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5)" (call_expression "(ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "(((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10)" (( "(") (binary_expression "((uint)*(byte *)(param_5 + 1) << 0x18) >>\n                                                      0x10" (parenthesized_expression "((uint)*(byte *)(param_5 + 1) << 0x18)" (( "(") (binary_expression "(uint)*(byte *)(param_5 + 1) << 0x18" (binary_expression "(uint)*(byte *)(param_5 + 1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(param_5 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 1)" (( "(") (binary_expression "param_5 + 1" (identifier "param_5") (+ "+") (number_literal "1")) () ")")))) (<< "<<") (number_literal "0x18")) () ")")) (>> ">>") (number_literal "0x10")) () ")"))) (| "|") (binary_expression "(ushort)*(byte *)((int)param_5 + 5)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (* "*") (cast_expression "(byte *)((int)param_5 + 5)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_5 + 5)" (( "(") (binary_expression "(int)param_5 + 5" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (+ "+") (number_literal "5")) () ")"))))) (, ",") (pointer_expression "*(byte *)((int)param_5 + 6)" (* "*") (cast_expression "(byte *)((int)param_5 + 6)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_5 + 6)" (( "(") (binary_expression "(int)param_5 + 6" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (+ "+") (number_literal "6")) () ")")))) () ")"))) (, ",") (pointer_expression "*(byte *)((int)param_5 + 7)" (* "*") (cast_expression "(byte *)((int)param_5 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_5 + 7)" (( "(") (binary_expression "(int)param_5 + 7" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (+ "+") (number_literal "7")) () ")")))) () ")"))))) (; ";")) (} "}")))) (expression_statement "fVar27 = (fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);" (assignment_expression "fVar27 = (fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7)" (identifier "fVar27") (= "=") (binary_expression "(fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7)" (parenthesized_expression "(fVar27 - (float)*(double *)(param_2 + 3))" (( "(") (binary_expression "fVar27 - (float)*(double *)(param_2 + 3)" (identifier "fVar27") (- "-") (cast_expression "(float)*(double *)(param_2 + 3)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (pointer_expression "*(double *)(param_2 + 3)" (* "*") (cast_expression "(double *)(param_2 + 3)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 3)" (( "(") (binary_expression "param_2 + 3" (identifier "param_2") (+ "+") (number_literal "3")) () ")")))))) () ")")) (* "*") (cast_expression "(float)*(double *)(param_2 + 7)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (pointer_expression "*(double *)(param_2 + 7)" (* "*") (cast_expression "(double *)(param_2 + 7)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 7)" (( "(") (binary_expression "param_2 + 7" (identifier "param_2") (+ "+") (number_literal "7")) () ")"))))))) (; ";")) (expression_statement "fVar13 = DAT_002c5824;" (assignment_expression "fVar13 = DAT_002c5824" (identifier "fVar13") (= "=") (identifier "DAT_002c5824")) (; ";")) (if_statement "if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }" (if "if") (parenthesized_expression "((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828))" (( "(") (binary_expression "(DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)" (parenthesized_expression "(DAT_002c5824 <= fVar27)" (( "(") (binary_expression "DAT_002c5824 <= fVar27" (identifier "DAT_002c5824") (<= "<=") (identifier "fVar27")) () ")")) (&& "&&") (parenthesized_expression "(fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)" (( "(") (comma_expression "fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828" (assignment_expression "fVar13 = DAT_002c5828" (identifier "fVar13") (= "=") (identifier "DAT_002c5828")) (, ",") (binary_expression "fVar27 <= DAT_002c5828" (identifier "fVar27") (<= "<=") (identifier "DAT_002c5828"))) () ")"))) () ")")) (compound_statement "{\n            fVar13 = fVar27;\n          }" ({ "{") (expression_statement "fVar13 = fVar27;" (assignment_expression "fVar13 = fVar27" (identifier "fVar13") (= "=") (identifier "fVar27")) (; ";")) (} "}"))) (expression_statement "*(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8) = (double)fVar13;" (assignment_expression "*(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8) = (double)fVar13" (pointer_expression "*(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8)" (* "*") (cast_expression "(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + *(int *)(iVar20 + 0x14) * 8)" (( "(") (binary_expression "param_6 + *(int *)(iVar20 + 0x14) * 8" (identifier "param_6") (+ "+") (binary_expression "*(int *)(iVar20 + 0x14) * 8" (pointer_expression "*(int *)(iVar20 + 0x14)" (* "*") (cast_expression "(int *)(iVar20 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + 0x14)" (( "(") (binary_expression "iVar20 + 0x14" (identifier "iVar20") (+ "+") (number_literal "0x14")) () ")")))) (* "*") (number_literal "8"))) () ")")))) (= "=") (cast_expression "(double)fVar13" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "fVar13"))) (; ";")) (if_statement "if (uVar26 == 1) {\n            local_60 = param_5[2];\n          }\n          else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));\n          }" (if "if") (parenthesized_expression "(uVar26 == 1)" (( "(") (binary_expression "uVar26 == 1" (identifier "uVar26") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n            local_60 = param_5[2];\n          }" ({ "{") (expression_statement "local_60 = param_5[2];" (assignment_expression "local_60 = param_5[2]" (identifier "local_60") (= "=") (subscript_expression "param_5[2]" (identifier "param_5") ([ "[") (number_literal "2") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));\n          }" (else "else") (compound_statement "{\n            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));\n          }" ({ "{") (expression_statement "local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb));" (assignment_expression "local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb))" (identifier "local_60") (= "=") (cast_expression "(float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb))" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (call_expression "CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb))" (identifier "CONCAT31") (argument_list "(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10)),\n                                       *(byte *)((int)param_5 + 0xb))" (( "(") (call_expression "CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10))" (identifier "CONCAT21") (argument_list "((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),\n                                                *(byte *)((int)param_5 + 10))" (( "(") (binary_expression "(ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9)" (call_expression "(ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "(((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10)" (( "(") (binary_expression "((uint)*(byte *)(param_5 + 2) << 0x18) >>\n                                                        0x10" (parenthesized_expression "((uint)*(byte *)(param_5 + 2) << 0x18)" (( "(") (binary_expression "(uint)*(byte *)(param_5 + 2) << 0x18" (binary_expression "(uint)*(byte *)(param_5 + 2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(param_5 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 2)" (( "(") (binary_expression "param_5 + 2" (identifier "param_5") (+ "+") (number_literal "2")) () ")")))) (<< "<<") (number_literal "0x18")) () ")")) (>> ">>") (number_literal "0x10")) () ")"))) (| "|") (binary_expression "(ushort)*(byte *)((int)param_5 + 9)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (* "*") (cast_expression "(byte *)((int)param_5 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_5 + 9)" (( "(") (binary_expression "(int)param_5 + 9" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (+ "+") (number_literal "9")) () ")"))))) (, ",") (pointer_expression "*(byte *)((int)param_5 + 10)" (* "*") (cast_expression "(byte *)((int)param_5 + 10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_5 + 10)" (( "(") (binary_expression "(int)param_5 + 10" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (+ "+") (number_literal "10")) () ")")))) () ")"))) (, ",") (pointer_expression "*(byte *)((int)param_5 + 0xb)" (* "*") (cast_expression "(byte *)((int)param_5 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_5 + 0xb)" (( "(") (binary_expression "(int)param_5 + 0xb" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (+ "+") (number_literal "0xb")) () ")")))) () ")"))))) (; ";")) (} "}")))) (expression_statement "fVar27 = (local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);" (assignment_expression "fVar27 = (local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7)" (identifier "fVar27") (= "=") (binary_expression "(local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7)" (parenthesized_expression "(local_60 - (float)*(double *)(param_2 + 3))" (( "(") (binary_expression "local_60 - (float)*(double *)(param_2 + 3)" (identifier "local_60") (- "-") (cast_expression "(float)*(double *)(param_2 + 3)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (pointer_expression "*(double *)(param_2 + 3)" (* "*") (cast_expression "(double *)(param_2 + 3)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 3)" (( "(") (binary_expression "param_2 + 3" (identifier "param_2") (+ "+") (number_literal "3")) () ")")))))) () ")")) (* "*") (cast_expression "(float)*(double *)(param_2 + 7)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (pointer_expression "*(double *)(param_2 + 7)" (* "*") (cast_expression "(double *)(param_2 + 7)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 7)" (( "(") (binary_expression "param_2 + 7" (identifier "param_2") (+ "+") (number_literal "7")) () ")"))))))) (; ";")) (expression_statement "fVar13 = DAT_002c5824;" (assignment_expression "fVar13 = DAT_002c5824" (identifier "fVar13") (= "=") (identifier "DAT_002c5824")) (; ";")) (if_statement "if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }" (if "if") (parenthesized_expression "((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828))" (( "(") (binary_expression "(DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)" (parenthesized_expression "(DAT_002c5824 <= fVar27)" (( "(") (binary_expression "DAT_002c5824 <= fVar27" (identifier "DAT_002c5824") (<= "<=") (identifier "fVar27")) () ")")) (&& "&&") (parenthesized_expression "(fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)" (( "(") (comma_expression "fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828" (assignment_expression "fVar13 = DAT_002c5828" (identifier "fVar13") (= "=") (identifier "DAT_002c5828")) (, ",") (binary_expression "fVar27 <= DAT_002c5828" (identifier "fVar27") (<= "<=") (identifier "DAT_002c5828"))) () ")"))) () ")")) (compound_statement "{\n            fVar13 = fVar27;\n          }" ({ "{") (expression_statement "fVar13 = fVar27;" (assignment_expression "fVar13 = fVar27" (identifier "fVar13") (= "=") (identifier "fVar27")) (; ";")) (} "}"))) (expression_statement "*(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8) = (double)fVar13;" (assignment_expression "*(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8) = (double)fVar13" (pointer_expression "*(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8)" (* "*") (cast_expression "(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + *(int *)(iVar20 + 0x20) * 8)" (( "(") (binary_expression "param_6 + *(int *)(iVar20 + 0x20) * 8" (identifier "param_6") (+ "+") (binary_expression "*(int *)(iVar20 + 0x20) * 8" (pointer_expression "*(int *)(iVar20 + 0x20)" (* "*") (cast_expression "(int *)(iVar20 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + 0x20)" (( "(") (binary_expression "iVar20 + 0x20" (identifier "iVar20") (+ "+") (number_literal "0x20")) () ")")))) (* "*") (number_literal "8"))) () ")")))) (= "=") (cast_expression "(double)fVar13" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "fVar13"))) (; ";")) (if_statement "if (uVar26 == 1) {\n            fVar27 = param_5[3];\n            local_6c = SUB41(fVar27,0);\n            bStack_6b = (byte)((uint)fVar27 >> 8);\n            uStack_6a = (ushort)((uint)fVar27 >> 0x10);\n          }\n          else {\n            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);\n            bStack_6b = *(byte *)((int)param_5 + 0xe);\n            local_6c = *(byte *)((int)param_5 + 0xf);\n          }" (if "if") (parenthesized_expression "(uVar26 == 1)" (( "(") (binary_expression "uVar26 == 1" (identifier "uVar26") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n            fVar27 = param_5[3];\n            local_6c = SUB41(fVar27,0);\n            bStack_6b = (byte)((uint)fVar27 >> 8);\n            uStack_6a = (ushort)((uint)fVar27 >> 0x10);\n          }" ({ "{") (expression_statement "fVar27 = param_5[3];" (assignment_expression "fVar27 = param_5[3]" (identifier "fVar27") (= "=") (subscript_expression "param_5[3]" (identifier "param_5") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "local_6c = SUB41(fVar27,0);" (assignment_expression "local_6c = SUB41(fVar27,0)" (identifier "local_6c") (= "=") (call_expression "SUB41(fVar27,0)" (identifier "SUB41") (argument_list "(fVar27,0)" (( "(") (identifier "fVar27") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "bStack_6b = (byte)((uint)fVar27 >> 8);" (assignment_expression "bStack_6b = (byte)((uint)fVar27 >> 8)" (identifier "bStack_6b") (= "=") (call_expression "(byte)((uint)fVar27 >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uint)fVar27 >> 8)" (( "(") (binary_expression "(uint)fVar27 >> 8" (cast_expression "(uint)fVar27" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar27")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "uStack_6a = (ushort)((uint)fVar27 >> 0x10);" (assignment_expression "uStack_6a = (ushort)((uint)fVar27 >> 0x10)" (identifier "uStack_6a") (= "=") (call_expression "(ushort)((uint)fVar27 >> 0x10)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "((uint)fVar27 >> 0x10)" (( "(") (binary_expression "(uint)fVar27 >> 0x10" (cast_expression "(uint)fVar27" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar27")) (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);\n            bStack_6b = *(byte *)((int)param_5 + 0xe);\n            local_6c = *(byte *)((int)param_5 + 0xf);\n          }" (else "else") (compound_statement "{\n            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);\n            bStack_6b = *(byte *)((int)param_5 + 0xe);\n            local_6c = *(byte *)((int)param_5 + 0xf);\n          }" ({ "{") (expression_statement "uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd);" (assignment_expression "uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd)" (identifier "uStack_6a") (= "=") (binary_expression "(ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |\n                        (ushort)*(byte *)((int)param_5 + 0xd)" (call_expression "(ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10)" (( "(") (binary_expression "((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10" (parenthesized_expression "((uint)*(byte *)(param_5 + 3) << 0x18)" (( "(") (binary_expression "(uint)*(byte *)(param_5 + 3) << 0x18" (binary_expression "(uint)*(byte *)(param_5 + 3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(param_5 + 3)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 3)" (( "(") (binary_expression "param_5 + 3" (identifier "param_5") (+ "+") (number_literal "3")) () ")")))) (<< "<<") (number_literal "0x18")) () ")")) (>> ">>") (number_literal "0x10")) () ")"))) (| "|") (binary_expression "(ushort)*(byte *)((int)param_5 + 0xd)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (* "*") (cast_expression "(byte *)((int)param_5 + 0xd)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_5 + 0xd)" (( "(") (binary_expression "(int)param_5 + 0xd" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (+ "+") (number_literal "0xd")) () ")")))))) (; ";")) (expression_statement "bStack_6b = *(byte *)((int)param_5 + 0xe);" (assignment_expression "bStack_6b = *(byte *)((int)param_5 + 0xe)" (identifier "bStack_6b") (= "=") (pointer_expression "*(byte *)((int)param_5 + 0xe)" (* "*") (cast_expression "(byte *)((int)param_5 + 0xe)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_5 + 0xe)" (( "(") (binary_expression "(int)param_5 + 0xe" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (+ "+") (number_literal "0xe")) () ")"))))) (; ";")) (expression_statement "local_6c = *(byte *)((int)param_5 + 0xf);" (assignment_expression "local_6c = *(byte *)((int)param_5 + 0xf)" (identifier "local_6c") (= "=") (pointer_expression "*(byte *)((int)param_5 + 0xf)" (* "*") (cast_expression "(byte *)((int)param_5 + 0xf)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_5 + 0xf)" (( "(") (binary_expression "(int)param_5 + 0xf" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (+ "+") (number_literal "0xf")) () ")"))))) (; ";")) (} "}")))) (expression_statement "fVar27 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);" (assignment_expression "fVar27 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7)" (identifier "fVar27") (= "=") (binary_expression "((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7)" (parenthesized_expression "((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3))" (( "(") (binary_expression "(float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -\n                   (float)*(double *)(param_2 + 3)" (cast_expression "(float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (call_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" (identifier "CONCAT22") (argument_list "(uStack_6a,CONCAT11(bStack_6b,local_6c))" (( "(") (identifier "uStack_6a") (, ",") (call_expression "CONCAT11(bStack_6b,local_6c)" (identifier "CONCAT11") (argument_list "(bStack_6b,local_6c)" (( "(") (identifier "bStack_6b") (, ",") (identifier "local_6c") () ")"))) () ")")))) (- "-") (cast_expression "(float)*(double *)(param_2 + 3)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (pointer_expression "*(double *)(param_2 + 3)" (* "*") (cast_expression "(double *)(param_2 + 3)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 3)" (( "(") (binary_expression "param_2 + 3" (identifier "param_2") (+ "+") (number_literal "3")) () ")")))))) () ")")) (* "*") (cast_expression "(float)*(double *)(param_2 + 7)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (pointer_expression "*(double *)(param_2 + 7)" (* "*") (cast_expression "(double *)(param_2 + 7)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 7)" (( "(") (binary_expression "param_2 + 7" (identifier "param_2") (+ "+") (number_literal "7")) () ")"))))))) (; ";")) (expression_statement "fVar13 = DAT_002c5824;" (assignment_expression "fVar13 = DAT_002c5824" (identifier "fVar13") (= "=") (identifier "DAT_002c5824")) (; ";")) (if_statement "if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {\n            fVar13 = fVar27;\n          }" (if "if") (parenthesized_expression "((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828))" (( "(") (binary_expression "(DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)" (parenthesized_expression "(DAT_002c5824 <= fVar27)" (( "(") (binary_expression "DAT_002c5824 <= fVar27" (identifier "DAT_002c5824") (<= "<=") (identifier "fVar27")) () ")")) (&& "&&") (parenthesized_expression "(fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)" (( "(") (comma_expression "fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828" (assignment_expression "fVar13 = DAT_002c5828" (identifier "fVar13") (= "=") (identifier "DAT_002c5828")) (, ",") (binary_expression "fVar27 <= DAT_002c5828" (identifier "fVar27") (<= "<=") (identifier "DAT_002c5828"))) () ")"))) () ")")) (compound_statement "{\n            fVar13 = fVar27;\n          }" ({ "{") (expression_statement "fVar13 = fVar27;" (assignment_expression "fVar13 = fVar27" (identifier "fVar13") (= "=") (identifier "fVar27")) (; ";")) (} "}"))) (if_statement "if (*(int *)(iVar20 + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);\n          }" (if "if") (parenthesized_expression "(*(int *)(iVar20 + 0x34) != 0)" (( "(") (binary_expression "*(int *)(iVar20 + 0x34) != 0" (pointer_expression "*(int *)(iVar20 + 0x34)" (* "*") (cast_expression "(int *)(iVar20 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + 0x34)" (( "(") (binary_expression "iVar20 + 0x34" (identifier "iVar20") (+ "+") (number_literal "0x34")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);\n          }" ({ "{") (expression_statement "*(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);" (assignment_expression "*(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13)" (pointer_expression "*(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8)" (* "*") (cast_expression "(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + *(int *)(iVar20 + 0x38) * 8)" (( "(") (binary_expression "param_6 + *(int *)(iVar20 + 0x38) * 8" (identifier "param_6") (+ "+") (binary_expression "*(int *)(iVar20 + 0x38) * 8" (pointer_expression "*(int *)(iVar20 + 0x38)" (* "*") (cast_expression "(int *)(iVar20 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + 0x38)" (( "(") (binary_expression "iVar20 + 0x38" (identifier "iVar20") (+ "+") (number_literal "0x38")) () ")")))) (* "*") (number_literal "8"))) () ")")))) (= "=") (cast_expression "(double)(DAT_0029f710 - fVar13)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "(DAT_0029f710 - fVar13)" (( "(") (binary_expression "DAT_0029f710 - fVar13" (identifier "DAT_0029f710") (- "-") (identifier "fVar13")) () ")")))) (; ";")) (} "}"))) (expression_statement "local_5c = (double *)((int)local_5c + 1);" (assignment_expression "local_5c = (double *)((int)local_5c + 1)" (identifier "local_5c") (= "=") (cast_expression "(double *)((int)local_5c + 1)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_5c + 1)" (( "(") (binary_expression "(int)local_5c + 1" (cast_expression "(int)local_5c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_5c")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "param_5 = (float *)((int)param_5 + uVar22 + 0x10);" (assignment_expression "param_5 = (float *)((int)param_5 + uVar22 + 0x10)" (identifier "param_5") (= "=") (cast_expression "(float *)((int)param_5 + uVar22 + 0x10)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_5 + uVar22 + 0x10)" (( "(") (binary_expression "(int)param_5 + uVar22 + 0x10" (binary_expression "(int)param_5 + uVar22" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (+ "+") (identifier "uVar22")) (+ "+") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "param_6 = param_6 + iVar33 * 8;" (assignment_expression "param_6 = param_6 + iVar33 * 8" (identifier "param_6") (= "=") (binary_expression "param_6 + iVar33 * 8" (identifier "param_6") (+ "+") (binary_expression "iVar33 * 8" (identifier "iVar33") (* "*") (number_literal "8")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_5c != (double *)param_3)" (( "(") (binary_expression "local_5c != (double *)param_3" (identifier "local_5c") (!= "!=") (cast_expression "(double *)param_3" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_3"))) () ")")) (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";")) (} "}"))) (labeled_statement "code_r0x001616dd:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        fVar17 = DAT_002a7fec;\n        fVar27 = param_5[3];\n        fVar9 = param_5[1];\n        pdVar21 = (double *)(iVar6 * 8 + param_6);\n        fVar10 = param_5[2];\n        pdVar30 = (double *)(iVar24 * 8 + param_6);\n        fVar11 = *param_5;\n        pdVar28 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec);\n          *pdVar21 = (double)((float)(uint)fVar9 / fVar17);\n          *pdVar28 = (double)((float)(uint)fVar10 / fVar17);\n        }\n        else {\n          uVar3 = (ushort)((uint)fVar11 >> 8);\n          uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);\n          fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          *pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13);\n          *pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);\n          *pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 0x10);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }" (statement_identifier "code_r0x001616dd") (: ":") (if_statement "if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        fVar17 = DAT_002a7fec;\n        fVar27 = param_5[3];\n        fVar9 = param_5[1];\n        pdVar21 = (double *)(iVar6 * 8 + param_6);\n        fVar10 = param_5[2];\n        pdVar30 = (double *)(iVar24 * 8 + param_6);\n        fVar11 = *param_5;\n        pdVar28 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec);\n          *pdVar21 = (double)((float)(uint)fVar9 / fVar17);\n          *pdVar28 = (double)((float)(uint)fVar10 / fVar17);\n        }\n        else {\n          uVar3 = (ushort)((uint)fVar11 >> 8);\n          uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);\n          fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          *pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13);\n          *pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);\n          *pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 0x10);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }" (if "if") (parenthesized_expression "(0 < param_3)" (( "(") (binary_expression "0 < param_3" (number_literal "0") (< "<") (identifier "param_3")) () ")")) (compound_statement "{\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      uVar22 = param_2[0x10];\n      uVar26 = param_2[9];\n      iVar33 = *(int *)(param_1 + 0x298);\n      iVar24 = *(int *)(iVar20 + 8);\n      iVar6 = *(int *)(iVar20 + 0x14);\n      iVar7 = *(int *)(iVar20 + 0x20);\n      iVar8 = *(int *)(iVar20 + 0x34);\n      iVar32 = 0;\n      do {\n        fVar17 = DAT_002a7fec;\n        fVar27 = param_5[3];\n        fVar9 = param_5[1];\n        pdVar21 = (double *)(iVar6 * 8 + param_6);\n        fVar10 = param_5[2];\n        pdVar30 = (double *)(iVar24 * 8 + param_6);\n        fVar11 = *param_5;\n        pdVar28 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec);\n          *pdVar21 = (double)((float)(uint)fVar9 / fVar17);\n          *pdVar28 = (double)((float)(uint)fVar10 / fVar17);\n        }\n        else {\n          uVar3 = (ushort)((uint)fVar11 >> 8);\n          uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);\n          fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          *pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13);\n          *pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);\n          *pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 0x10);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);\n    }" ({ "{") (expression_statement "iVar20 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar20 = *(int *)(param_1 + 0x2a8)" (identifier "iVar20") (= "=") (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")"))))) (; ";")) (expression_statement "uVar22 = param_2[0x10];" (assignment_expression "uVar22 = param_2[0x10]" (identifier "uVar22") (= "=") (subscript_expression "param_2[0x10]" (identifier "param_2") ([ "[") (number_literal "0x10") (] "]"))) (; ";")) (expression_statement "uVar26 = param_2[9];" (assignment_expression "uVar26 = param_2[9]" (identifier "uVar26") (= "=") (subscript_expression "param_2[9]" (identifier "param_2") ([ "[") (number_literal "9") (] "]"))) (; ";")) (expression_statement "iVar33 = *(int *)(param_1 + 0x298);" (assignment_expression "iVar33 = *(int *)(param_1 + 0x298)" (identifier "iVar33") (= "=") (pointer_expression "*(int *)(param_1 + 0x298)" (* "*") (cast_expression "(int *)(param_1 + 0x298)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x298)" (( "(") (binary_expression "param_1 + 0x298" (identifier "param_1") (+ "+") (number_literal "0x298")) () ")"))))) (; ";")) (expression_statement "iVar24 = *(int *)(iVar20 + 8);" (assignment_expression "iVar24 = *(int *)(iVar20 + 8)" (identifier "iVar24") (= "=") (pointer_expression "*(int *)(iVar20 + 8)" (* "*") (cast_expression "(int *)(iVar20 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + 8)" (( "(") (binary_expression "iVar20 + 8" (identifier "iVar20") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "iVar6 = *(int *)(iVar20 + 0x14);" (assignment_expression "iVar6 = *(int *)(iVar20 + 0x14)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(iVar20 + 0x14)" (* "*") (cast_expression "(int *)(iVar20 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + 0x14)" (( "(") (binary_expression "iVar20 + 0x14" (identifier "iVar20") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "iVar7 = *(int *)(iVar20 + 0x20);" (assignment_expression "iVar7 = *(int *)(iVar20 + 0x20)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(iVar20 + 0x20)" (* "*") (cast_expression "(int *)(iVar20 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + 0x20)" (( "(") (binary_expression "iVar20 + 0x20" (identifier "iVar20") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "iVar8 = *(int *)(iVar20 + 0x34);" (assignment_expression "iVar8 = *(int *)(iVar20 + 0x34)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(iVar20 + 0x34)" (* "*") (cast_expression "(int *)(iVar20 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + 0x34)" (( "(") (binary_expression "iVar20 + 0x34" (identifier "iVar20") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (expression_statement "iVar32 = 0;" (assignment_expression "iVar32 = 0" (identifier "iVar32") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        fVar17 = DAT_002a7fec;\n        fVar27 = param_5[3];\n        fVar9 = param_5[1];\n        pdVar21 = (double *)(iVar6 * 8 + param_6);\n        fVar10 = param_5[2];\n        pdVar30 = (double *)(iVar24 * 8 + param_6);\n        fVar11 = *param_5;\n        pdVar28 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec);\n          *pdVar21 = (double)((float)(uint)fVar9 / fVar17);\n          *pdVar28 = (double)((float)(uint)fVar10 / fVar17);\n        }\n        else {\n          uVar3 = (ushort)((uint)fVar11 >> 8);\n          uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);\n          fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          *pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13);\n          *pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);\n          *pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 0x10);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      } while (iVar32 != param_3);" (do "do") (compound_statement "{\n        fVar17 = DAT_002a7fec;\n        fVar27 = param_5[3];\n        fVar9 = param_5[1];\n        pdVar21 = (double *)(iVar6 * 8 + param_6);\n        fVar10 = param_5[2];\n        pdVar30 = (double *)(iVar24 * 8 + param_6);\n        fVar11 = *param_5;\n        pdVar28 = (double *)(iVar7 * 8 + param_6);\n        if (uVar22 == 1) {\n          *pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec);\n          *pdVar21 = (double)((float)(uint)fVar9 / fVar17);\n          *pdVar28 = (double)((float)(uint)fVar10 / fVar17);\n        }\n        else {\n          uVar3 = (ushort)((uint)fVar11 >> 8);\n          uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);\n          fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          *pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13);\n          *pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);\n          *pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);\n        }\n        if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec);\n        }\n        param_5 = (float *)((int)param_5 + uVar26 + 0x10);\n        iVar32 = iVar32 + 1;\n        param_6 = param_6 + iVar33 * 8;\n      }" ({ "{") (expression_statement "fVar17 = DAT_002a7fec;" (assignment_expression "fVar17 = DAT_002a7fec" (identifier "fVar17") (= "=") (identifier "DAT_002a7fec")) (; ";")) (expression_statement "fVar27 = param_5[3];" (assignment_expression "fVar27 = param_5[3]" (identifier "fVar27") (= "=") (subscript_expression "param_5[3]" (identifier "param_5") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "fVar9 = param_5[1];" (assignment_expression "fVar9 = param_5[1]" (identifier "fVar9") (= "=") (subscript_expression "param_5[1]" (identifier "param_5") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "pdVar21 = (double *)(iVar6 * 8 + param_6);" (assignment_expression "pdVar21 = (double *)(iVar6 * 8 + param_6)" (identifier "pdVar21") (= "=") (cast_expression "(double *)(iVar6 * 8 + param_6)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 * 8 + param_6)" (( "(") (binary_expression "iVar6 * 8 + param_6" (binary_expression "iVar6 * 8" (identifier "iVar6") (* "*") (number_literal "8")) (+ "+") (identifier "param_6")) () ")")))) (; ";")) (expression_statement "fVar10 = param_5[2];" (assignment_expression "fVar10 = param_5[2]" (identifier "fVar10") (= "=") (subscript_expression "param_5[2]" (identifier "param_5") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "pdVar30 = (double *)(iVar24 * 8 + param_6);" (assignment_expression "pdVar30 = (double *)(iVar24 * 8 + param_6)" (identifier "pdVar30") (= "=") (cast_expression "(double *)(iVar24 * 8 + param_6)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar24 * 8 + param_6)" (( "(") (binary_expression "iVar24 * 8 + param_6" (binary_expression "iVar24 * 8" (identifier "iVar24") (* "*") (number_literal "8")) (+ "+") (identifier "param_6")) () ")")))) (; ";")) (expression_statement "fVar11 = *param_5;" (assignment_expression "fVar11 = *param_5" (identifier "fVar11") (= "=") (pointer_expression "*param_5" (* "*") (identifier "param_5"))) (; ";")) (expression_statement "pdVar28 = (double *)(iVar7 * 8 + param_6);" (assignment_expression "pdVar28 = (double *)(iVar7 * 8 + param_6)" (identifier "pdVar28") (= "=") (cast_expression "(double *)(iVar7 * 8 + param_6)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 * 8 + param_6)" (( "(") (binary_expression "iVar7 * 8 + param_6" (binary_expression "iVar7 * 8" (identifier "iVar7") (* "*") (number_literal "8")) (+ "+") (identifier "param_6")) () ")")))) (; ";")) (if_statement "if (uVar22 == 1) {\n          *pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec);\n          *pdVar21 = (double)((float)(uint)fVar9 / fVar17);\n          *pdVar28 = (double)((float)(uint)fVar10 / fVar17);\n        }\n        else {\n          uVar3 = (ushort)((uint)fVar11 >> 8);\n          uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);\n          fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          *pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13);\n          *pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);\n          *pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);\n        }" (if "if") (parenthesized_expression "(uVar22 == 1)" (( "(") (binary_expression "uVar22 == 1" (identifier "uVar22") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n          *pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec);\n          *pdVar21 = (double)((float)(uint)fVar9 / fVar17);\n          *pdVar28 = (double)((float)(uint)fVar10 / fVar17);\n        }" ({ "{") (expression_statement "*pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec);" (assignment_expression "*pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec)" (pointer_expression "*pdVar30" (* "*") (identifier "pdVar30")) (= "=") (cast_expression "(double)((float)(uint)fVar11 / DAT_002a7fec)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "((float)(uint)fVar11 / DAT_002a7fec)" (( "(") (binary_expression "(float)(uint)fVar11 / DAT_002a7fec" (cast_expression "(float)(uint)fVar11" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (cast_expression "(uint)fVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar11"))) (/ "/") (identifier "DAT_002a7fec")) () ")")))) (; ";")) (expression_statement "*pdVar21 = (double)((float)(uint)fVar9 / fVar17);" (assignment_expression "*pdVar21 = (double)((float)(uint)fVar9 / fVar17)" (pointer_expression "*pdVar21" (* "*") (identifier "pdVar21")) (= "=") (cast_expression "(double)((float)(uint)fVar9 / fVar17)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "((float)(uint)fVar9 / fVar17)" (( "(") (binary_expression "(float)(uint)fVar9 / fVar17" (cast_expression "(float)(uint)fVar9" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (cast_expression "(uint)fVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar9"))) (/ "/") (identifier "fVar17")) () ")")))) (; ";")) (expression_statement "*pdVar28 = (double)((float)(uint)fVar10 / fVar17);" (assignment_expression "*pdVar28 = (double)((float)(uint)fVar10 / fVar17)" (pointer_expression "*pdVar28" (* "*") (identifier "pdVar28")) (= "=") (cast_expression "(double)((float)(uint)fVar10 / fVar17)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "((float)(uint)fVar10 / fVar17)" (( "(") (binary_expression "(float)(uint)fVar10 / fVar17" (cast_expression "(float)(uint)fVar10" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (cast_expression "(uint)fVar10" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar10"))) (/ "/") (identifier "fVar17")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n          uVar3 = (ushort)((uint)fVar11 >> 8);\n          uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);\n          fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          *pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13);\n          *pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);\n          *pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);\n        }" (else "else") (compound_statement "{\n          uVar3 = (ushort)((uint)fVar11 >> 8);\n          uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);\n          fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);\n          *pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13);\n          *pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);\n          *pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);\n        }" ({ "{") (expression_statement "uVar3 = (ushort)((uint)fVar11 >> 8);" (assignment_expression "uVar3 = (ushort)((uint)fVar11 >> 8)" (identifier "uVar3") (= "=") (call_expression "(ushort)((uint)fVar11 >> 8)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "((uint)fVar11 >> 8)" (( "(") (binary_expression "(uint)fVar11 >> 8" (cast_expression "(uint)fVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar11")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);" (assignment_expression "uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10)" (identifier "uStack_6a") (= "=") (binary_expression "uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10)" (binary_expression "uVar3 & 0xff" (identifier "uVar3") (& "&") (number_literal "0xff")) (| "|") (call_expression "(ushort)((uint)((int)fVar11 << 0x18) >> 0x10)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "((uint)((int)fVar11 << 0x18) >> 0x10)" (( "(") (binary_expression "(uint)((int)fVar11 << 0x18) >> 0x10" (call_expression "(uint)((int)fVar11 << 0x18)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)fVar11 << 0x18)" (( "(") (binary_expression "(int)fVar11 << 0x18" (cast_expression "(int)fVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "fVar11")) (<< "<<") (number_literal "0x18")) () ")"))) (>> ">>") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);" (assignment_expression "fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18)" (identifier "fVar27") (= "=") (cast_expression "(float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18)" (( "(") (binary_expression "(uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18" (binary_expression "(uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |\n                           ((uint)fVar27 & 0xff00) << 8" (binary_expression "(uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8" (binary_expression "(uint)fVar27 >> 0x18" (cast_expression "(uint)fVar27" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar27")) (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "((uint)fVar27 & 0xff0000) >> 8" (parenthesized_expression "((uint)fVar27 & 0xff0000)" (( "(") (binary_expression "(uint)fVar27 & 0xff0000" (cast_expression "(uint)fVar27" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar27")) (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "((uint)fVar27 & 0xff00) << 8" (parenthesized_expression "((uint)fVar27 & 0xff00)" (( "(") (binary_expression "(uint)fVar27 & 0xff00" (cast_expression "(uint)fVar27" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar27")) (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "(int)fVar27 << 0x18" (cast_expression "(int)fVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "fVar27")) (<< "<<") (number_literal "0x18"))) () ")")))) (; ";")) (expression_statement "*pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13);" (assignment_expression "*pdVar30 = (double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13)" (pointer_expression "*pdVar30" (* "*") (identifier "pdVar30")) (= "=") (cast_expression "(double)((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "((float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13)" (( "(") (binary_expression "(float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)\n                             / fVar13" (cast_expression "(float)CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (call_expression "CONCAT22(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)" (identifier "CONCAT22") (argument_list "(uStack_6a,\n                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)" (( "(") (identifier "uStack_6a") (, ",") (binary_expression "(ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00" (call_expression "(ushort)(byte)((uint)fVar11 >> 0x18)" (call_expression "(ushort)(byte)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "(byte)" (( "(") (identifier "byte") () ")"))) (argument_list "((uint)fVar11 >> 0x18)" (( "(") (binary_expression "(uint)fVar11 >> 0x18" (cast_expression "(uint)fVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar11")) (>> ">>") (number_literal "0x18")) () ")"))) (| "|") (binary_expression "uVar3 & 0xff00" (identifier "uVar3") (& "&") (number_literal "0xff00"))) () ")")))) (/ "/") (identifier "fVar13")) () ")")))) (; ";")) (expression_statement "*pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);" (assignment_expression "*pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13)" (pointer_expression "*pdVar21" (* "*") (identifier "pdVar21")) (= "=") (cast_expression "(double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13)" (( "(") (binary_expression "(float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13" (cast_expression "(float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18)" (( "(") (binary_expression "(uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18" (binary_expression "(uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |\n                                      ((uint)fVar9 & 0xff00) << 8" (binary_expression "(uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8" (binary_expression "(uint)fVar9 >> 0x18" (cast_expression "(uint)fVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar9")) (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "((uint)fVar9 & 0xff0000) >> 8" (parenthesized_expression "((uint)fVar9 & 0xff0000)" (( "(") (binary_expression "(uint)fVar9 & 0xff0000" (cast_expression "(uint)fVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar9")) (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "((uint)fVar9 & 0xff00) << 8" (parenthesized_expression "((uint)fVar9 & 0xff00)" (( "(") (binary_expression "(uint)fVar9 & 0xff00" (cast_expression "(uint)fVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar9")) (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "(int)fVar9 << 0x18" (cast_expression "(int)fVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "fVar9")) (<< "<<") (number_literal "0x18"))) () ")"))) (/ "/") (identifier "fVar13")) () ")")))) (; ";")) (expression_statement "*pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);" (assignment_expression "*pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13)" (pointer_expression "*pdVar28" (* "*") (identifier "pdVar28")) (= "=") (cast_expression "(double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13)" (( "(") (binary_expression "(float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13" (cast_expression "(float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18)" (( "(") (binary_expression "(uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18" (binary_expression "(uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |\n                                      ((uint)fVar10 & 0xff00) << 8" (binary_expression "(uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8" (binary_expression "(uint)fVar10 >> 0x18" (cast_expression "(uint)fVar10" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar10")) (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "((uint)fVar10 & 0xff0000) >> 8" (parenthesized_expression "((uint)fVar10 & 0xff0000)" (( "(") (binary_expression "(uint)fVar10 & 0xff0000" (cast_expression "(uint)fVar10" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar10")) (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "((uint)fVar10 & 0xff00) << 8" (parenthesized_expression "((uint)fVar10 & 0xff00)" (( "(") (binary_expression "(uint)fVar10 & 0xff00" (cast_expression "(uint)fVar10" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar10")) (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "(int)fVar10 << 0x18" (cast_expression "(int)fVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "fVar10")) (<< "<<") (number_literal "0x18"))) () ")"))) (/ "/") (identifier "fVar13")) () ")")))) (; ";")) (} "}")))) (if_statement "if (iVar8 != 0) {\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec);\n        }" (if "if") (parenthesized_expression "(iVar8 != 0)" (( "(") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec);\n        }" ({ "{") (expression_statement "*(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec);" (assignment_expression "*(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =\n               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec)" (pointer_expression "*(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8)" (* "*") (cast_expression "(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + *(int *)(iVar20 + 0x38) * 8)" (( "(") (binary_expression "param_6 + *(int *)(iVar20 + 0x38) * 8" (identifier "param_6") (+ "+") (binary_expression "*(int *)(iVar20 + 0x38) * 8" (pointer_expression "*(int *)(iVar20 + 0x38)" (* "*") (cast_expression "(int *)(iVar20 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + 0x38)" (( "(") (binary_expression "iVar20 + 0x38" (identifier "iVar20") (+ "+") (number_literal "0x38")) () ")")))) (* "*") (number_literal "8"))) () ")")))) (= "=") (cast_expression "(double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec)" (( "(") (binary_expression "DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec" (identifier "DAT_0029f710") (- "-") (binary_expression "(float)(uint)fVar27 / DAT_002a7fec" (cast_expression "(float)(uint)fVar27" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (cast_expression "(uint)fVar27" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar27"))) (/ "/") (identifier "DAT_002a7fec"))) () ")")))) (; ";")) (} "}"))) (expression_statement "param_5 = (float *)((int)param_5 + uVar26 + 0x10);" (assignment_expression "param_5 = (float *)((int)param_5 + uVar26 + 0x10)" (identifier "param_5") (= "=") (cast_expression "(float *)((int)param_5 + uVar26 + 0x10)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_5 + uVar26 + 0x10)" (( "(") (binary_expression "(int)param_5 + uVar26 + 0x10" (binary_expression "(int)param_5 + uVar26" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (+ "+") (identifier "uVar26")) (+ "+") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "iVar32 = iVar32 + 1;" (assignment_expression "iVar32 = iVar32 + 1" (identifier "iVar32") (= "=") (binary_expression "iVar32 + 1" (identifier "iVar32") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_6 = param_6 + iVar33 * 8;" (assignment_expression "param_6 = param_6 + iVar33 * 8" (identifier "param_6") (= "=") (binary_expression "param_6 + iVar33 * 8" (identifier "param_6") (+ "+") (binary_expression "iVar33 * 8" (identifier "iVar33") (* "*") (number_literal "8")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar32 != param_3)" (( "(") (binary_expression "iVar32 != param_3" (identifier "iVar32") (!= "!=") (identifier "param_3")) () ")")) (; ";")) (} "}")))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x40:\n    if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }\nLAB_00161285:\n    uVar26 = 0;\n    if (uVar22 < 0x41) {\n      uVar26 = uVar22;\n    }\n    bVar23 = (byte)(uVar26 - 1);\n    bVar12 = bVar23 & 0x1f;\n    uVar18 = 2 << (bVar23 & 0x1f);\n    uVar19 = uVar18;\n    uVar29 = 0 << bVar12 | 2U >> 0x20 - bVar12;\n    if ((uVar26 - 1 & 0x20) != 0) {\n      uVar19 = 0;\n      uVar29 = uVar18;\n    }\n    iVar20 = uVar19 - 1;\n    local_68 = (uVar29 - 1) + (uint)(uVar19 != 0);\n    local_6c = (byte)iVar20;\n    bStack_6b = (byte)((uint)iVar20 >> 8);\n    uStack_6a = (ushort)((uint)iVar20 >> 0x10);\nLAB_001612bc:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      local_64 = 0.0;\n      iVar33 = *(int *)(iVar20 + 8);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(param_1 + 0x298);\n      do {\n        pdVar28 = (double *)(iVar33 * 8 + local_78);\n        pdVar21 = (double *)(local_78 + iVar24 * 8);\n        if ((int)uVar22 < 1) {\n          fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (local_68 < 0) {\n            fVar27 = fVar27 + DAT_0029f714;\n          }\n          local_3c = (double)fVar27;\n          if (local_3c < dVar16) {\n            *pdVar28 = 0.0;\n          }\n          else {\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }\n          dVar15 = 0.0;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\nLAB_00161a0c:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          *pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710;\n          if (0 < (int)uVar22) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar15 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar15 = 0.0;\nLAB_00161c0a:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar15 = dVar14 * dVar15 * (double)DAT_0029f710;\n        }\n        else {\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {\n            *pdVar28 = (double)DAT_0029f710;\n          }\n          else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }\n          *pdVar21 = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }\n          dVar15 = (double)DAT_0029f710;\n        }\n        if (*(int *)(iVar20 + 0x34) != 0) {\n          *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15;\n        }\n        local_64 = (float)((int)local_64 + 1);\n        local_78 = local_78 + iVar6 * 8;\n      } while (local_64 != (float)param_3);\n    }" (case "case") (number_literal "0x40") (: ":") (if_statement "if (param_2[2] == 1) {\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }" (if "if") (parenthesized_expression "(param_2[2] == 1)" (( "(") (binary_expression "param_2[2] == 1" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n      if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }\n      break;\n    }" ({ "{") (if_statement "if (0 < param_3) {\n        iVar20 = 0;\n        do {\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }" (if "if") (parenthesized_expression "(0 < param_3)" (( "(") (binary_expression "0 < param_3" (number_literal "0") (< "<") (identifier "param_3")) () ")")) (compound_statement "{\n        iVar20 = 0;\n        do {\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);\n      }" ({ "{") (expression_statement "iVar20 = 0;" (assignment_expression "iVar20 = 0" (identifier "iVar20") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        } while (iVar20 != param_3);" (do "do") (compound_statement "{\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) =\n               CONCAT44(uStack_28,fStack_2c);\n          FUN_00159410();\n          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));\n          }\n          iVar20 = iVar20 + 1;\n          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;\n        }" ({ "{") (expression_statement "FUN_00159410();" (call_expression "FUN_00159410()" (identifier "FUN_00159410") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) =\n               CONCAT44(uStack_28,fStack_2c);" (assignment_expression "*(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) =\n               CONCAT44(uStack_28,fStack_2c)" (pointer_expression "*(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" (* "*") (cast_expression "(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" (( "(") (type_descriptor "ulonglong *" (type_identifier "ulonglong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8)" (( "(") (binary_expression "param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" (identifier "param_6") (+ "+") (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 8)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 8)" (( "(") (binary_expression "*(int *)(param_1 + 0x2a8) + 8" (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")")))) (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "8"))) () ")")))) (= "=") (call_expression "CONCAT44(uStack_28,fStack_2c)" (identifier "CONCAT44") (argument_list "(uStack_28,fStack_2c)" (( "(") (identifier "uStack_28") (, ",") (identifier "fStack_2c") () ")")))) (; ";")) (expression_statement "FUN_00159410();" (call_expression "FUN_00159410()" (identifier "FUN_00159410") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) =\n               CONCAT44(uStack_28,fStack_2c);" (assignment_expression "*(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) =\n               CONCAT44(uStack_28,fStack_2c)" (pointer_expression "*(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" (* "*") (cast_expression "(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" (( "(") (type_descriptor "ulonglong *" (type_identifier "ulonglong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8)" (( "(") (binary_expression "param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" (identifier "param_6") (+ "+") (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x14)" (( "(") (binary_expression "*(int *)(param_1 + 0x2a8) + 0x14" (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")")))) (+ "+") (number_literal "0x14")) () ")")))) (* "*") (number_literal "8"))) () ")")))) (= "=") (call_expression "CONCAT44(uStack_28,fStack_2c)" (identifier "CONCAT44") (argument_list "(uStack_28,fStack_2c)" (( "(") (identifier "uStack_28") (, ",") (identifier "fStack_2c") () ")")))) (; ";")) (expression_statement "FUN_00159410();" (call_expression "FUN_00159410()" (identifier "FUN_00159410") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) =\n               CONCAT44(uStack_28,fStack_2c);" (assignment_expression "*(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) =\n               CONCAT44(uStack_28,fStack_2c)" (pointer_expression "*(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" (* "*") (cast_expression "(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" (( "(") (type_descriptor "ulonglong *" (type_identifier "ulonglong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8)" (( "(") (binary_expression "param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" (identifier "param_6") (+ "+") (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x20)" (( "(") (binary_expression "*(int *)(param_1 + 0x2a8) + 0x20" (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")")))) (+ "+") (number_literal "0x20")) () ")")))) (* "*") (number_literal "8"))) () ")")))) (= "=") (call_expression "CONCAT44(uStack_28,fStack_2c)" (identifier "CONCAT44") (argument_list "(uStack_28,fStack_2c)" (( "(") (identifier "uStack_28") (, ",") (identifier "fStack_2c") () ")")))) (; ";")) (expression_statement "FUN_00159410();" (call_expression "FUN_00159410()" (identifier "FUN_00159410") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));\n          }" (if "if") (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0)" (( "(") (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x34)" (( "(") (binary_expression "*(int *)(param_1 + 0x2a8) + 0x34" (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")")))) (+ "+") (number_literal "0x34")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));\n          }" ({ "{") (expression_statement "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));" (assignment_expression "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =\n                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c))" (pointer_expression "*(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" (* "*") (cast_expression "(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8)" (( "(") (binary_expression "param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" (identifier "param_6") (+ "+") (binary_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8" (pointer_expression "*(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x2a8) + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x2a8) + 0x38)" (( "(") (binary_expression "*(int *)(param_1 + 0x2a8) + 0x38" (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")")))) (+ "+") (number_literal "0x38")) () ")")))) (* "*") (number_literal "8"))) () ")")))) (= "=") (cast_expression "(double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c))" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c))" (( "(") (binary_expression "DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c)" (identifier "DAT_0029f710") (- "-") (cast_expression "(float)(double)CONCAT44(uStack_28,fStack_2c)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (cast_expression "(double)CONCAT44(uStack_28,fStack_2c)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (call_expression "CONCAT44(uStack_28,fStack_2c)" (identifier "CONCAT44") (argument_list "(uStack_28,fStack_2c)" (( "(") (identifier "uStack_28") (, ",") (identifier "fStack_2c") () ")")))))) () ")")))) (; ";")) (} "}"))) (expression_statement "iVar20 = iVar20 + 1;" (assignment_expression "iVar20 = iVar20 + 1" (identifier "iVar20") (= "=") (binary_expression "iVar20 + 1" (identifier "iVar20") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;" (assignment_expression "param_6 = param_6 + *(int *)(param_1 + 0x298) * 8" (identifier "param_6") (= "=") (binary_expression "param_6 + *(int *)(param_1 + 0x298) * 8" (identifier "param_6") (+ "+") (binary_expression "*(int *)(param_1 + 0x298) * 8" (pointer_expression "*(int *)(param_1 + 0x298)" (* "*") (cast_expression "(int *)(param_1 + 0x298)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x298)" (( "(") (binary_expression "param_1 + 0x298" (identifier "param_1") (+ "+") (number_literal "0x298")) () ")")))) (* "*") (number_literal "8")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar20 != param_3)" (( "(") (binary_expression "iVar20 != param_3" (identifier "iVar20") (!= "!=") (identifier "param_3")) () ")")) (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";")) (} "}"))) (labeled_statement "LAB_00161285:\n    uVar26 = 0;" (statement_identifier "LAB_00161285") (: ":") (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" (identifier "uVar26") (= "=") (number_literal "0")) (; ";"))) (if_statement "if (uVar22 < 0x41) {\n      uVar26 = uVar22;\n    }" (if "if") (parenthesized_expression "(uVar22 < 0x41)" (( "(") (binary_expression "uVar22 < 0x41" (identifier "uVar22") (< "<") (number_literal "0x41")) () ")")) (compound_statement "{\n      uVar26 = uVar22;\n    }" ({ "{") (expression_statement "uVar26 = uVar22;" (assignment_expression "uVar26 = uVar22" (identifier "uVar26") (= "=") (identifier "uVar22")) (; ";")) (} "}"))) (expression_statement "bVar23 = (byte)(uVar26 - 1);" (assignment_expression "bVar23 = (byte)(uVar26 - 1)" (identifier "bVar23") (= "=") (call_expression "(byte)(uVar26 - 1)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar26 - 1)" (( "(") (binary_expression "uVar26 - 1" (identifier "uVar26") (- "-") (number_literal "1")) () ")")))) (; ";")) (expression_statement "bVar12 = bVar23 & 0x1f;" (assignment_expression "bVar12 = bVar23 & 0x1f" (identifier "bVar12") (= "=") (binary_expression "bVar23 & 0x1f" (identifier "bVar23") (& "&") (number_literal "0x1f"))) (; ";")) (expression_statement "uVar18 = 2 << (bVar23 & 0x1f);" (assignment_expression "uVar18 = 2 << (bVar23 & 0x1f)" (identifier "uVar18") (= "=") (binary_expression "2 << (bVar23 & 0x1f)" (number_literal "2") (<< "<<") (parenthesized_expression "(bVar23 & 0x1f)" (( "(") (binary_expression "bVar23 & 0x1f" (identifier "bVar23") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar19 = uVar18;" (assignment_expression "uVar19 = uVar18" (identifier "uVar19") (= "=") (identifier "uVar18")) (; ";")) (expression_statement "uVar29 = 0 << bVar12 | 2U >> 0x20 - bVar12;" (assignment_expression "uVar29 = 0 << bVar12 | 2U >> 0x20 - bVar12" (identifier "uVar29") (= "=") (binary_expression "0 << bVar12 | 2U >> 0x20 - bVar12" (binary_expression "0 << bVar12" (number_literal "0") (<< "<<") (identifier "bVar12")) (| "|") (binary_expression "2U >> 0x20 - bVar12" (number_literal "2U") (>> ">>") (binary_expression "0x20 - bVar12" (number_literal "0x20") (- "-") (identifier "bVar12"))))) (; ";")) (if_statement "if ((uVar26 - 1 & 0x20) != 0) {\n      uVar19 = 0;\n      uVar29 = uVar18;\n    }" (if "if") (parenthesized_expression "((uVar26 - 1 & 0x20) != 0)" (( "(") (binary_expression "(uVar26 - 1 & 0x20) != 0" (parenthesized_expression "(uVar26 - 1 & 0x20)" (( "(") (binary_expression "uVar26 - 1 & 0x20" (binary_expression "uVar26 - 1" (identifier "uVar26") (- "-") (number_literal "1")) (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar19 = 0;\n      uVar29 = uVar18;\n    }" ({ "{") (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" (identifier "uVar19") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar29 = uVar18;" (assignment_expression "uVar29 = uVar18" (identifier "uVar29") (= "=") (identifier "uVar18")) (; ";")) (} "}"))) (expression_statement "iVar20 = uVar19 - 1;" (assignment_expression "iVar20 = uVar19 - 1" (identifier "iVar20") (= "=") (binary_expression "uVar19 - 1" (identifier "uVar19") (- "-") (number_literal "1"))) (; ";")) (expression_statement "local_68 = (uVar29 - 1) + (uint)(uVar19 != 0);" (assignment_expression "local_68 = (uVar29 - 1) + (uint)(uVar19 != 0)" (identifier "local_68") (= "=") (binary_expression "(uVar29 - 1) + (uint)(uVar19 != 0)" (parenthesized_expression "(uVar29 - 1)" (( "(") (binary_expression "uVar29 - 1" (identifier "uVar29") (- "-") (number_literal "1")) () ")")) (+ "+") (call_expression "(uint)(uVar19 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar19 != 0)" (( "(") (binary_expression "uVar19 != 0" (identifier "uVar19") (!= "!=") (number_literal "0")) () ")"))))) (; ";")) (expression_statement "local_6c = (byte)iVar20;" (assignment_expression "local_6c = (byte)iVar20" (identifier "local_6c") (= "=") (cast_expression "(byte)iVar20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "iVar20"))) (; ";")) (expression_statement "bStack_6b = (byte)((uint)iVar20 >> 8);" (assignment_expression "bStack_6b = (byte)((uint)iVar20 >> 8)" (identifier "bStack_6b") (= "=") (call_expression "(byte)((uint)iVar20 >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uint)iVar20 >> 8)" (( "(") (binary_expression "(uint)iVar20 >> 8" (cast_expression "(uint)iVar20" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "iVar20")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "uStack_6a = (ushort)((uint)iVar20 >> 0x10);" (assignment_expression "uStack_6a = (ushort)((uint)iVar20 >> 0x10)" (identifier "uStack_6a") (= "=") (call_expression "(ushort)((uint)iVar20 >> 0x10)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "((uint)iVar20 >> 0x10)" (( "(") (binary_expression "(uint)iVar20 >> 0x10" (cast_expression "(uint)iVar20" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "iVar20")) (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (labeled_statement "LAB_001612bc:\n    if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      local_64 = 0.0;\n      iVar33 = *(int *)(iVar20 + 8);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(param_1 + 0x298);\n      do {\n        pdVar28 = (double *)(iVar33 * 8 + local_78);\n        pdVar21 = (double *)(local_78 + iVar24 * 8);\n        if ((int)uVar22 < 1) {\n          fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (local_68 < 0) {\n            fVar27 = fVar27 + DAT_0029f714;\n          }\n          local_3c = (double)fVar27;\n          if (local_3c < dVar16) {\n            *pdVar28 = 0.0;\n          }\n          else {\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }\n          dVar15 = 0.0;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\nLAB_00161a0c:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          *pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710;\n          if (0 < (int)uVar22) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar15 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar15 = 0.0;\nLAB_00161c0a:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar15 = dVar14 * dVar15 * (double)DAT_0029f710;\n        }\n        else {\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {\n            *pdVar28 = (double)DAT_0029f710;\n          }\n          else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }\n          *pdVar21 = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }\n          dVar15 = (double)DAT_0029f710;\n        }\n        if (*(int *)(iVar20 + 0x34) != 0) {\n          *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15;\n        }\n        local_64 = (float)((int)local_64 + 1);\n        local_78 = local_78 + iVar6 * 8;\n      } while (local_64 != (float)param_3);\n    }" (statement_identifier "LAB_001612bc") (: ":") (if_statement "if (0 < param_3) {\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      local_64 = 0.0;\n      iVar33 = *(int *)(iVar20 + 8);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(param_1 + 0x298);\n      do {\n        pdVar28 = (double *)(iVar33 * 8 + local_78);\n        pdVar21 = (double *)(local_78 + iVar24 * 8);\n        if ((int)uVar22 < 1) {\n          fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (local_68 < 0) {\n            fVar27 = fVar27 + DAT_0029f714;\n          }\n          local_3c = (double)fVar27;\n          if (local_3c < dVar16) {\n            *pdVar28 = 0.0;\n          }\n          else {\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }\n          dVar15 = 0.0;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\nLAB_00161a0c:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          *pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710;\n          if (0 < (int)uVar22) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar15 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar15 = 0.0;\nLAB_00161c0a:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar15 = dVar14 * dVar15 * (double)DAT_0029f710;\n        }\n        else {\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {\n            *pdVar28 = (double)DAT_0029f710;\n          }\n          else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }\n          *pdVar21 = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }\n          dVar15 = (double)DAT_0029f710;\n        }\n        if (*(int *)(iVar20 + 0x34) != 0) {\n          *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15;\n        }\n        local_64 = (float)((int)local_64 + 1);\n        local_78 = local_78 + iVar6 * 8;\n      } while (local_64 != (float)param_3);\n    }" (if "if") (parenthesized_expression "(0 < param_3)" (( "(") (binary_expression "0 < param_3" (number_literal "0") (< "<") (identifier "param_3")) () ")")) (compound_statement "{\n      iVar20 = *(int *)(param_1 + 0x2a8);\n      local_64 = 0.0;\n      iVar33 = *(int *)(iVar20 + 8);\n      iVar24 = *(int *)(iVar20 + 0x14);\n      iVar6 = *(int *)(param_1 + 0x298);\n      do {\n        pdVar28 = (double *)(iVar33 * 8 + local_78);\n        pdVar21 = (double *)(local_78 + iVar24 * 8);\n        if ((int)uVar22 < 1) {\n          fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (local_68 < 0) {\n            fVar27 = fVar27 + DAT_0029f714;\n          }\n          local_3c = (double)fVar27;\n          if (local_3c < dVar16) {\n            *pdVar28 = 0.0;\n          }\n          else {\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }\n          dVar15 = 0.0;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\nLAB_00161a0c:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          *pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710;\n          if (0 < (int)uVar22) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar15 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar15 = 0.0;\nLAB_00161c0a:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar15 = dVar14 * dVar15 * (double)DAT_0029f710;\n        }\n        else {\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {\n            *pdVar28 = (double)DAT_0029f710;\n          }\n          else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }\n          *pdVar21 = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }\n          dVar15 = (double)DAT_0029f710;\n        }\n        if (*(int *)(iVar20 + 0x34) != 0) {\n          *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15;\n        }\n        local_64 = (float)((int)local_64 + 1);\n        local_78 = local_78 + iVar6 * 8;\n      } while (local_64 != (float)param_3);\n    }" ({ "{") (expression_statement "iVar20 = *(int *)(param_1 + 0x2a8);" (assignment_expression "iVar20 = *(int *)(param_1 + 0x2a8)" (identifier "iVar20") (= "=") (pointer_expression "*(int *)(param_1 + 0x2a8)" (* "*") (cast_expression "(int *)(param_1 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")"))))) (; ";")) (expression_statement "local_64 = 0.0;" (assignment_expression "local_64 = 0.0" (identifier "local_64") (= "=") (number_literal "0.0")) (; ";")) (expression_statement "iVar33 = *(int *)(iVar20 + 8);" (assignment_expression "iVar33 = *(int *)(iVar20 + 8)" (identifier "iVar33") (= "=") (pointer_expression "*(int *)(iVar20 + 8)" (* "*") (cast_expression "(int *)(iVar20 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + 8)" (( "(") (binary_expression "iVar20 + 8" (identifier "iVar20") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "iVar24 = *(int *)(iVar20 + 0x14);" (assignment_expression "iVar24 = *(int *)(iVar20 + 0x14)" (identifier "iVar24") (= "=") (pointer_expression "*(int *)(iVar20 + 0x14)" (* "*") (cast_expression "(int *)(iVar20 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + 0x14)" (( "(") (binary_expression "iVar20 + 0x14" (identifier "iVar20") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "iVar6 = *(int *)(param_1 + 0x298);" (assignment_expression "iVar6 = *(int *)(param_1 + 0x298)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(param_1 + 0x298)" (* "*") (cast_expression "(int *)(param_1 + 0x298)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x298)" (( "(") (binary_expression "param_1 + 0x298" (identifier "param_1") (+ "+") (number_literal "0x298")) () ")"))))) (; ";")) (do_statement "do {\n        pdVar28 = (double *)(iVar33 * 8 + local_78);\n        pdVar21 = (double *)(local_78 + iVar24 * 8);\n        if ((int)uVar22 < 1) {\n          fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (local_68 < 0) {\n            fVar27 = fVar27 + DAT_0029f714;\n          }\n          local_3c = (double)fVar27;\n          if (local_3c < dVar16) {\n            *pdVar28 = 0.0;\n          }\n          else {\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }\n          dVar15 = 0.0;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\nLAB_00161a0c:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          *pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710;\n          if (0 < (int)uVar22) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar15 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar15 = 0.0;\nLAB_00161c0a:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar15 = dVar14 * dVar15 * (double)DAT_0029f710;\n        }\n        else {\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {\n            *pdVar28 = (double)DAT_0029f710;\n          }\n          else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }\n          *pdVar21 = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }\n          dVar15 = (double)DAT_0029f710;\n        }\n        if (*(int *)(iVar20 + 0x34) != 0) {\n          *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15;\n        }\n        local_64 = (float)((int)local_64 + 1);\n        local_78 = local_78 + iVar6 * 8;\n      } while (local_64 != (float)param_3);" (do "do") (compound_statement "{\n        pdVar28 = (double *)(iVar33 * 8 + local_78);\n        pdVar21 = (double *)(local_78 + iVar24 * 8);\n        if ((int)uVar22 < 1) {\n          fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (local_68 < 0) {\n            fVar27 = fVar27 + DAT_0029f714;\n          }\n          local_3c = (double)fVar27;\n          if (local_3c < dVar16) {\n            *pdVar28 = 0.0;\n          }\n          else {\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }\n          dVar15 = 0.0;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\nLAB_00161a0c:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          *pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710;\n          if (0 < (int)uVar22) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar15 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar15 = 0.0;\nLAB_00161c0a:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar15 = dVar14 * dVar15 * (double)DAT_0029f710;\n        }\n        else {\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {\n            *pdVar28 = (double)DAT_0029f710;\n          }\n          else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }\n          *pdVar21 = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }\n          dVar15 = (double)DAT_0029f710;\n        }\n        if (*(int *)(iVar20 + 0x34) != 0) {\n          *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15;\n        }\n        local_64 = (float)((int)local_64 + 1);\n        local_78 = local_78 + iVar6 * 8;\n      }" ({ "{") (expression_statement "pdVar28 = (double *)(iVar33 * 8 + local_78);" (assignment_expression "pdVar28 = (double *)(iVar33 * 8 + local_78)" (identifier "pdVar28") (= "=") (cast_expression "(double *)(iVar33 * 8 + local_78)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar33 * 8 + local_78)" (( "(") (binary_expression "iVar33 * 8 + local_78" (binary_expression "iVar33 * 8" (identifier "iVar33") (* "*") (number_literal "8")) (+ "+") (identifier "local_78")) () ")")))) (; ";")) (expression_statement "pdVar21 = (double *)(local_78 + iVar24 * 8);" (assignment_expression "pdVar21 = (double *)(local_78 + iVar24 * 8)" (identifier "pdVar21") (= "=") (cast_expression "(double *)(local_78 + iVar24 * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_78 + iVar24 * 8)" (( "(") (binary_expression "local_78 + iVar24 * 8" (identifier "local_78") (+ "+") (binary_expression "iVar24 * 8" (identifier "iVar24") (* "*") (number_literal "8"))) () ")")))) (; ";")) (if_statement "if ((int)uVar22 < 1) {\n          fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (local_68 < 0) {\n            fVar27 = fVar27 + DAT_0029f714;\n          }\n          local_3c = (double)fVar27;\n          if (local_3c < dVar16) {\n            *pdVar28 = 0.0;\n          }\n          else {\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }\n          dVar15 = 0.0;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\nLAB_00161a0c:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          *pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710;\n          if (0 < (int)uVar22) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar15 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar15 = 0.0;\nLAB_00161c0a:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar15 = dVar14 * dVar15 * (double)DAT_0029f710;\n        }\n        else {\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {\n            *pdVar28 = (double)DAT_0029f710;\n          }\n          else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }\n          *pdVar21 = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }\n          dVar15 = (double)DAT_0029f710;\n        }" (if "if") (parenthesized_expression "((int)uVar22 < 1)" (( "(") (binary_expression "(int)uVar22 < 1" (cast_expression "(int)uVar22" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar22")) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n          fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n          if (local_68 < 0) {\n            fVar27 = fVar27 + DAT_0029f714;\n          }\n          local_3c = (double)fVar27;\n          if (local_3c < dVar16) {\n            *pdVar28 = 0.0;\n          }\n          else {\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }\n          dVar15 = 0.0;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\nLAB_00161a0c:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          *pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710;\n          if (0 < (int)uVar22) goto LAB_00161a4a;\n          if (DAT_0029f138 <= local_3c) {\n            dVar15 = 0.0;\n            goto LAB_00161ed0;\n          }\n          *local_5c = 0.0;\n          dVar15 = 0.0;\nLAB_00161c0a:\n          dVar14 = DAT_0029f738;\n          if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }\n          dVar15 = dVar14 * dVar15 * (double)DAT_0029f710;\n        }" ({ "{") (expression_statement "fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));" (assignment_expression "fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" (identifier "fVar27") (= "=") (cast_expression "(float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (call_expression "CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" (identifier "CONCAT44") (argument_list "(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" (( "(") (identifier "local_68") (, ",") (call_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" (identifier "CONCAT22") (argument_list "(uStack_6a,CONCAT11(bStack_6b,local_6c))" (( "(") (identifier "uStack_6a") (, ",") (call_expression "CONCAT11(bStack_6b,local_6c)" (identifier "CONCAT11") (argument_list "(bStack_6b,local_6c)" (( "(") (identifier "bStack_6b") (, ",") (identifier "local_6c") () ")"))) () ")"))) () ")"))))) (; ";")) (if_statement "if (local_68 < 0) {\n            fVar27 = fVar27 + DAT_0029f714;\n          }" (if "if") (parenthesized_expression "(local_68 < 0)" (( "(") (binary_expression "local_68 < 0" (identifier "local_68") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n            fVar27 = fVar27 + DAT_0029f714;\n          }" ({ "{") (expression_statement "fVar27 = fVar27 + DAT_0029f714;" (assignment_expression "fVar27 = fVar27 + DAT_0029f714" (identifier "fVar27") (= "=") (binary_expression "fVar27 + DAT_0029f714" (identifier "fVar27") (+ "+") (identifier "DAT_0029f714"))) (; ";")) (} "}"))) (expression_statement "local_3c = (double)fVar27;" (assignment_expression "local_3c = (double)fVar27" (identifier "local_3c") (= "=") (cast_expression "(double)fVar27" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "fVar27"))) (; ";")) (if_statement "if (local_3c < dVar16) {\n            *pdVar28 = 0.0;\n          }\n          else {\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }" (if "if") (parenthesized_expression "(local_3c < dVar16)" (( "(") (binary_expression "local_3c < dVar16" (identifier "local_3c") (< "<") (identifier "dVar16")) () ")")) (compound_statement "{\n            *pdVar28 = 0.0;\n          }" ({ "{") (expression_statement "*pdVar28 = 0.0;" (assignment_expression "*pdVar28 = 0.0" (pointer_expression "*pdVar28" (* "*") (identifier "pdVar28")) (= "=") (number_literal "0.0")) (; ";")) (} "}")) (else_clause "else {\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }" (else "else") (compound_statement "{\n            dVar15 = 0.0;\nLAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161938;\n          }" ({ "{") (expression_statement "dVar15 = 0.0;" (assignment_expression "dVar15 = 0.0" (identifier "dVar15") (= "=") (number_literal "0.0")) (; ";")) (labeled_statement "LAB_00161f72:\n            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;" (statement_identifier "LAB_00161f72") (: ":") (expression_statement "*pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;" (assignment_expression "*pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710" (pointer_expression "*pdVar28" (* "*") (identifier "pdVar28")) (= "=") (binary_expression "((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710" (binary_expression "((double)DAT_0029f718 / local_3c) * dVar15" (parenthesized_expression "((double)DAT_0029f718 / local_3c)" (( "(") (binary_expression "(double)DAT_0029f718 / local_3c" (cast_expression "(double)DAT_0029f718" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f718")) (/ "/") (identifier "local_3c")) () ")")) (* "*") (identifier "dVar15")) (* "*") (cast_expression "(double)DAT_0029f710" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f710")))) (; ";"))) (if_statement "if (0 < (int)uVar22) goto LAB_00161938;" (if "if") (parenthesized_expression "(0 < (int)uVar22)" (( "(") (binary_expression "0 < (int)uVar22" (number_literal "0") (< "<") (cast_expression "(int)uVar22" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar22"))) () ")")) (goto_statement "goto LAB_00161938;" (goto "goto") (statement_identifier "LAB_00161938") (; ";"))) (} "}")))) (expression_statement "dVar15 = 0.0;" (assignment_expression "dVar15 = 0.0" (identifier "dVar15") (= "=") (number_literal "0.0")) (; ";")) (expression_statement "local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);" (assignment_expression "local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8)" (identifier "local_5c") (= "=") (cast_expression "(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_78 + *(int *)(iVar20 + 0x20) * 8)" (( "(") (binary_expression "local_78 + *(int *)(iVar20 + 0x20) * 8" (identifier "local_78") (+ "+") (binary_expression "*(int *)(iVar20 + 0x20) * 8" (pointer_expression "*(int *)(iVar20 + 0x20)" (* "*") (cast_expression "(int *)(iVar20 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + 0x20)" (( "(") (binary_expression "iVar20 + 0x20" (identifier "iVar20") (+ "+") (number_literal "0x20")) () ")")))) (* "*") (number_literal "8"))) () ")")))) (; ";")) (labeled_statement "LAB_00161a0c:\n          dVar14 = DAT_0029f738;" (statement_identifier "LAB_00161a0c") (: ":") (expression_statement "dVar14 = DAT_0029f738;" (assignment_expression "dVar14 = DAT_0029f738" (identifier "dVar14") (= "=") (identifier "DAT_0029f738")) (; ";"))) (if_statement "if (DAT_0029f138 <= local_3c) {\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }" (if "if") (parenthesized_expression "(DAT_0029f138 <= local_3c)" (( "(") (binary_expression "DAT_0029f138 <= local_3c" (identifier "DAT_0029f138") (<= "<=") (identifier "local_3c")) () ")")) (compound_statement "{\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }" ({ "{") (expression_statement "dVar14 = (double)DAT_0029f718 / local_3c;" (assignment_expression "dVar14 = (double)DAT_0029f718 / local_3c" (identifier "dVar14") (= "=") (binary_expression "(double)DAT_0029f718 / local_3c" (cast_expression "(double)DAT_0029f718" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f718")) (/ "/") (identifier "local_3c"))) (; ";")) (} "}"))) (expression_statement "*pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710;" (assignment_expression "*pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710" (pointer_expression "*pdVar21" (* "*") (identifier "pdVar21")) (= "=") (binary_expression "dVar14 * dVar15 * (double)DAT_0029f710" (binary_expression "dVar14 * dVar15" (identifier "dVar14") (* "*") (identifier "dVar15")) (* "*") (cast_expression "(double)DAT_0029f710" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f710")))) (; ";")) (if_statement "if (0 < (int)uVar22) goto LAB_00161a4a;" (if "if") (parenthesized_expression "(0 < (int)uVar22)" (( "(") (binary_expression "0 < (int)uVar22" (number_literal "0") (< "<") (cast_expression "(int)uVar22" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar22"))) () ")")) (goto_statement "goto LAB_00161a4a;" (goto "goto") (statement_identifier "LAB_00161a4a") (; ";"))) (if_statement "if (DAT_0029f138 <= local_3c) {\n            dVar15 = 0.0;\n            goto LAB_00161ed0;\n          }" (if "if") (parenthesized_expression "(DAT_0029f138 <= local_3c)" (( "(") (binary_expression "DAT_0029f138 <= local_3c" (identifier "DAT_0029f138") (<= "<=") (identifier "local_3c")) () ")")) (compound_statement "{\n            dVar15 = 0.0;\n            goto LAB_00161ed0;\n          }" ({ "{") (expression_statement "dVar15 = 0.0;" (assignment_expression "dVar15 = 0.0" (identifier "dVar15") (= "=") (number_literal "0.0")) (; ";")) (goto_statement "goto LAB_00161ed0;" (goto "goto") (statement_identifier "LAB_00161ed0") (; ";")) (} "}"))) (expression_statement "*local_5c = 0.0;" (assignment_expression "*local_5c = 0.0" (pointer_expression "*local_5c" (* "*") (identifier "local_5c")) (= "=") (number_literal "0.0")) (; ";")) (expression_statement "dVar15 = 0.0;" (assignment_expression "dVar15 = 0.0" (identifier "dVar15") (= "=") (number_literal "0.0")) (; ";")) (labeled_statement "LAB_00161c0a:\n          dVar14 = DAT_0029f738;" (statement_identifier "LAB_00161c0a") (: ":") (expression_statement "dVar14 = DAT_0029f738;" (assignment_expression "dVar14 = DAT_0029f738" (identifier "dVar14") (= "=") (identifier "DAT_0029f738")) (; ";"))) (if_statement "if (DAT_0029f138 <= local_3c) {\nLAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }" (if "if") (parenthesized_expression "(DAT_0029f138 <= local_3c)" (( "(") (binary_expression "DAT_0029f138 <= local_3c" (identifier "DAT_0029f138") (<= "<=") (identifier "local_3c")) () ")")) (compound_statement "{\nLAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;\n          }" ({ "{") (labeled_statement "LAB_00161f00:\n            dVar14 = (double)DAT_0029f718 / local_3c;" (statement_identifier "LAB_00161f00") (: ":") (expression_statement "dVar14 = (double)DAT_0029f718 / local_3c;" (assignment_expression "dVar14 = (double)DAT_0029f718 / local_3c" (identifier "dVar14") (= "=") (binary_expression "(double)DAT_0029f718 / local_3c" (cast_expression "(double)DAT_0029f718" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f718")) (/ "/") (identifier "local_3c"))) (; ";"))) (} "}"))) (expression_statement "dVar15 = dVar14 * dVar15 * (double)DAT_0029f710;" (assignment_expression "dVar15 = dVar14 * dVar15 * (double)DAT_0029f710" (identifier "dVar15") (= "=") (binary_expression "dVar14 * dVar15 * (double)DAT_0029f710" (binary_expression "dVar14 * dVar15" (identifier "dVar14") (* "*") (identifier "dVar15")) (* "*") (cast_expression "(double)DAT_0029f710" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f710")))) (; ";")) (} "}")) (else_clause "else {\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {\n            *pdVar28 = (double)DAT_0029f710;\n          }\n          else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }\n          *pdVar21 = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }\n          dVar15 = (double)DAT_0029f710;\n        }" (else "else") (compound_statement "{\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {\n            *pdVar28 = (double)DAT_0029f710;\n          }\n          else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }\nLAB_00161938:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }\n          *pdVar21 = (double)DAT_0029f710;\nLAB_00161a4a:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }\n          *local_5c = (double)DAT_0029f710;\nLAB_00161b52:\n          uVar19 = 0;\n          uVar26 = param_2[0x14];\n          uVar29 = uVar22;\n          do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);\n          param_2[0x14] = uVar26;\n          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }\n          dVar15 = (double)DAT_0029f710;\n        }" ({ "{") (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" (identifier "uVar19") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar26 = param_2[0x14];" (assignment_expression "uVar26 = param_2[0x14]" (identifier "uVar26") (= "=") (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]"))) (; ";")) (expression_statement "uVar29 = uVar22;" (assignment_expression "uVar29 = uVar22" (identifier "uVar29") (= "=") (identifier "uVar22")) (; ";")) (do_statement "do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);" (do "do") (compound_statement "{\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          }" ({ "{") (if_statement "if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }" (if "if") (parenthesized_expression "(uVar26 == 0)" (( "(") (binary_expression "uVar26 == 0" (identifier "uVar26") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }" ({ "{") (expression_statement "uVar18 = (uint)*(byte *)local_80;" (assignment_expression "uVar18 = (uint)*(byte *)local_80" (identifier "uVar18") (= "=") (binary_expression "(uint)*(byte *)local_80" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)local_80" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_80")))) (; ";")) (expression_statement "local_80 = (float *)((int)local_80 + 1);" (assignment_expression "local_80 = (float *)((int)local_80 + 1)" (identifier "local_80") (= "=") (cast_expression "(float *)((int)local_80 + 1)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_80 + 1)" (( "(") (binary_expression "(int)local_80 + 1" (cast_expression "(int)local_80" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_80")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "param_2[0x13] = uVar18;" (assignment_expression "param_2[0x13] = uVar18" (subscript_expression "param_2[0x13]" (identifier "param_2") ([ "[") (number_literal "0x13") (] "]")) (= "=") (identifier "uVar18")) (; ";")) (expression_statement "uVar26 = 8;" (assignment_expression "uVar26 = 8" (identifier "uVar26") (= "=") (number_literal "8")) (; ";")) (} "}")) (else_clause "else {\n              uVar18 = param_2[0x13];\n            }" (else "else") (compound_statement "{\n              uVar18 = param_2[0x13];\n            }" ({ "{") (expression_statement "uVar18 = param_2[0x13];" (assignment_expression "uVar18 = param_2[0x13]" (identifier "uVar18") (= "=") (subscript_expression "param_2[0x13]" (identifier "param_2") ([ "[") (number_literal "0x13") (] "]"))) (; ";")) (} "}")))) (expression_statement "uVar25 = uVar26;" (assignment_expression "uVar25 = uVar26" (identifier "uVar25") (= "=") (identifier "uVar26")) (; ";")) (if_statement "if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }" (if "if") (parenthesized_expression "(uVar29 <= uVar26)" (( "(") (binary_expression "uVar29 <= uVar26" (identifier "uVar29") (<= "<=") (identifier "uVar26")) () ")")) (compound_statement "{\n              uVar25 = uVar29;\n            }" ({ "{") (expression_statement "uVar25 = uVar29;" (assignment_expression "uVar25 = uVar29" (identifier "uVar25") (= "=") (identifier "uVar29")) (; ";")) (} "}"))) (expression_statement "uVar26 = uVar26 - uVar25;" (assignment_expression "uVar26 = uVar26 - uVar25" (identifier "uVar26") (= "=") (binary_expression "uVar26 - uVar25" (identifier "uVar26") (- "-") (identifier "uVar25"))) (; ";")) (expression_statement "uVar29 = uVar29 - uVar25;" (assignment_expression "uVar29 = uVar29 - uVar25" (identifier "uVar29") (= "=") (binary_expression "uVar29 - uVar25" (identifier "uVar29") (- "-") (identifier "uVar25"))) (; ";")) (expression_statement "uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);" (assignment_expression "uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f)" (identifier "uVar19") (= "=") (binary_expression "uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f)" (binary_expression "uVar19 << ((byte)uVar25 & 0x1f)" (identifier "uVar19") (<< "<<") (parenthesized_expression "((byte)uVar25 & 0x1f)" (( "(") (binary_expression "(byte)uVar25 & 0x1f" (cast_expression "(byte)uVar25" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar25")) (& "&") (number_literal "0x1f")) () ")"))) (| "|") (binary_expression "~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f)" (unary_expression "~(-1 << ((byte)uVar25 & 0x1f))" (~ "~") (parenthesized_expression "(-1 << ((byte)uVar25 & 0x1f))" (( "(") (binary_expression "-1 << ((byte)uVar25 & 0x1f)" (number_literal "-1") (<< "<<") (parenthesized_expression "((byte)uVar25 & 0x1f)" (( "(") (binary_expression "(byte)uVar25 & 0x1f" (cast_expression "(byte)uVar25" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar25")) (& "&") (number_literal "0x1f")) () ")"))) () ")"))) (& "&") (binary_expression "uVar18 >> ((byte)uVar26 & 0x1f)" (identifier "uVar18") (>> ">>") (parenthesized_expression "((byte)uVar26 & 0x1f)" (( "(") (binary_expression "(byte)uVar26 & 0x1f" (cast_expression "(byte)uVar26" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar26")) (& "&") (number_literal "0x1f")) () ")")))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(0 < (int)uVar29)" (( "(") (binary_expression "0 < (int)uVar29" (number_literal "0") (< "<") (cast_expression "(int)uVar29" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar29"))) () ")")) (; ";")) (expression_statement "param_2[0x14] = uVar26;" (assignment_expression "param_2[0x14] = uVar26" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (identifier "uVar26")) (; ";")) (if_statement "if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {\n            *pdVar28 = (double)DAT_0029f710;\n          }\n          else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }" (if "if") (parenthesized_expression "((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19))" (( "(") (binary_expression "(local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)" (parenthesized_expression "(local_68 == 0)" (( "(") (binary_expression "local_68 == 0" (identifier "local_68") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)" (( "(") (binary_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19" (call_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" (identifier "CONCAT22") (argument_list "(uStack_6a,CONCAT11(bStack_6b,local_6c))" (( "(") (identifier "uStack_6a") (, ",") (call_expression "CONCAT11(bStack_6b,local_6c)" (identifier "CONCAT11") (argument_list "(bStack_6b,local_6c)" (( "(") (identifier "bStack_6b") (, ",") (identifier "local_6c") () ")"))) () ")"))) (< "<") (identifier "uVar19")) () ")"))) () ")")) (compound_statement "{\n            *pdVar28 = (double)DAT_0029f710;\n          }" ({ "{") (expression_statement "*pdVar28 = (double)DAT_0029f710;" (assignment_expression "*pdVar28 = (double)DAT_0029f710" (pointer_expression "*pdVar28" (* "*") (identifier "pdVar28")) (= "=") (cast_expression "(double)DAT_0029f710" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f710"))) (; ";")) (} "}")) (else_clause "else {\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }" (else "else") (compound_statement "{\n            dVar15 = (double)uVar19;\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;\n            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n          }" ({ "{") (expression_statement "dVar15 = (double)uVar19;" (assignment_expression "dVar15 = (double)uVar19" (identifier "dVar15") (= "=") (cast_expression "(double)uVar19" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "uVar19"))) (; ";")) (expression_statement "fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));" (assignment_expression "fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" (identifier "fVar27") (= "=") (cast_expression "(float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (call_expression "CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" (identifier "CONCAT44") (argument_list "(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" (( "(") (identifier "local_68") (, ",") (call_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" (identifier "CONCAT22") (argument_list "(uStack_6a,CONCAT11(bStack_6b,local_6c))" (( "(") (identifier "uStack_6a") (, ",") (call_expression "CONCAT11(bStack_6b,local_6c)" (identifier "CONCAT11") (argument_list "(bStack_6b,local_6c)" (( "(") (identifier "bStack_6b") (, ",") (identifier "local_6c") () ")"))) () ")"))) () ")"))))) (; ";")) (if_statement "if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }" (if "if") (parenthesized_expression "(local_68 < 0)" (( "(") (binary_expression "local_68 < 0" (identifier "local_68") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n              fVar27 = fVar27 + DAT_0029f714;\n            }" ({ "{") (expression_statement "fVar27 = fVar27 + DAT_0029f714;" (assignment_expression "fVar27 = fVar27 + DAT_0029f714" (identifier "fVar27") (= "=") (binary_expression "fVar27 + DAT_0029f714" (identifier "fVar27") (+ "+") (identifier "DAT_0029f714"))) (; ";")) (} "}"))) (expression_statement "local_3c = (double)fVar27;" (assignment_expression "local_3c = (double)fVar27" (identifier "local_3c") (= "=") (cast_expression "(double)fVar27" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "fVar27"))) (; ";")) (if_statement "if (DAT_0029f138 <= local_3c) goto LAB_00161f72;" (if "if") (parenthesized_expression "(DAT_0029f138 <= local_3c)" (( "(") (binary_expression "DAT_0029f138 <= local_3c" (identifier "DAT_0029f138") (<= "<=") (identifier "local_3c")) () ")")) (goto_statement "goto LAB_00161f72;" (goto "goto") (statement_identifier "LAB_00161f72") (; ";"))) (expression_statement "*pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;" (assignment_expression "*pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710" (pointer_expression "*pdVar28" (* "*") (identifier "pdVar28")) (= "=") (binary_expression "dVar15 * DAT_0029f738 * (double)DAT_0029f710" (binary_expression "dVar15 * DAT_0029f738" (identifier "dVar15") (* "*") (identifier "DAT_0029f738")) (* "*") (cast_expression "(double)DAT_0029f710" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f710")))) (; ";")) (} "}")))) (labeled_statement "LAB_00161938:\n          uVar19 = 0;" (statement_identifier "LAB_00161938") (: ":") (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" (identifier "uVar19") (= "=") (number_literal "0")) (; ";"))) (expression_statement "uVar26 = param_2[0x14];" (assignment_expression "uVar26 = param_2[0x14]" (identifier "uVar26") (= "=") (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]"))) (; ";")) (expression_statement "uVar29 = uVar22;" (assignment_expression "uVar29 = uVar22" (identifier "uVar29") (= "=") (identifier "uVar22")) (; ";")) (do_statement "do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);" (do "do") (compound_statement "{\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar26;\n            if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          }" ({ "{") (if_statement "if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }" (if "if") (parenthesized_expression "(uVar26 == 0)" (( "(") (binary_expression "uVar26 == 0" (identifier "uVar26") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }" ({ "{") (expression_statement "uVar18 = (uint)*(byte *)local_80;" (assignment_expression "uVar18 = (uint)*(byte *)local_80" (identifier "uVar18") (= "=") (binary_expression "(uint)*(byte *)local_80" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)local_80" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_80")))) (; ";")) (expression_statement "local_80 = (float *)((int)local_80 + 1);" (assignment_expression "local_80 = (float *)((int)local_80 + 1)" (identifier "local_80") (= "=") (cast_expression "(float *)((int)local_80 + 1)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_80 + 1)" (( "(") (binary_expression "(int)local_80 + 1" (cast_expression "(int)local_80" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_80")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "uVar26 = 8;" (assignment_expression "uVar26 = 8" (identifier "uVar26") (= "=") (number_literal "8")) (; ";")) (expression_statement "param_2[0x13] = uVar18;" (assignment_expression "param_2[0x13] = uVar18" (subscript_expression "param_2[0x13]" (identifier "param_2") ([ "[") (number_literal "0x13") (] "]")) (= "=") (identifier "uVar18")) (; ";")) (} "}")) (else_clause "else {\n              uVar18 = param_2[0x13];\n            }" (else "else") (compound_statement "{\n              uVar18 = param_2[0x13];\n            }" ({ "{") (expression_statement "uVar18 = param_2[0x13];" (assignment_expression "uVar18 = param_2[0x13]" (identifier "uVar18") (= "=") (subscript_expression "param_2[0x13]" (identifier "param_2") ([ "[") (number_literal "0x13") (] "]"))) (; ";")) (} "}")))) (expression_statement "uVar25 = uVar26;" (assignment_expression "uVar25 = uVar26" (identifier "uVar25") (= "=") (identifier "uVar26")) (; ";")) (if_statement "if (uVar29 <= uVar26) {\n              uVar25 = uVar29;\n            }" (if "if") (parenthesized_expression "(uVar29 <= uVar26)" (( "(") (binary_expression "uVar29 <= uVar26" (identifier "uVar29") (<= "<=") (identifier "uVar26")) () ")")) (compound_statement "{\n              uVar25 = uVar29;\n            }" ({ "{") (expression_statement "uVar25 = uVar29;" (assignment_expression "uVar25 = uVar29" (identifier "uVar25") (= "=") (identifier "uVar29")) (; ";")) (} "}"))) (expression_statement "uVar26 = uVar26 - uVar25;" (assignment_expression "uVar26 = uVar26 - uVar25" (identifier "uVar26") (= "=") (binary_expression "uVar26 - uVar25" (identifier "uVar26") (- "-") (identifier "uVar25"))) (; ";")) (expression_statement "uVar29 = uVar29 - uVar25;" (assignment_expression "uVar29 = uVar29 - uVar25" (identifier "uVar29") (= "=") (binary_expression "uVar29 - uVar25" (identifier "uVar29") (- "-") (identifier "uVar25"))) (; ";")) (expression_statement "uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);" (assignment_expression "uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f)" (identifier "uVar19") (= "=") (binary_expression "uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f)" (binary_expression "uVar19 << ((byte)uVar25 & 0x1f)" (identifier "uVar19") (<< "<<") (parenthesized_expression "((byte)uVar25 & 0x1f)" (( "(") (binary_expression "(byte)uVar25 & 0x1f" (cast_expression "(byte)uVar25" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar25")) (& "&") (number_literal "0x1f")) () ")"))) (| "|") (binary_expression "~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f)" (unary_expression "~(-1 << ((byte)uVar25 & 0x1f))" (~ "~") (parenthesized_expression "(-1 << ((byte)uVar25 & 0x1f))" (( "(") (binary_expression "-1 << ((byte)uVar25 & 0x1f)" (number_literal "-1") (<< "<<") (parenthesized_expression "((byte)uVar25 & 0x1f)" (( "(") (binary_expression "(byte)uVar25 & 0x1f" (cast_expression "(byte)uVar25" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar25")) (& "&") (number_literal "0x1f")) () ")"))) () ")"))) (& "&") (binary_expression "uVar18 >> ((byte)uVar26 & 0x1f)" (identifier "uVar18") (>> ">>") (parenthesized_expression "((byte)uVar26 & 0x1f)" (( "(") (binary_expression "(byte)uVar26 & 0x1f" (cast_expression "(byte)uVar26" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar26")) (& "&") (number_literal "0x1f")) () ")")))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(0 < (int)uVar29)" (( "(") (binary_expression "0 < (int)uVar29" (number_literal "0") (< "<") (cast_expression "(int)uVar29" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar29"))) () ")")) (; ";")) (expression_statement "param_2[0x14] = uVar26;" (assignment_expression "param_2[0x14] = uVar26" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (identifier "uVar26")) (; ";")) (expression_statement "local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);" (assignment_expression "local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8)" (identifier "local_5c") (= "=") (cast_expression "(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_78 + *(int *)(iVar20 + 0x20) * 8)" (( "(") (binary_expression "local_78 + *(int *)(iVar20 + 0x20) * 8" (identifier "local_78") (+ "+") (binary_expression "*(int *)(iVar20 + 0x20) * 8" (pointer_expression "*(int *)(iVar20 + 0x20)" (* "*") (cast_expression "(int *)(iVar20 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + 0x20)" (( "(") (binary_expression "iVar20 + 0x20" (identifier "iVar20") (+ "+") (number_literal "0x20")) () ")")))) (* "*") (number_literal "8"))) () ")")))) (; ";")) (if_statement "if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }" (if "if") (parenthesized_expression "((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))))" (( "(") (binary_expression "(local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" (parenthesized_expression "(local_68 != 0)" (( "(") (binary_expression "local_68 != 0" (identifier "local_68") (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" (( "(") (binary_expression "uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" (identifier "uVar19") (<= "<=") (call_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" (identifier "CONCAT22") (argument_list "(uStack_6a,CONCAT11(bStack_6b,local_6c))" (( "(") (identifier "uStack_6a") (, ",") (call_expression "CONCAT11(bStack_6b,local_6c)" (identifier "CONCAT11") (argument_list "(bStack_6b,local_6c)" (( "(") (identifier "bStack_6b") (, ",") (identifier "local_6c") () ")"))) () ")")))) () ")"))) () ")")) (compound_statement "{\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161a0c;\n          }" ({ "{") (expression_statement "fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));" (assignment_expression "fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" (identifier "fVar27") (= "=") (cast_expression "(float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (call_expression "CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" (identifier "CONCAT44") (argument_list "(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" (( "(") (identifier "local_68") (, ",") (call_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" (identifier "CONCAT22") (argument_list "(uStack_6a,CONCAT11(bStack_6b,local_6c))" (( "(") (identifier "uStack_6a") (, ",") (call_expression "CONCAT11(bStack_6b,local_6c)" (identifier "CONCAT11") (argument_list "(bStack_6b,local_6c)" (( "(") (identifier "bStack_6b") (, ",") (identifier "local_6c") () ")"))) () ")"))) () ")"))))) (; ";")) (if_statement "if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }" (if "if") (parenthesized_expression "(local_68 < 0)" (( "(") (binary_expression "local_68 < 0" (identifier "local_68") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n              fVar27 = fVar27 + DAT_0029f714;\n            }" ({ "{") (expression_statement "fVar27 = fVar27 + DAT_0029f714;" (assignment_expression "fVar27 = fVar27 + DAT_0029f714" (identifier "fVar27") (= "=") (binary_expression "fVar27 + DAT_0029f714" (identifier "fVar27") (+ "+") (identifier "DAT_0029f714"))) (; ";")) (} "}"))) (expression_statement "local_3c = (double)fVar27;" (assignment_expression "local_3c = (double)fVar27" (identifier "local_3c") (= "=") (cast_expression "(double)fVar27" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "fVar27"))) (; ";")) (expression_statement "dVar15 = (double)uVar19;" (assignment_expression "dVar15 = (double)uVar19" (identifier "dVar15") (= "=") (cast_expression "(double)uVar19" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "uVar19"))) (; ";")) (goto_statement "goto LAB_00161a0c;" (goto "goto") (statement_identifier "LAB_00161a0c") (; ";")) (} "}"))) (expression_statement "*pdVar21 = (double)DAT_0029f710;" (assignment_expression "*pdVar21 = (double)DAT_0029f710" (pointer_expression "*pdVar21" (* "*") (identifier "pdVar21")) (= "=") (cast_expression "(double)DAT_0029f710" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f710"))) (; ";")) (labeled_statement "LAB_00161a4a:\n          uVar19 = 0;" (statement_identifier "LAB_00161a4a") (: ":") (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" (identifier "uVar19") (= "=") (number_literal "0")) (; ";"))) (expression_statement "uVar26 = param_2[0x14];" (assignment_expression "uVar26 = param_2[0x14]" (identifier "uVar26") (= "=") (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]"))) (; ";")) (expression_statement "uVar29 = uVar22;" (assignment_expression "uVar29 = uVar22" (identifier "uVar29") (= "=") (identifier "uVar22")) (; ";")) (do_statement "do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);" (do "do") (compound_statement "{\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          }" ({ "{") (if_statement "if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }" (if "if") (parenthesized_expression "(uVar26 == 0)" (( "(") (binary_expression "uVar26 == 0" (identifier "uVar26") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              param_2[0x13] = uVar18;\n              uVar26 = 8;\n            }" ({ "{") (expression_statement "uVar18 = (uint)*(byte *)local_80;" (assignment_expression "uVar18 = (uint)*(byte *)local_80" (identifier "uVar18") (= "=") (binary_expression "(uint)*(byte *)local_80" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)local_80" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_80")))) (; ";")) (expression_statement "local_80 = (float *)((int)local_80 + 1);" (assignment_expression "local_80 = (float *)((int)local_80 + 1)" (identifier "local_80") (= "=") (cast_expression "(float *)((int)local_80 + 1)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_80 + 1)" (( "(") (binary_expression "(int)local_80 + 1" (cast_expression "(int)local_80" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_80")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "param_2[0x13] = uVar18;" (assignment_expression "param_2[0x13] = uVar18" (subscript_expression "param_2[0x13]" (identifier "param_2") ([ "[") (number_literal "0x13") (] "]")) (= "=") (identifier "uVar18")) (; ";")) (expression_statement "uVar26 = 8;" (assignment_expression "uVar26 = 8" (identifier "uVar26") (= "=") (number_literal "8")) (; ";")) (} "}")) (else_clause "else {\n              uVar18 = param_2[0x13];\n            }" (else "else") (compound_statement "{\n              uVar18 = param_2[0x13];\n            }" ({ "{") (expression_statement "uVar18 = param_2[0x13];" (assignment_expression "uVar18 = param_2[0x13]" (identifier "uVar18") (= "=") (subscript_expression "param_2[0x13]" (identifier "param_2") ([ "[") (number_literal "0x13") (] "]"))) (; ";")) (} "}")))) (expression_statement "uVar25 = uVar29;" (assignment_expression "uVar25 = uVar29" (identifier "uVar25") (= "=") (identifier "uVar29")) (; ";")) (if_statement "if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }" (if "if") (parenthesized_expression "(uVar26 <= uVar29)" (( "(") (binary_expression "uVar26 <= uVar29" (identifier "uVar26") (<= "<=") (identifier "uVar29")) () ")")) (compound_statement "{\n              uVar25 = uVar26;\n            }" ({ "{") (expression_statement "uVar25 = uVar26;" (assignment_expression "uVar25 = uVar26" (identifier "uVar25") (= "=") (identifier "uVar26")) (; ";")) (} "}"))) (expression_statement "uVar26 = uVar26 - uVar25;" (assignment_expression "uVar26 = uVar26 - uVar25" (identifier "uVar26") (= "=") (binary_expression "uVar26 - uVar25" (identifier "uVar26") (- "-") (identifier "uVar25"))) (; ";")) (expression_statement "uVar29 = uVar29 - uVar25;" (assignment_expression "uVar29 = uVar29 - uVar25" (identifier "uVar29") (= "=") (binary_expression "uVar29 - uVar25" (identifier "uVar29") (- "-") (identifier "uVar25"))) (; ";")) (expression_statement "uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);" (assignment_expression "uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f)" (identifier "uVar19") (= "=") (binary_expression "uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f)" (binary_expression "uVar19 << ((byte)uVar25 & 0x1f)" (identifier "uVar19") (<< "<<") (parenthesized_expression "((byte)uVar25 & 0x1f)" (( "(") (binary_expression "(byte)uVar25 & 0x1f" (cast_expression "(byte)uVar25" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar25")) (& "&") (number_literal "0x1f")) () ")"))) (| "|") (binary_expression "~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f)" (unary_expression "~(-1 << ((byte)uVar25 & 0x1f))" (~ "~") (parenthesized_expression "(-1 << ((byte)uVar25 & 0x1f))" (( "(") (binary_expression "-1 << ((byte)uVar25 & 0x1f)" (number_literal "-1") (<< "<<") (parenthesized_expression "((byte)uVar25 & 0x1f)" (( "(") (binary_expression "(byte)uVar25 & 0x1f" (cast_expression "(byte)uVar25" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar25")) (& "&") (number_literal "0x1f")) () ")"))) () ")"))) (& "&") (binary_expression "uVar18 >> ((byte)uVar26 & 0x1f)" (identifier "uVar18") (>> ">>") (parenthesized_expression "((byte)uVar26 & 0x1f)" (( "(") (binary_expression "(byte)uVar26 & 0x1f" (cast_expression "(byte)uVar26" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar26")) (& "&") (number_literal "0x1f")) () ")")))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(0 < (int)uVar29)" (( "(") (binary_expression "0 < (int)uVar29" (number_literal "0") (< "<") (cast_expression "(int)uVar29" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar29"))) () ")")) (; ";")) (expression_statement "param_2[0x14] = uVar26;" (assignment_expression "param_2[0x14] = uVar26" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (identifier "uVar26")) (; ";")) (if_statement "if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }" (if "if") (parenthesized_expression "((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))))" (( "(") (binary_expression "(local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" (parenthesized_expression "(local_68 != 0)" (( "(") (binary_expression "local_68 != 0" (identifier "local_68") (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" (( "(") (binary_expression "uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" (identifier "uVar19") (<= "<=") (call_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" (identifier "CONCAT22") (argument_list "(uStack_6a,CONCAT11(bStack_6b,local_6c))" (( "(") (identifier "uStack_6a") (, ",") (call_expression "CONCAT11(bStack_6b,local_6c)" (identifier "CONCAT11") (argument_list "(bStack_6b,local_6c)" (( "(") (identifier "bStack_6b") (, ",") (identifier "local_6c") () ")"))) () ")")))) () ")"))) () ")")) (compound_statement "{\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }\nLAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;\n            if (0 < (int)uVar22) goto LAB_00161b52;\n            dVar15 = 0.0;\n            goto LAB_00161f00;\n          }" ({ "{") (expression_statement "fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));" (assignment_expression "fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" (identifier "fVar27") (= "=") (cast_expression "(float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (call_expression "CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" (identifier "CONCAT44") (argument_list "(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" (( "(") (identifier "local_68") (, ",") (call_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" (identifier "CONCAT22") (argument_list "(uStack_6a,CONCAT11(bStack_6b,local_6c))" (( "(") (identifier "uStack_6a") (, ",") (call_expression "CONCAT11(bStack_6b,local_6c)" (identifier "CONCAT11") (argument_list "(bStack_6b,local_6c)" (( "(") (identifier "bStack_6b") (, ",") (identifier "local_6c") () ")"))) () ")"))) () ")"))))) (; ";")) (if_statement "if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }" (if "if") (parenthesized_expression "(local_68 < 0)" (( "(") (binary_expression "local_68 < 0" (identifier "local_68") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n              fVar27 = fVar27 + DAT_0029f714;\n            }" ({ "{") (expression_statement "fVar27 = fVar27 + DAT_0029f714;" (assignment_expression "fVar27 = fVar27 + DAT_0029f714" (identifier "fVar27") (= "=") (binary_expression "fVar27 + DAT_0029f714" (identifier "fVar27") (+ "+") (identifier "DAT_0029f714"))) (; ";")) (} "}"))) (expression_statement "local_3c = (double)fVar27;" (assignment_expression "local_3c = (double)fVar27" (identifier "local_3c") (= "=") (cast_expression "(double)fVar27" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "fVar27"))) (; ";")) (expression_statement "dVar15 = (double)uVar19;" (assignment_expression "dVar15 = (double)uVar19" (identifier "dVar15") (= "=") (cast_expression "(double)uVar19" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "uVar19"))) (; ";")) (if_statement "if (local_3c < DAT_0029f138) {\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }" (if "if") (parenthesized_expression "(local_3c < DAT_0029f138)" (( "(") (binary_expression "local_3c < DAT_0029f138" (identifier "local_3c") (< "<") (identifier "DAT_0029f138")) () ")")) (compound_statement "{\n              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;\n              if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }\n              goto LAB_00161b52;\n            }" ({ "{") (expression_statement "*local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;" (assignment_expression "*local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710" (pointer_expression "*local_5c" (* "*") (identifier "local_5c")) (= "=") (binary_expression "dVar15 * DAT_0029f738 * (double)DAT_0029f710" (binary_expression "dVar15 * DAT_0029f738" (identifier "dVar15") (* "*") (identifier "DAT_0029f738")) (* "*") (cast_expression "(double)DAT_0029f710" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f710")))) (; ";")) (if_statement "if ((int)uVar22 < 1) {\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }" (if "if") (parenthesized_expression "((int)uVar22 < 1)" (( "(") (binary_expression "(int)uVar22 < 1" (cast_expression "(int)uVar22" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar22")) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n                dVar15 = 0.0;\n                goto LAB_00161c0a;\n              }" ({ "{") (expression_statement "dVar15 = 0.0;" (assignment_expression "dVar15 = 0.0" (identifier "dVar15") (= "=") (number_literal "0.0")) (; ";")) (goto_statement "goto LAB_00161c0a;" (goto "goto") (statement_identifier "LAB_00161c0a") (; ";")) (} "}"))) (goto_statement "goto LAB_00161b52;" (goto "goto") (statement_identifier "LAB_00161b52") (; ";")) (} "}"))) (labeled_statement "LAB_00161ed0:\n            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;" (statement_identifier "LAB_00161ed0") (: ":") (expression_statement "*local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;" (assignment_expression "*local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710" (pointer_expression "*local_5c" (* "*") (identifier "local_5c")) (= "=") (binary_expression "((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710" (binary_expression "((double)DAT_0029f718 / local_3c) * dVar15" (parenthesized_expression "((double)DAT_0029f718 / local_3c)" (( "(") (binary_expression "(double)DAT_0029f718 / local_3c" (cast_expression "(double)DAT_0029f718" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f718")) (/ "/") (identifier "local_3c")) () ")")) (* "*") (identifier "dVar15")) (* "*") (cast_expression "(double)DAT_0029f710" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f710")))) (; ";"))) (if_statement "if (0 < (int)uVar22) goto LAB_00161b52;" (if "if") (parenthesized_expression "(0 < (int)uVar22)" (( "(") (binary_expression "0 < (int)uVar22" (number_literal "0") (< "<") (cast_expression "(int)uVar22" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar22"))) () ")")) (goto_statement "goto LAB_00161b52;" (goto "goto") (statement_identifier "LAB_00161b52") (; ";"))) (expression_statement "dVar15 = 0.0;" (assignment_expression "dVar15 = 0.0" (identifier "dVar15") (= "=") (number_literal "0.0")) (; ";")) (goto_statement "goto LAB_00161f00;" (goto "goto") (statement_identifier "LAB_00161f00") (; ";")) (} "}"))) (expression_statement "*local_5c = (double)DAT_0029f710;" (assignment_expression "*local_5c = (double)DAT_0029f710" (pointer_expression "*local_5c" (* "*") (identifier "local_5c")) (= "=") (cast_expression "(double)DAT_0029f710" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f710"))) (; ";")) (labeled_statement "LAB_00161b52:\n          uVar19 = 0;" (statement_identifier "LAB_00161b52") (: ":") (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" (identifier "uVar19") (= "=") (number_literal "0")) (; ";"))) (expression_statement "uVar26 = param_2[0x14];" (assignment_expression "uVar26 = param_2[0x14]" (identifier "uVar26") (= "=") (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]"))) (; ";")) (expression_statement "uVar29 = uVar22;" (assignment_expression "uVar29 = uVar22" (identifier "uVar29") (= "=") (identifier "uVar22")) (; ";")) (do_statement "do {\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          } while (0 < (int)uVar29);" (do "do") (compound_statement "{\n            if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }\n            uVar25 = uVar29;\n            if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }\n            uVar26 = uVar26 - uVar25;\n            uVar29 = uVar29 - uVar25;\n            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);\n          }" ({ "{") (if_statement "if (uVar26 == 0) {\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }\n            else {\n              uVar18 = param_2[0x13];\n            }" (if "if") (parenthesized_expression "(uVar26 == 0)" (( "(") (binary_expression "uVar26 == 0" (identifier "uVar26") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              uVar18 = (uint)*(byte *)local_80;\n              local_80 = (float *)((int)local_80 + 1);\n              uVar26 = 8;\n              param_2[0x13] = uVar18;\n            }" ({ "{") (expression_statement "uVar18 = (uint)*(byte *)local_80;" (assignment_expression "uVar18 = (uint)*(byte *)local_80" (identifier "uVar18") (= "=") (binary_expression "(uint)*(byte *)local_80" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)local_80" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_80")))) (; ";")) (expression_statement "local_80 = (float *)((int)local_80 + 1);" (assignment_expression "local_80 = (float *)((int)local_80 + 1)" (identifier "local_80") (= "=") (cast_expression "(float *)((int)local_80 + 1)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_80 + 1)" (( "(") (binary_expression "(int)local_80 + 1" (cast_expression "(int)local_80" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_80")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "uVar26 = 8;" (assignment_expression "uVar26 = 8" (identifier "uVar26") (= "=") (number_literal "8")) (; ";")) (expression_statement "param_2[0x13] = uVar18;" (assignment_expression "param_2[0x13] = uVar18" (subscript_expression "param_2[0x13]" (identifier "param_2") ([ "[") (number_literal "0x13") (] "]")) (= "=") (identifier "uVar18")) (; ";")) (} "}")) (else_clause "else {\n              uVar18 = param_2[0x13];\n            }" (else "else") (compound_statement "{\n              uVar18 = param_2[0x13];\n            }" ({ "{") (expression_statement "uVar18 = param_2[0x13];" (assignment_expression "uVar18 = param_2[0x13]" (identifier "uVar18") (= "=") (subscript_expression "param_2[0x13]" (identifier "param_2") ([ "[") (number_literal "0x13") (] "]"))) (; ";")) (} "}")))) (expression_statement "uVar25 = uVar29;" (assignment_expression "uVar25 = uVar29" (identifier "uVar25") (= "=") (identifier "uVar29")) (; ";")) (if_statement "if (uVar26 <= uVar29) {\n              uVar25 = uVar26;\n            }" (if "if") (parenthesized_expression "(uVar26 <= uVar29)" (( "(") (binary_expression "uVar26 <= uVar29" (identifier "uVar26") (<= "<=") (identifier "uVar29")) () ")")) (compound_statement "{\n              uVar25 = uVar26;\n            }" ({ "{") (expression_statement "uVar25 = uVar26;" (assignment_expression "uVar25 = uVar26" (identifier "uVar25") (= "=") (identifier "uVar26")) (; ";")) (} "}"))) (expression_statement "uVar26 = uVar26 - uVar25;" (assignment_expression "uVar26 = uVar26 - uVar25" (identifier "uVar26") (= "=") (binary_expression "uVar26 - uVar25" (identifier "uVar26") (- "-") (identifier "uVar25"))) (; ";")) (expression_statement "uVar29 = uVar29 - uVar25;" (assignment_expression "uVar29 = uVar29 - uVar25" (identifier "uVar29") (= "=") (binary_expression "uVar29 - uVar25" (identifier "uVar29") (- "-") (identifier "uVar25"))) (; ";")) (expression_statement "uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);" (assignment_expression "uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f)" (identifier "uVar19") (= "=") (binary_expression "uVar19 << ((byte)uVar25 & 0x1f) |\n                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f)" (binary_expression "uVar19 << ((byte)uVar25 & 0x1f)" (identifier "uVar19") (<< "<<") (parenthesized_expression "((byte)uVar25 & 0x1f)" (( "(") (binary_expression "(byte)uVar25 & 0x1f" (cast_expression "(byte)uVar25" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar25")) (& "&") (number_literal "0x1f")) () ")"))) (| "|") (binary_expression "~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f)" (unary_expression "~(-1 << ((byte)uVar25 & 0x1f))" (~ "~") (parenthesized_expression "(-1 << ((byte)uVar25 & 0x1f))" (( "(") (binary_expression "-1 << ((byte)uVar25 & 0x1f)" (number_literal "-1") (<< "<<") (parenthesized_expression "((byte)uVar25 & 0x1f)" (( "(") (binary_expression "(byte)uVar25 & 0x1f" (cast_expression "(byte)uVar25" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar25")) (& "&") (number_literal "0x1f")) () ")"))) () ")"))) (& "&") (binary_expression "uVar18 >> ((byte)uVar26 & 0x1f)" (identifier "uVar18") (>> ">>") (parenthesized_expression "((byte)uVar26 & 0x1f)" (( "(") (binary_expression "(byte)uVar26 & 0x1f" (cast_expression "(byte)uVar26" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar26")) (& "&") (number_literal "0x1f")) () ")")))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(0 < (int)uVar29)" (( "(") (binary_expression "0 < (int)uVar29" (number_literal "0") (< "<") (cast_expression "(int)uVar29" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar29"))) () ")")) (; ";")) (expression_statement "param_2[0x14] = uVar26;" (assignment_expression "param_2[0x14] = uVar26" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (identifier "uVar26")) (; ";")) (if_statement "if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }" (if "if") (parenthesized_expression "((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))))" (( "(") (binary_expression "(local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" (parenthesized_expression "(local_68 != 0)" (( "(") (binary_expression "local_68 != 0" (identifier "local_68") (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" (( "(") (binary_expression "uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" (identifier "uVar19") (<= "<=") (call_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" (identifier "CONCAT22") (argument_list "(uStack_6a,CONCAT11(bStack_6b,local_6c))" (( "(") (identifier "uStack_6a") (, ",") (call_expression "CONCAT11(bStack_6b,local_6c)" (identifier "CONCAT11") (argument_list "(bStack_6b,local_6c)" (( "(") (identifier "bStack_6b") (, ",") (identifier "local_6c") () ")"))) () ")")))) () ")"))) () ")")) (compound_statement "{\n            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));\n            if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }\n            local_3c = (double)fVar27;\n            dVar15 = (double)uVar19;\n            goto LAB_00161c0a;\n          }" ({ "{") (expression_statement "fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));" (assignment_expression "fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" (identifier "fVar27") (= "=") (cast_expression "(float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (call_expression "CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" (identifier "CONCAT44") (argument_list "(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))" (( "(") (identifier "local_68") (, ",") (call_expression "CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c))" (identifier "CONCAT22") (argument_list "(uStack_6a,CONCAT11(bStack_6b,local_6c))" (( "(") (identifier "uStack_6a") (, ",") (call_expression "CONCAT11(bStack_6b,local_6c)" (identifier "CONCAT11") (argument_list "(bStack_6b,local_6c)" (( "(") (identifier "bStack_6b") (, ",") (identifier "local_6c") () ")"))) () ")"))) () ")"))))) (; ";")) (if_statement "if (local_68 < 0) {\n              fVar27 = fVar27 + DAT_0029f714;\n            }" (if "if") (parenthesized_expression "(local_68 < 0)" (( "(") (binary_expression "local_68 < 0" (identifier "local_68") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n              fVar27 = fVar27 + DAT_0029f714;\n            }" ({ "{") (expression_statement "fVar27 = fVar27 + DAT_0029f714;" (assignment_expression "fVar27 = fVar27 + DAT_0029f714" (identifier "fVar27") (= "=") (binary_expression "fVar27 + DAT_0029f714" (identifier "fVar27") (+ "+") (identifier "DAT_0029f714"))) (; ";")) (} "}"))) (expression_statement "local_3c = (double)fVar27;" (assignment_expression "local_3c = (double)fVar27" (identifier "local_3c") (= "=") (cast_expression "(double)fVar27" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "fVar27"))) (; ";")) (expression_statement "dVar15 = (double)uVar19;" (assignment_expression "dVar15 = (double)uVar19" (identifier "dVar15") (= "=") (cast_expression "(double)uVar19" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "uVar19"))) (; ";")) (goto_statement "goto LAB_00161c0a;" (goto "goto") (statement_identifier "LAB_00161c0a") (; ";")) (} "}"))) (expression_statement "dVar15 = (double)DAT_0029f710;" (assignment_expression "dVar15 = (double)DAT_0029f710" (identifier "dVar15") (= "=") (cast_expression "(double)DAT_0029f710" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f710"))) (; ";")) (} "}")))) (if_statement "if (*(int *)(iVar20 + 0x34) != 0) {\n          *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15;\n        }" (if "if") (parenthesized_expression "(*(int *)(iVar20 + 0x34) != 0)" (( "(") (binary_expression "*(int *)(iVar20 + 0x34) != 0" (pointer_expression "*(int *)(iVar20 + 0x34)" (* "*") (cast_expression "(int *)(iVar20 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + 0x34)" (( "(") (binary_expression "iVar20 + 0x34" (identifier "iVar20") (+ "+") (number_literal "0x34")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15;\n        }" ({ "{") (expression_statement "*(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15;" (assignment_expression "*(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15" (pointer_expression "*(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8)" (* "*") (cast_expression "(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_78 + *(int *)(iVar20 + 0x38) * 8)" (( "(") (binary_expression "local_78 + *(int *)(iVar20 + 0x38) * 8" (identifier "local_78") (+ "+") (binary_expression "*(int *)(iVar20 + 0x38) * 8" (pointer_expression "*(int *)(iVar20 + 0x38)" (* "*") (cast_expression "(int *)(iVar20 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + 0x38)" (( "(") (binary_expression "iVar20 + 0x38" (identifier "iVar20") (+ "+") (number_literal "0x38")) () ")")))) (* "*") (number_literal "8"))) () ")")))) (= "=") (binary_expression "(double)DAT_0029f710 - dVar15" (cast_expression "(double)DAT_0029f710" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f710")) (- "-") (identifier "dVar15"))) (; ";")) (} "}"))) (expression_statement "local_64 = (float)((int)local_64 + 1);" (assignment_expression "local_64 = (float)((int)local_64 + 1)" (identifier "local_64") (= "=") (cast_expression "(float)((int)local_64 + 1)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "((int)local_64 + 1)" (( "(") (binary_expression "(int)local_64 + 1" (cast_expression "(int)local_64" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_64")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "local_78 = local_78 + iVar6 * 8;" (assignment_expression "local_78 = local_78 + iVar6 * 8" (identifier "local_78") (= "=") (binary_expression "local_78 + iVar6 * 8" (identifier "local_78") (+ "+") (binary_expression "iVar6 * 8" (identifier "iVar6") (* "*") (number_literal "8")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_64 != (float)param_3)" (( "(") (binary_expression "local_64 != (float)param_3" (identifier "local_64") (!= "!=") (cast_expression "(float)param_3" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (identifier "param_3"))) () ")")) (; ";")) (} "}"))))) (} "}"))) (if_statement "if (iVar2 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0029eab0();\n  }" (if "if") (parenthesized_expression "(iVar2 != *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "iVar2 != *(int *)(in_GS_OFFSET + 0x14)" (identifier "iVar2") (!= "!=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n                    \n    FUN_0029eab0();\n  }" ({ "{") (expression_statement "FUN_0029eab0();" (call_expression "FUN_0029eab0()" (identifier "FUN_0029eab0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.cx replaced with injection: get_pc_thunk_cx */
/* 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 __regparm2
function_1(type_1 *var_2,type_2 *quantum_info,type_3 number_pixels,type_4 *var_8,
                 type_5 *var_11)

{
  type_6 *puVar1;
  type_7 var_33;
  type_7 var_34;
  type_8 var_27;
  int iVar5;
  size_t var_12;
  int iVar7;
  type_9 var_5;
  type_10 var_51;
  double var_57;
  double var_55;
  double var_19;
  float var_4;
  float var_41;
  type_7 var_31;
  type_6 var_24;
  type_6 var_25;
  int var_16;
  type_4 *var_37;
  type_10 var_50;
  size_t var_9;
  type_6 var_15;
  type_6 var_13;
  type_6 quantum;
  double *pdVar24;
  type_6 var_23;
  type_7 var_32;
  int var_10;
  type_11 *pPVar28;
  int var_1;
  float var_30;
  float var_29;
  type_6 *var_17;
  type_5 *var_22;
  type_10 local_6c;
  type_10 bStack_6b;
  type_7 uStack_6a;
  int var_52;
  float var_40;
  float var_44;
  double *var_46;
  double var_54;
  float var_36;
  type_12 uStack_28;
  int var_59;
  
  var_41 = var_43;
  var_4 = DAT_002a7ff0;
  var_29 = var_47;
  var_30 = var_7;
  var_19 = var_56;
  var_17 = (type_6 *)var_8;
  var_22 = var_11;
  var_59 = *(int *)(var_1 + 0x14);
  if (var_2 == (type_1 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_3("image != (Image *) NULL","MagickCore/quantum-import.c",0x1123,"ImportRGBOQuantum"
                 );
  }
  if (var_2->signature != 0xabacadab) {
                    /* WARNING: Subroutine does not return */
    var_3("image->signature == MagickCoreSignature","MagickCore/quantum-import.c",0x1124,
                  "ImportRGBOQuantum");
  }
  var_13 = quantum_info->depth;
  switch(var_13) {
  case 8:
    if (0 < (int)number_pixels) {
      pPVar28 = var_2->channel_map;
      var_12 = var_2->number_channels;
      var_16 = pPVar28->offset;
      var_10 = 0;
      iVar5 = pPVar28[1].offset;
      iVar7 = pPVar28[2].offset;
      var_5 = pPVar28[4].traits;
      var_9 = quantum_info->pad;
      do {
        var_51 = var_8[1];
        var_50 = var_8[2];
        var_11[var_16] = (double)((float)*var_8 * var_4);
        var_11[iVar5] = (double)((float)var_51 * var_4);
        var_11[iVar7] = (double)((float)var_50 * var_4);
        if (var_5 != var_6) {
          var_11[pPVar28[4].offset] = (double)(var_7 - (float)var_8[3] * var_4);
        }
        var_8 = var_8 + var_9 + 4;
        var_10 = var_10 + 1;
        var_11 = var_11 + var_12;
      } while (var_10 != (int)number_pixels);
    }
    break;
  default:
    local_6c = 0;
    bStack_6b = 0;
    uStack_6a = 0;
    var_52 = 0;
    if (var_13 != 0) goto LAB_00161285;
    goto LAB_001612bc;
  case 10:
    if (quantum_info->pack == var_14) {
      if (0 < (int)number_pixels) {
        var_13 = 0;
        local_6c = 0;
        bStack_6b = 0;
        uStack_6a = 0;
        pPVar28 = var_2->channel_map;
        var_12 = quantum_info->pad;
        var_9 = var_2->number_channels;
        var_23 = 0;
        do {
          var_16 = 0;
          var_15 = var_23;
LAB_001620a2:
          if (var_15 % 3 == 1) {
            var_23 = var_13 >> 6 & 0xffc0;
LAB_001620cb:
            var_19 = (double)var_23;
            if (var_16 != 2) goto LAB_001620d7;
LAB_00162130:
            var_22[pPVar28[2].offset] = var_19;
LAB_001620f8:
            var_15 = var_15 + 1;
            var_16 = var_16 + 1;
            goto LAB_001620a2;
          }
          if (var_15 % 3 == 2) {
            var_23 = (var_13 & 0xffc) << 4;
            goto LAB_001620cb;
          }
          puVar1 = var_17 + 1;
          var_13 = *var_17;
          if (quantum_info->endian != var_18) {
            var_13 = var_13 >> 0x18 | (var_13 & 0xff0000) >> 8 | (var_13 & 0xff00) << 8 |
                     var_13 << 0x18;
          }
          var_19 = (double)((var_13 >> 0x16) << 6);
          var_17 = puVar1;
          if (var_16 == 2) goto LAB_00162130;
LAB_001620d7:
          var_23 = var_15 + 1;
          if (var_16 != 3) {
            if (var_16 == 1) {
              var_22[pPVar28[1].offset] = var_19;
            }
            else {
              var_22[pPVar28->offset] = var_19;
              if (var_16 == 3) goto LAB_0016217a;
            }
            goto LAB_001620f8;
          }
          if (pPVar28[4].traits != var_6) {
            var_22[pPVar28[4].offset] = (double)var_7 - var_19;
          }
LAB_0016217a:
          var_16 = var_20(uStack_6a,var_21(bStack_6b,local_6c)) + 1;
          local_6c = (type_10)var_16;
          bStack_6b = (type_10)((type_6)var_16 >> 8);
          uStack_6a = (type_7)((type_6)var_16 >> 0x10);
          var_17 = (type_6 *)((int)var_17 + var_12);
          var_22 = var_22 + var_9;
        } while (var_16 != (int)number_pixels);
      }
    }
    else if (0 < (int)number_pixels) {
      pPVar28 = var_2->channel_map;
      var_16 = 0;
      iVar5 = pPVar28->offset;
      var_12 = var_2->number_channels;
      var_5 = pPVar28[4].traits;
      iVar7 = pPVar28[2].offset;
      var_10 = pPVar28[1].offset;
      do {
        var_15 = 0;
        var_23 = 10;
        var_13 = (quantum_info->state).bits;
        do {
          if (var_13 == 0) {
            var_25 = (type_6)(type_10)*var_17;
            var_17 = (type_6 *)((int)var_17 + 1);
            var_13 = 8;
            (quantum_info->state).var_36 = var_25;
          }
          else {
            var_25 = (quantum_info->state).var_36;
          }
          var_24 = var_13;
          if (var_23 <= var_13) {
            var_24 = var_23;
          }
          var_13 = var_13 - var_24;
          var_23 = var_23 - var_24;
          var_15 = var_15 << ((type_10)var_24 & 0x1f) |
                   ~(-1 << ((type_10)var_24 & 0x1f)) & var_25 >> ((type_10)var_13 & 0x1f);
        } while (0 < (int)var_23);
        (quantum_info->state).bits = var_13;
        var_22[iVar5] = (double)((var_15 & 0x3ff) << 6);
        var_15 = 0;
        var_23 = 10;
        do {
          if (var_13 == 0) {
            var_25 = (type_6)(type_10)*var_17;
            var_17 = (type_6 *)((int)var_17 + 1);
            var_13 = 8;
            (quantum_info->state).var_36 = var_25;
          }
          else {
            var_25 = (quantum_info->state).var_36;
          }
          var_24 = var_23;
          if (var_13 <= var_23) {
            var_24 = var_13;
          }
          var_13 = var_13 - var_24;
          var_23 = var_23 - var_24;
          var_15 = var_15 << ((type_10)var_24 & 0x1f) |
                   ~(-1 << ((type_10)var_24 & 0x1f)) & var_25 >> ((type_10)var_13 & 0x1f);
        } while (0 < (int)var_23);
        (quantum_info->state).bits = var_13;
        var_22[var_10] = (double)((var_15 & 0x3ff) << 6);
        var_15 = 0;
        var_23 = 10;
        do {
          if (var_13 == 0) {
            var_25 = (type_6)(type_10)*var_17;
            var_17 = (type_6 *)((int)var_17 + 1);
            var_13 = 8;
            (quantum_info->state).var_36 = var_25;
          }
          else {
            var_25 = (quantum_info->state).var_36;
          }
          var_24 = var_23;
          if (var_13 <= var_23) {
            var_24 = var_13;
          }
          var_13 = var_13 - var_24;
          var_23 = var_23 - var_24;
          var_15 = var_15 << ((type_10)var_24 & 0x1f) |
                   ~(-1 << ((type_10)var_24 & 0x1f)) & var_25 >> ((type_10)var_13 & 0x1f);
        } while (0 < (int)var_23);
        var_23 = 0;
        (quantum_info->state).bits = var_13;
        var_22[iVar7] = (double)((var_15 & 0x3ff) << 6);
        var_15 = 10;
        do {
          if (var_13 == 0) {
            var_25 = (type_6)(type_10)*var_17;
            var_17 = (type_6 *)((int)var_17 + 1);
            var_13 = 8;
            (quantum_info->state).var_36 = var_25;
          }
          else {
            var_25 = (quantum_info->state).var_36;
          }
          var_24 = var_13;
          if (var_15 <= var_13) {
            var_24 = var_15;
          }
          var_13 = var_13 - var_24;
          var_15 = var_15 - var_24;
          var_23 = var_23 << ((type_10)var_24 & 0x1f) |
                   ~(-1 << ((type_10)var_24 & 0x1f)) & var_25 >> ((type_10)var_13 & 0x1f);
        } while (0 < (int)var_15);
        (quantum_info->state).bits = var_13;
        if (var_5 != var_6) {
          var_22[pPVar28[4].offset] = (double)(var_7 - (float)((var_23 & 0x3ff) << 6));
        }
        var_16 = var_16 + 1;
        var_22 = var_22 + var_12;
      } while (var_16 != (int)number_pixels);
    }
    break;
  case 0x10:
    if (quantum_info->format == var_26) {
      if (0 < (int)number_pixels) {
        var_16 = 0;
        var_27 = quantum_info->endian;
        do {
          var_31 = *(type_7 *)var_8;
          if (var_27 == var_18) {
            var_29 = var_28(var_31);
            var_30 = var_7;
            pPVar28 = var_2->channel_map;
            var_11[pPVar28->offset] = (double)(var_7 * var_29);
            var_29 = var_28(*(type_7 *)((int)var_8 + 2));
            var_11[pPVar28[1].offset] = (double)(var_29 * var_30);
            var_29 = var_28(*(type_7 *)((int)var_8 + 4));
            var_11[pPVar28[2].offset] = (double)(var_29 * var_30);
            var_31 = *(type_7 *)((int)var_8 + 6);
          }
          else {
            var_29 = var_28(var_31 << 8 | var_31 >> 8);
            var_30 = var_7;
            pPVar28 = var_2->channel_map;
            var_11[pPVar28->offset] = (double)(var_7 * var_29);
            var_29 = var_28
                               (*(type_7 *)((int)var_8 + 2) << 8 | *(type_7 *)((int)var_8 + 2) >> 8);
            var_11[pPVar28[1].offset] = (double)(var_29 * var_30);
            var_29 = var_28
                               (*(type_7 *)((int)var_8 + 4) << 8 | *(type_7 *)((int)var_8 + 4) >> 8);
            var_11[pPVar28[2].offset] = (double)(var_29 * var_30);
            var_31 = *(type_7 *)((int)var_8 + 6) << 8 | *(type_7 *)((int)var_8 + 6) >> 8;
          }
          var_30 = var_28(var_31);
          if (pPVar28[4].traits != var_6) {
            var_11[pPVar28[4].offset] = (double)(var_7 - var_30 * var_7);
          }
          var_16 = var_16 + 1;
          var_8 = (type_4 *)((int)var_8 + quantum_info->pad + 8);
          var_11 = var_11 + var_2->number_channels;
        } while (var_16 != (int)number_pixels);
      }
    }
    else if (0 < (int)number_pixels) {
      pPVar28 = var_2->channel_map;
      var_27 = quantum_info->endian;
      var_12 = quantum_info->pad;
      var_9 = var_2->number_channels;
      var_16 = pPVar28[1].offset;
      iVar5 = pPVar28[2].offset;
      iVar7 = pPVar28->offset;
      var_5 = pPVar28[4].traits;
      var_10 = 0;
      do {
        var_31 = *(type_7 *)((int)var_8 + 4);
        var_32 = *(type_7 *)((int)var_8 + 6);
        var_33 = *(type_7 *)var_8;
        var_34 = *(type_7 *)((int)var_8 + 2);
        if (var_27 == var_18) {
          var_11[iVar7] = (double)var_33;
          var_11[var_16] = (double)var_34;
          var_11[iVar5] = (double)var_31;
        }
        else {
          var_32 = var_32 << 8 | var_32 >> 8;
          var_11[iVar7] = (double)(type_7)(var_33 << 8 | var_33 >> 8);
          var_11[var_16] = (double)(type_7)(var_34 << 8 | var_34 >> 8);
          var_11[iVar5] = (double)(type_7)(var_31 << 8 | var_31 >> 8);
        }
        if (var_5 != var_6) {
          var_11[pPVar28[4].offset] = (double)(var_30 - (float)var_32);
        }
        var_8 = (type_4 *)((int)var_8 + var_12 + 8);
        var_10 = var_10 + 1;
        var_11 = var_11 + var_9;
      } while (var_10 != (int)number_pixels);
    }
    break;
  case 0x18:
    if (quantum_info->format == var_26) {
      if (0 < (int)number_pixels) {
        var_16 = 0;
        do {
          var_37 = var_35(quantum_info,var_8,&var_36);
          var_11[var_2->channel_map->offset] = (double)var_36;
          var_37 = var_35(quantum_info,var_37,&var_36);
          var_11[var_2->channel_map[1].offset] = (double)var_36;
          var_37 = var_35(quantum_info,var_37,&var_36);
          var_11[var_2->channel_map[2].offset] = (double)var_36;
          var_37 = var_35(quantum_info,var_37,&var_36);
          if (var_2->channel_map[4].traits != var_6) {
            var_11[var_2->channel_map[4].offset] = (double)(var_7 - var_36);
          }
          var_8 = var_37 + quantum_info->pad;
          var_16 = var_16 + 1;
          var_11 = var_11 + var_2->number_channels;
        } while (var_16 != (int)number_pixels);
      }
      break;
    }
    goto LAB_001616dd;
  case 0x20:
    if (quantum_info->format == var_26) {
      if (0 < (int)number_pixels) {
        pPVar28 = var_2->channel_map;
        var_46 = (double *)0x0;
        var_12 = quantum_info->pad;
        var_27 = quantum_info->endian;
        var_9 = var_2->number_channels;
        do {
          var_40 = *(float *)var_8;
          if (var_27 != var_18) {
            var_40 = (float)var_38(var_39((type_7)(((type_6)*var_8 << 0x18) >> 0x10) |
                                                (type_7)*(type_10 *)((int)var_8 + 1),*(type_10 *)((int)var_8 + 2))
                                       ,*(type_10 *)((int)var_8 + 3));
          }
          var_29 = (var_40 - (float)quantum_info->minimum) * (float)quantum_info->scale;
          var_30 = var_41;
          if ((var_41 <= var_29) && (var_30 = var_42, var_29 <= var_42)) {
            var_30 = var_29;
          }
          var_11[pPVar28->offset] = (double)var_30;
          if (var_27 == var_18) {
            var_30 = *(float *)((int)var_8 + 4);
          }
          else {
            var_30 = (float)var_38(var_39((type_7)(((type_6)*(type_10 *)((int)var_8 + 4) << 0x18) >> 0x10
                                                      ) | (type_7)*(type_10 *)((int)var_8 + 5),
                                              *(type_10 *)((int)var_8 + 6)),*(type_10 *)((int)var_8 + 7));
          }
          var_30 = (var_30 - (float)quantum_info->minimum) * (float)quantum_info->scale;
          var_29 = var_43;
          if ((var_43 <= var_30) && (var_29 = var_42, var_30 <= var_42)) {
            var_29 = var_30;
          }
          var_11[pPVar28[1].offset] = (double)var_29;
          if (var_27 == var_18) {
            var_44 = *(float *)((int)var_8 + 8);
          }
          else {
            var_44 = (float)var_38(var_39((type_7)(((type_6)*(type_10 *)((int)var_8 + 8) << 0x18) >>
                                                        0x10) | (type_7)*(type_10 *)((int)var_8 + 9),
                                                *(type_10 *)((int)var_8 + 10)),*(type_10 *)((int)var_8 + 0xb));
          }
          var_30 = (var_44 - (float)quantum_info->minimum) * (float)quantum_info->scale;
          var_29 = var_43;
          if ((var_43 <= var_30) && (var_29 = var_42, var_30 <= var_42)) {
            var_29 = var_30;
          }
          var_11[pPVar28[2].offset] = (double)var_29;
          if (var_27 == var_18) {
            var_30 = *(float *)((int)var_8 + 0xc);
            local_6c = var_45(var_30,0);
            bStack_6b = (type_10)((type_6)var_30 >> 8);
            uStack_6a = (type_7)((type_6)var_30 >> 0x10);
          }
          else {
            uStack_6a = (type_7)(((type_6)*(type_10 *)((int)var_8 + 0xc) << 0x18) >> 0x10) |
                        (type_7)*(type_10 *)((int)var_8 + 0xd);
            bStack_6b = *(type_10 *)((int)var_8 + 0xe);
            local_6c = *(type_10 *)((int)var_8 + 0xf);
          }
          var_30 = ((float)var_20(uStack_6a,var_21(bStack_6b,local_6c)) -
                   (float)quantum_info->minimum) * (float)quantum_info->scale;
          var_29 = var_43;
          if ((var_43 <= var_30) && (var_29 = var_42, var_30 <= var_42)) {
            var_29 = var_30;
          }
          if (pPVar28[4].traits != var_6) {
            var_11[pPVar28[4].offset] = (double)(var_7 - var_29);
          }
          var_46 = (double *)((int)var_46 + 1);
          var_8 = (type_4 *)((int)var_8 + var_12 + 0x10);
          var_11 = var_11 + var_9;
        } while (var_46 != (double *)(int)number_pixels);
      }
      break;
    }
LAB_001616dd:
    if (0 < (int)number_pixels) {
      pPVar28 = var_2->channel_map;
      var_27 = quantum_info->endian;
      var_12 = quantum_info->pad;
      var_9 = var_2->number_channels;
      var_16 = pPVar28->offset;
      iVar5 = pPVar28[1].offset;
      iVar7 = pPVar28[2].offset;
      var_5 = pPVar28[4].traits;
      var_10 = 0;
      do {
        var_30 = var_47;
        var_13 = *(type_6 *)((int)var_8 + 0xc);
        var_23 = *(type_6 *)((int)var_8 + 4);
        var_15 = *(type_6 *)((int)var_8 + 8);
        var_25 = *(type_6 *)var_8;
        if (var_27 == var_18) {
          var_11[var_16] = (double)((float)var_25 / var_47);
          var_11[iVar5] = (double)((float)var_23 / var_30);
          var_11[iVar7] = (double)((float)var_15 / var_30);
        }
        else {
          var_31 = (type_7)(var_25 >> 8);
          uStack_6a = var_31 & 0xff | (type_7)((var_25 << 0x18) >> 0x10);
          var_13 = var_13 >> 0x18 | (var_13 & 0xff0000) >> 8 | (var_13 & 0xff00) << 8 |
                   var_13 << 0x18;
          var_11[var_16] = (double)((float)var_20(uStack_6a,
                                               (type_7)(type_10)(var_25 >> 0x18) | var_31 & 0xff00) /
                              var_29);
          var_11[iVar5] = (double)((float)(var_23 >> 0x18 | (var_23 & 0xff0000) >> 8 |
                                      (var_23 & 0xff00) << 8 | var_23 << 0x18) / var_29);
          var_11[iVar7] = (double)((float)(var_15 >> 0x18 | (var_15 & 0xff0000) >> 8 |
                                      (var_15 & 0xff00) << 8 | var_15 << 0x18) / var_29);
        }
        if (var_5 != var_6) {
          var_11[pPVar28[4].offset] = (double)(var_7 - (float)var_13 / var_47);
        }
        var_8 = (type_4 *)((int)var_8 + var_12 + 0x10);
        var_10 = var_10 + 1;
        var_11 = var_11 + var_9;
      } while (var_10 != (int)number_pixels);
    }
    break;
  case 0x40:
    if (quantum_info->format == var_26) {
      if (0 < (int)number_pixels) {
        var_16 = 0;
        do {
          var_37 = var_48(quantum_info,var_8,(double *)&var_36);
          var_11[var_2->channel_map->offset] = (type_5)var_49(uStack_28,var_36);
          var_37 = var_48(quantum_info,var_37,(double *)&var_36);
          var_11[var_2->channel_map[1].offset] = (type_5)var_49(uStack_28,var_36);
          var_37 = var_48(quantum_info,var_37,(double *)&var_36);
          var_11[var_2->channel_map[2].offset] = (type_5)var_49(uStack_28,var_36);
          var_37 = var_48(quantum_info,var_37,(double *)&var_36);
          if (var_2->channel_map[4].traits != var_6) {
            var_11[var_2->channel_map[4].offset] =
                 (double)(var_7 - (float)(double)var_49(uStack_28,var_36));
          }
          var_8 = var_37 + quantum_info->pad;
          var_16 = var_16 + 1;
          var_11 = var_11 + var_2->number_channels;
        } while (var_16 != (int)number_pixels);
      }
      break;
    }
LAB_00161285:
    var_23 = 0;
    if (var_13 < 0x41) {
      var_23 = var_13;
    }
    var_50 = (type_10)(var_23 - 1);
    var_51 = var_50 & 0x1f;
    var_24 = 2 << (var_50 & 0x1f);
    var_25 = var_24;
    var_15 = 0 << var_51 | 2U >> 0x20 - var_51;
    if ((var_23 - 1 & 0x20) != 0) {
      var_25 = 0;
      var_15 = var_24;
    }
    var_16 = var_25 - 1;
    var_52 = (var_15 - 1) + (type_6)(var_25 != 0);
    local_6c = (type_10)var_16;
    bStack_6b = (type_10)((type_6)var_16 >> 8);
    uStack_6a = (type_7)((type_6)var_16 >> 0x10);
LAB_001612bc:
    if (0 < (int)number_pixels) {
      pPVar28 = var_2->channel_map;
      var_40 = 0.0;
      var_16 = pPVar28->offset;
      iVar5 = pPVar28[1].offset;
      var_12 = var_2->number_channels;
      do {
        pdVar24 = var_22 + var_16;
        if ((int)var_13 < 1) {
          var_30 = (float)var_49(var_52,var_20(uStack_6a,var_21(bStack_6b,local_6c)));
          if (var_52 < 0) {
            var_30 = var_30 + var_53;
          }
          var_54 = (double)var_30;
          if (var_54 < var_19) {
            *pdVar24 = 0.0;
          }
          else {
            var_55 = 0.0;
LAB_00161f72:
            *pdVar24 = ((double)DAT_0029f718 / var_54) * var_55 * (double)var_7;
            if (0 < (int)var_13) goto LAB_00161938;
          }
          var_55 = 0.0;
          var_46 = var_22 + pPVar28[2].offset;
LAB_00161a0c:
          var_57 = var_58;
          if (var_56 <= var_54) {
            var_57 = (double)DAT_0029f718 / var_54;
          }
          var_22[iVar5] = var_57 * var_55 * (double)var_7;
          if (0 < (int)var_13) goto LAB_00161a4a;
          if (var_56 <= var_54) {
            var_55 = 0.0;
            goto LAB_00161ed0;
          }
          *var_46 = 0.0;
          var_55 = 0.0;
LAB_00161c0a:
          var_57 = var_58;
          if (var_56 <= var_54) {
LAB_00161f00:
            var_57 = (double)DAT_0029f718 / var_54;
          }
          var_55 = var_57 * var_55 * (double)var_7;
        }
        else {
          var_15 = 0;
          var_9 = (quantum_info->state).bits;
          var_23 = var_13;
          do {
            if (var_9 == 0) {
              var_25 = (type_6)(type_10)*var_17;
              var_17 = (type_6 *)((int)var_17 + 1);
              (quantum_info->state).var_36 = var_25;
              var_9 = 8;
            }
            else {
              var_25 = (quantum_info->state).var_36;
            }
            var_24 = var_9;
            if (var_23 <= var_9) {
              var_24 = var_23;
            }
            var_9 = var_9 - var_24;
            var_23 = var_23 - var_24;
            var_15 = var_15 << ((type_10)var_24 & 0x1f) |
                     ~(-1 << ((type_10)var_24 & 0x1f)) & var_25 >> ((type_10)var_9 & 0x1f);
          } while (0 < (int)var_23);
          (quantum_info->state).bits = var_9;
          if ((var_52 == 0) && (var_20(uStack_6a,var_21(bStack_6b,local_6c)) < var_15)) {
            *pdVar24 = (double)var_7;
          }
          else {
            var_55 = (double)var_15;
            var_30 = (float)var_49(var_52,var_20(uStack_6a,var_21(bStack_6b,local_6c)));
            if (var_52 < 0) {
              var_30 = var_30 + var_53;
            }
            var_54 = (double)var_30;
            if (var_56 <= var_54) goto LAB_00161f72;
            *pdVar24 = var_55 * var_58 * (double)var_7;
          }
LAB_00161938:
          var_15 = 0;
          var_9 = (quantum_info->state).bits;
          var_23 = var_13;
          do {
            if (var_9 == 0) {
              var_25 = (type_6)(type_10)*var_17;
              var_17 = (type_6 *)((int)var_17 + 1);
              var_9 = 8;
              (quantum_info->state).var_36 = var_25;
            }
            else {
              var_25 = (quantum_info->state).var_36;
            }
            var_24 = var_9;
            if (var_23 <= var_9) {
              var_24 = var_23;
            }
            var_9 = var_9 - var_24;
            var_23 = var_23 - var_24;
            var_15 = var_15 << ((type_10)var_24 & 0x1f) |
                     ~(-1 << ((type_10)var_24 & 0x1f)) & var_25 >> ((type_10)var_9 & 0x1f);
          } while (0 < (int)var_23);
          (quantum_info->state).bits = var_9;
          var_46 = var_22 + pPVar28[2].offset;
          if ((var_52 != 0) || (var_15 <= var_20(uStack_6a,var_21(bStack_6b,local_6c)))) {
            var_30 = (float)var_49(var_52,var_20(uStack_6a,var_21(bStack_6b,local_6c)));
            if (var_52 < 0) {
              var_30 = var_30 + var_53;
            }
            var_54 = (double)var_30;
            var_55 = (double)var_15;
            goto LAB_00161a0c;
          }
          var_22[iVar5] = (double)var_7;
LAB_00161a4a:
          var_15 = 0;
          var_9 = (quantum_info->state).bits;
          var_23 = var_13;
          do {
            if (var_9 == 0) {
              var_25 = (type_6)(type_10)*var_17;
              var_17 = (type_6 *)((int)var_17 + 1);
              (quantum_info->state).var_36 = var_25;
              var_9 = 8;
            }
            else {
              var_25 = (quantum_info->state).var_36;
            }
            var_24 = var_23;
            if (var_9 <= var_23) {
              var_24 = var_9;
            }
            var_9 = var_9 - var_24;
            var_23 = var_23 - var_24;
            var_15 = var_15 << ((type_10)var_24 & 0x1f) |
                     ~(-1 << ((type_10)var_24 & 0x1f)) & var_25 >> ((type_10)var_9 & 0x1f);
          } while (0 < (int)var_23);
          (quantum_info->state).bits = var_9;
          if ((var_52 != 0) || (var_15 <= var_20(uStack_6a,var_21(bStack_6b,local_6c)))) {
            var_30 = (float)var_49(var_52,var_20(uStack_6a,var_21(bStack_6b,local_6c)));
            if (var_52 < 0) {
              var_30 = var_30 + var_53;
            }
            var_54 = (double)var_30;
            var_55 = (double)var_15;
            if (var_54 < var_56) {
              *var_46 = var_55 * var_58 * (double)var_7;
              if ((int)var_13 < 1) {
                var_55 = 0.0;
                goto LAB_00161c0a;
              }
              goto LAB_00161b52;
            }
LAB_00161ed0:
            *var_46 = ((double)DAT_0029f718 / var_54) * var_55 * (double)var_7;
            if (0 < (int)var_13) goto LAB_00161b52;
            var_55 = 0.0;
            goto LAB_00161f00;
          }
          *var_46 = (double)var_7;
LAB_00161b52:
          var_15 = 0;
          var_9 = (quantum_info->state).bits;
          var_23 = var_13;
          do {
            if (var_9 == 0) {
              var_25 = (type_6)(type_10)*var_17;
              var_17 = (type_6 *)((int)var_17 + 1);
              var_9 = 8;
              (quantum_info->state).var_36 = var_25;
            }
            else {
              var_25 = (quantum_info->state).var_36;
            }
            var_24 = var_23;
            if (var_9 <= var_23) {
              var_24 = var_9;
            }
            var_9 = var_9 - var_24;
            var_23 = var_23 - var_24;
            var_15 = var_15 << ((type_10)var_24 & 0x1f) |
                     ~(-1 << ((type_10)var_24 & 0x1f)) & var_25 >> ((type_10)var_9 & 0x1f);
          } while (0 < (int)var_23);
          (quantum_info->state).bits = var_9;
          if ((var_52 != 0) || (var_15 <= var_20(uStack_6a,var_21(bStack_6b,local_6c)))) {
            var_30 = (float)var_49(var_52,var_20(uStack_6a,var_21(bStack_6b,local_6c)));
            if (var_52 < 0) {
              var_30 = var_30 + var_53;
            }
            var_54 = (double)var_30;
            var_55 = (double)var_15;
            goto LAB_00161c0a;
          }
          var_55 = (double)var_7;
        }
        if (pPVar28[4].traits != var_6) {
          var_22[pPVar28[4].offset] = (double)var_7 - var_55;
        }
        var_40 = (float)((int)var_40 + 1);
        var_22 = var_22 + var_12;
      } while (var_40 != (float)(int)number_pixels);
    }
  }
  if (var_59 != *(int *)(var_1 + 0x14)) {
                    /* WARNING: Subroutine does not return */
    var_60();
  }
  return;
}


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

/* WARNING: Function: __i686.get_pc_thunk.cx replaced with injection: get_pc_thunk_cx */

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

{
  float *pfVar1;
  int iVar2;
  ushort uVar3;
  ushort uVar4;
  ushort uVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  float fVar9;
  float fVar10;
  float fVar11;
  byte bVar12;
  float fVar13;
  double dVar14;
  double dVar15;
  double dVar16;
  float fVar17;
  uint uVar18;
  uint uVar19;
  int iVar20;
  double *pdVar21;
  uint uVar22;
  byte bVar23;
  int iVar24;
  uint uVar25;
  uint uVar26;
  float fVar27;
  double *pdVar28;
  uint uVar29;
  double *pdVar30;
  ushort uVar31;
  int iVar32;
  int iVar33;
  int in_GS_OFFSET;
  longdouble lVar34;
  float *local_80;
  int local_78;
  byte local_6c;
  byte bStack_6b;
  ushort uStack_6a;
  int local_68;
  float local_64;
  float local_60;
  double *local_5c;
  double local_3c;
  float fStack_2c;
  undefined4 uStack_28;
  
  fVar10 = DAT_002c5824;
  fVar9 = DAT_002a7ff0;
  fVar13 = DAT_002a7fec;
  fVar27 = DAT_0029f710;
  dVar16 = DAT_0029f138;
  local_80 = param_5;
  local_78 = param_6;
  iVar2 = *(int *)(in_GS_OFFSET + 0x14);
  if (param_1 == 0) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("image != (Image *) NULL","MagickCore/quantum-import.c",0x1123,"ImportRGBOQuantum"
                 );
  }
  if (*(int *)(param_1 + 0x3344) != -0x54535255) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("image->signature == MagickCoreSignature","MagickCore/quantum-import.c",0x1124,
                  "ImportRGBOQuantum");
  }
  uVar22 = *param_2;
  switch(uVar22) {
  case 8:
    if (0 < param_3) {
      iVar20 = *(int *)(param_1 + 0x2a8);
      iVar33 = *(int *)(param_1 + 0x298);
      iVar24 = *(int *)(iVar20 + 8);
      iVar32 = 0;
      iVar6 = *(int *)(iVar20 + 0x14);
      iVar7 = *(int *)(iVar20 + 0x20);
      iVar8 = *(int *)(iVar20 + 0x34);
      uVar22 = param_2[9];
      do {
        bVar12 = *(byte *)((int)param_5 + 1);
        bVar23 = *(byte *)((int)param_5 + 2);
        *(double *)(param_6 + iVar24 * 8) = (double)((float)*(byte *)param_5 * fVar9);
        *(double *)(param_6 + iVar6 * 8) = (double)((float)bVar12 * fVar9);
        *(double *)(param_6 + iVar7 * 8) = (double)((float)bVar23 * fVar9);
        if (iVar8 != 0) {
          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =
               (double)(DAT_0029f710 - (float)*(byte *)((int)param_5 + 3) * fVar9);
        }
        param_5 = (float *)((int)param_5 + uVar22 + 4);
        iVar32 = iVar32 + 1;
        param_6 = param_6 + iVar33 * 8;
      } while (iVar32 != param_3);
    }
    break;
  default:
    local_6c = 0;
    bStack_6b = 0;
    uStack_6a = 0;
    local_68 = 0;
    if (uVar22 != 0) goto LAB_00161285;
    goto LAB_001612bc;
  case 10:
    if (param_2[0xb] == 0) {
      if (0 < param_3) {
        fVar27 = 0.0;
        local_6c = 0;
        bStack_6b = 0;
        uStack_6a = 0;
        iVar20 = *(int *)(param_1 + 0x2a8);
        uVar22 = param_2[9];
        iVar33 = *(int *)(param_1 + 0x298);
        uVar26 = 0;
        do {
          iVar24 = 0;
          uVar29 = uVar26;
code_r0x001620a2:
          if (uVar29 % 3 == 1) {
            uVar26 = (uint)fVar27 >> 6 & 0xffc0;
code_r0x001620cb:
            dVar16 = (double)uVar26;
            if (iVar24 != 2) goto code_r0x001620d7;
code_r0x00162130:
            *(double *)(local_78 + *(int *)(iVar20 + 0x20) * 8) = dVar16;
code_r0x001620f8:
            uVar29 = uVar29 + 1;
            iVar24 = iVar24 + 1;
            goto code_r0x001620a2;
          }
          if (uVar29 % 3 == 2) {
            uVar26 = ((uint)fVar27 & 0xffc) << 4;
            goto code_r0x001620cb;
          }
          pfVar1 = local_80 + 1;
          fVar27 = *local_80;
          if (param_2[0x10] != 1) {
            fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |
                             ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);
          }
          dVar16 = (double)(((uint)fVar27 >> 0x16) << 6);
          local_80 = pfVar1;
          if (iVar24 == 2) goto code_r0x00162130;
code_r0x001620d7:
          uVar26 = uVar29 + 1;
          if (iVar24 != 3) {
            if (iVar24 == 1) {
              *(double *)(local_78 + *(int *)(iVar20 + 0x14) * 8) = dVar16;
            }
            else {
              *(double *)(local_78 + *(int *)(iVar20 + 8) * 8) = dVar16;
              if (iVar24 == 3) goto code_r0x0016217a;
            }
            goto code_r0x001620f8;
          }
          if (*(int *)(iVar20 + 0x34) != 0) {
            *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar16;
          }
code_r0x0016217a:
          iVar24 = CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) + 1;
          local_6c = (byte)iVar24;
          bStack_6b = (byte)((uint)iVar24 >> 8);
          uStack_6a = (ushort)((uint)iVar24 >> 0x10);
          local_80 = (float *)((int)local_80 + uVar22);
          local_78 = local_78 + iVar33 * 8;
        } while (iVar24 != param_3);
      }
    }
    else if (0 < param_3) {
      iVar33 = *(int *)(param_1 + 0x2a8);
      iVar20 = 0;
      iVar24 = *(int *)(iVar33 + 8);
      iVar6 = *(int *)(param_1 + 0x298);
      iVar7 = *(int *)(iVar33 + 0x34);
      iVar8 = *(int *)(iVar33 + 0x20);
      iVar32 = *(int *)(iVar33 + 0x14);
      do {
        uVar29 = 0;
        uVar26 = 10;
        uVar22 = param_2[0x14];
        do {
          if (uVar22 == 0) {
            uVar19 = (uint)*(byte *)local_80;
            local_80 = (float *)((int)local_80 + 1);
            uVar22 = 8;
            param_2[0x13] = uVar19;
          }
          else {
            uVar19 = param_2[0x13];
          }
          uVar18 = uVar22;
          if (uVar26 <= uVar22) {
            uVar18 = uVar26;
          }
          uVar22 = uVar22 - uVar18;
          uVar26 = uVar26 - uVar18;
          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |
                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);
        } while (0 < (int)uVar26);
        param_2[0x14] = uVar22;
        *(double *)(local_78 + iVar24 * 8) = (double)((uVar29 & 0x3ff) << 6);
        uVar29 = 0;
        uVar26 = 10;
        do {
          if (uVar22 == 0) {
            uVar19 = (uint)*(byte *)local_80;
            local_80 = (float *)((int)local_80 + 1);
            uVar22 = 8;
            param_2[0x13] = uVar19;
          }
          else {
            uVar19 = param_2[0x13];
          }
          uVar18 = uVar26;
          if (uVar22 <= uVar26) {
            uVar18 = uVar22;
          }
          uVar22 = uVar22 - uVar18;
          uVar26 = uVar26 - uVar18;
          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |
                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);
        } while (0 < (int)uVar26);
        param_2[0x14] = uVar22;
        *(double *)(local_78 + iVar32 * 8) = (double)((uVar29 & 0x3ff) << 6);
        uVar29 = 0;
        uVar26 = 10;
        do {
          if (uVar22 == 0) {
            uVar19 = (uint)*(byte *)local_80;
            local_80 = (float *)((int)local_80 + 1);
            uVar22 = 8;
            param_2[0x13] = uVar19;
          }
          else {
            uVar19 = param_2[0x13];
          }
          uVar18 = uVar26;
          if (uVar22 <= uVar26) {
            uVar18 = uVar22;
          }
          uVar22 = uVar22 - uVar18;
          uVar26 = uVar26 - uVar18;
          uVar29 = uVar29 << ((byte)uVar18 & 0x1f) |
                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);
        } while (0 < (int)uVar26);
        uVar26 = 0;
        param_2[0x14] = uVar22;
        *(double *)(local_78 + iVar8 * 8) = (double)((uVar29 & 0x3ff) << 6);
        uVar29 = 10;
        do {
          if (uVar22 == 0) {
            uVar19 = (uint)*(byte *)local_80;
            local_80 = (float *)((int)local_80 + 1);
            uVar22 = 8;
            param_2[0x13] = uVar19;
          }
          else {
            uVar19 = param_2[0x13];
          }
          uVar18 = uVar22;
          if (uVar29 <= uVar22) {
            uVar18 = uVar29;
          }
          uVar22 = uVar22 - uVar18;
          uVar29 = uVar29 - uVar18;
          uVar26 = uVar26 << ((byte)uVar18 & 0x1f) |
                   ~(-1 << ((byte)uVar18 & 0x1f)) & uVar19 >> ((byte)uVar22 & 0x1f);
        } while (0 < (int)uVar29);
        param_2[0x14] = uVar22;
        if (iVar7 != 0) {
          *(double *)(local_78 + *(int *)(iVar33 + 0x38) * 8) =
               (double)(DAT_0029f710 - (float)((uVar26 & 0x3ff) << 6));
        }
        iVar20 = iVar20 + 1;
        local_78 = local_78 + iVar6 * 8;
      } while (iVar20 != param_3);
    }
    break;
  case 0x10:
    if (param_2[2] == 1) {
      if (0 < param_3) {
        iVar20 = 0;
        uVar22 = param_2[0x10];
        do {
          if (uVar22 == 1) {
            lVar34 = (longdouble)FUN_00159350();
            fVar27 = DAT_0029f710;
            iVar33 = *(int *)(param_1 + 0x2a8);
            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =
                 (double)((longdouble)DAT_0029f710 * lVar34);
            lVar34 = (longdouble)FUN_00159350();
            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =
                 (double)(lVar34 * (longdouble)fVar27);
            lVar34 = (longdouble)FUN_00159350();
            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =
                 (double)(lVar34 * (longdouble)fVar27);
          }
          else {
            lVar34 = (longdouble)FUN_00159350();
            fVar27 = DAT_0029f710;
            iVar33 = *(int *)(param_1 + 0x2a8);
            *(double *)(param_6 + *(int *)(iVar33 + 8) * 8) =
                 (double)((longdouble)DAT_0029f710 * lVar34);
            lVar34 = (longdouble)FUN_00159350();
            *(double *)(param_6 + *(int *)(iVar33 + 0x14) * 8) =
                 (double)(lVar34 * (longdouble)fVar27);
            lVar34 = (longdouble)FUN_00159350();
            *(double *)(param_6 + *(int *)(iVar33 + 0x20) * 8) =
                 (double)(lVar34 * (longdouble)fVar27);
          }
          lVar34 = (longdouble)FUN_00159350();
          if (*(int *)(iVar33 + 0x34) != 0) {
            *(double *)(param_6 + *(int *)(iVar33 + 0x38) * 8) =
                 (double)((longdouble)DAT_0029f710 - lVar34 * (longdouble)DAT_0029f710);
          }
          iVar20 = iVar20 + 1;
          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;
        } while (iVar20 != param_3);
      }
    }
    else if (0 < param_3) {
      iVar20 = *(int *)(param_1 + 0x2a8);
      uVar22 = param_2[0x10];
      uVar26 = param_2[9];
      iVar33 = *(int *)(param_1 + 0x298);
      iVar24 = *(int *)(iVar20 + 0x14);
      iVar6 = *(int *)(iVar20 + 0x20);
      iVar7 = *(int *)(iVar20 + 8);
      iVar8 = *(int *)(iVar20 + 0x34);
      iVar32 = 0;
      do {
        uVar3 = *(ushort *)(param_5 + 1);
        uVar31 = *(ushort *)((int)param_5 + 6);
        uVar4 = *(ushort *)param_5;
        pdVar21 = (double *)(iVar24 * 8 + param_6);
        uVar5 = *(ushort *)((int)param_5 + 2);
        pdVar28 = (double *)(iVar6 * 8 + param_6);
        pdVar30 = (double *)(iVar7 * 8 + param_6);
        if (uVar22 == 1) {
          *pdVar30 = (double)uVar4;
          *pdVar21 = (double)uVar5;
          *pdVar28 = (double)uVar3;
        }
        else {
          uVar31 = uVar31 << 8 | uVar31 >> 8;
          *pdVar30 = (double)(ushort)(uVar4 << 8 | uVar4 >> 8);
          *pdVar21 = (double)(ushort)(uVar5 << 8 | uVar5 >> 8);
          *pdVar28 = (double)(ushort)(uVar3 << 8 | uVar3 >> 8);
        }
        if (iVar8 != 0) {
          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(fVar27 - (float)uVar31);
        }
        param_5 = (float *)((int)param_5 + uVar26 + 8);
        iVar32 = iVar32 + 1;
        param_6 = param_6 + iVar33 * 8;
      } while (iVar32 != param_3);
    }
    break;
  case 0x18:
    if (param_2[2] == 1) {
      if (0 < param_3) {
        iVar20 = 0;
        do {
          FUN_00159670();
          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) = (double)fStack_2c;
          FUN_00159670();
          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) = (double)fStack_2c;
          FUN_00159670();
          *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) = (double)fStack_2c;
          FUN_00159670();
          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {
            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =
                 (double)(DAT_0029f710 - fStack_2c);
          }
          iVar20 = iVar20 + 1;
          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;
        } while (iVar20 != param_3);
      }
      break;
    }
    goto code_r0x001616dd;
  case 0x20:
    if (param_2[2] == 1) {
      if (0 < param_3) {
        iVar20 = *(int *)(param_1 + 0x2a8);
        local_5c = (double *)0x0;
        uVar22 = param_2[9];
        uVar26 = param_2[0x10];
        iVar33 = *(int *)(param_1 + 0x298);
        do {
          local_64 = *param_5;
          if (uVar26 != 1) {
            local_64 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)param_5 << 0x18) >> 0x10) |
                                                (ushort)*(byte *)((int)param_5 + 1),
                                                *(byte *)((int)param_5 + 2)),
                                       *(byte *)((int)param_5 + 3));
          }
          fVar13 = (local_64 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);
          fVar27 = fVar10;
          if ((fVar10 <= fVar13) && (fVar27 = DAT_002c5828, fVar13 <= DAT_002c5828)) {
            fVar27 = fVar13;
          }
          *(double *)(param_6 + *(int *)(iVar20 + 8) * 8) = (double)fVar27;
          if (uVar26 == 1) {
            fVar27 = param_5[1];
          }
          else {
            fVar27 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 1) << 0x18) >>
                                                      0x10) | (ushort)*(byte *)((int)param_5 + 5),
                                              *(byte *)((int)param_5 + 6)),
                                     *(byte *)((int)param_5 + 7));
          }
          fVar27 = (fVar27 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);
          fVar13 = DAT_002c5824;
          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {
            fVar13 = fVar27;
          }
          *(double *)(param_6 + *(int *)(iVar20 + 0x14) * 8) = (double)fVar13;
          if (uVar26 == 1) {
            local_60 = param_5[2];
          }
          else {
            local_60 = (float)CONCAT31(CONCAT21((ushort)(((uint)*(byte *)(param_5 + 2) << 0x18) >>
                                                        0x10) | (ushort)*(byte *)((int)param_5 + 9),
                                                *(byte *)((int)param_5 + 10)),
                                       *(byte *)((int)param_5 + 0xb));
          }
          fVar27 = (local_60 - (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);
          fVar13 = DAT_002c5824;
          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {
            fVar13 = fVar27;
          }
          *(double *)(param_6 + *(int *)(iVar20 + 0x20) * 8) = (double)fVar13;
          if (uVar26 == 1) {
            fVar27 = param_5[3];
            local_6c = SUB41(fVar27,0);
            bStack_6b = (byte)((uint)fVar27 >> 8);
            uStack_6a = (ushort)((uint)fVar27 >> 0x10);
          }
          else {
            uStack_6a = (ushort)(((uint)*(byte *)(param_5 + 3) << 0x18) >> 0x10) |
                        (ushort)*(byte *)((int)param_5 + 0xd);
            bStack_6b = *(byte *)((int)param_5 + 0xe);
            local_6c = *(byte *)((int)param_5 + 0xf);
          }
          fVar27 = ((float)CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) -
                   (float)*(double *)(param_2 + 3)) * (float)*(double *)(param_2 + 7);
          fVar13 = DAT_002c5824;
          if ((DAT_002c5824 <= fVar27) && (fVar13 = DAT_002c5828, fVar27 <= DAT_002c5828)) {
            fVar13 = fVar27;
          }
          if (*(int *)(iVar20 + 0x34) != 0) {
            *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) = (double)(DAT_0029f710 - fVar13);
          }
          local_5c = (double *)((int)local_5c + 1);
          param_5 = (float *)((int)param_5 + uVar22 + 0x10);
          param_6 = param_6 + iVar33 * 8;
        } while (local_5c != (double *)param_3);
      }
      break;
    }
code_r0x001616dd:
    if (0 < param_3) {
      iVar20 = *(int *)(param_1 + 0x2a8);
      uVar22 = param_2[0x10];
      uVar26 = param_2[9];
      iVar33 = *(int *)(param_1 + 0x298);
      iVar24 = *(int *)(iVar20 + 8);
      iVar6 = *(int *)(iVar20 + 0x14);
      iVar7 = *(int *)(iVar20 + 0x20);
      iVar8 = *(int *)(iVar20 + 0x34);
      iVar32 = 0;
      do {
        fVar17 = DAT_002a7fec;
        fVar27 = param_5[3];
        fVar9 = param_5[1];
        pdVar21 = (double *)(iVar6 * 8 + param_6);
        fVar10 = param_5[2];
        pdVar30 = (double *)(iVar24 * 8 + param_6);
        fVar11 = *param_5;
        pdVar28 = (double *)(iVar7 * 8 + param_6);
        if (uVar22 == 1) {
          *pdVar30 = (double)((float)(uint)fVar11 / DAT_002a7fec);
          *pdVar21 = (double)((float)(uint)fVar9 / fVar17);
          *pdVar28 = (double)((float)(uint)fVar10 / fVar17);
        }
        else {
          uVar3 = (ushort)((uint)fVar11 >> 8);
          uStack_6a = uVar3 & 0xff | (ushort)((uint)((int)fVar11 << 0x18) >> 0x10);
          fVar27 = (float)((uint)fVar27 >> 0x18 | ((uint)fVar27 & 0xff0000) >> 8 |
                           ((uint)fVar27 & 0xff00) << 8 | (int)fVar27 << 0x18);
          *pdVar30 = (double)((float)CONCAT22(uStack_6a,
                                              (ushort)(byte)((uint)fVar11 >> 0x18) | uVar3 & 0xff00)
                             / fVar13);
          *pdVar21 = (double)((float)((uint)fVar9 >> 0x18 | ((uint)fVar9 & 0xff0000) >> 8 |
                                      ((uint)fVar9 & 0xff00) << 8 | (int)fVar9 << 0x18) / fVar13);
          *pdVar28 = (double)((float)((uint)fVar10 >> 0x18 | ((uint)fVar10 & 0xff0000) >> 8 |
                                      ((uint)fVar10 & 0xff00) << 8 | (int)fVar10 << 0x18) / fVar13);
        }
        if (iVar8 != 0) {
          *(double *)(param_6 + *(int *)(iVar20 + 0x38) * 8) =
               (double)(DAT_0029f710 - (float)(uint)fVar27 / DAT_002a7fec);
        }
        param_5 = (float *)((int)param_5 + uVar26 + 0x10);
        iVar32 = iVar32 + 1;
        param_6 = param_6 + iVar33 * 8;
      } while (iVar32 != param_3);
    }
    break;
  case 0x40:
    if (param_2[2] == 1) {
      if (0 < param_3) {
        iVar20 = 0;
        do {
          FUN_00159410();
          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 8) * 8) =
               CONCAT44(uStack_28,fStack_2c);
          FUN_00159410();
          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x14) * 8) =
               CONCAT44(uStack_28,fStack_2c);
          FUN_00159410();
          *(ulonglong *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x20) * 8) =
               CONCAT44(uStack_28,fStack_2c);
          FUN_00159410();
          if (*(int *)(*(int *)(param_1 + 0x2a8) + 0x34) != 0) {
            *(double *)(param_6 + *(int *)(*(int *)(param_1 + 0x2a8) + 0x38) * 8) =
                 (double)(DAT_0029f710 - (float)(double)CONCAT44(uStack_28,fStack_2c));
          }
          iVar20 = iVar20 + 1;
          param_6 = param_6 + *(int *)(param_1 + 0x298) * 8;
        } while (iVar20 != param_3);
      }
      break;
    }
LAB_00161285:
    uVar26 = 0;
    if (uVar22 < 0x41) {
      uVar26 = uVar22;
    }
    bVar23 = (byte)(uVar26 - 1);
    bVar12 = bVar23 & 0x1f;
    uVar18 = 2 << (bVar23 & 0x1f);
    uVar19 = uVar18;
    uVar29 = 0 << bVar12 | 2U >> 0x20 - bVar12;
    if ((uVar26 - 1 & 0x20) != 0) {
      uVar19 = 0;
      uVar29 = uVar18;
    }
    iVar20 = uVar19 - 1;
    local_68 = (uVar29 - 1) + (uint)(uVar19 != 0);
    local_6c = (byte)iVar20;
    bStack_6b = (byte)((uint)iVar20 >> 8);
    uStack_6a = (ushort)((uint)iVar20 >> 0x10);
LAB_001612bc:
    if (0 < param_3) {
      iVar20 = *(int *)(param_1 + 0x2a8);
      local_64 = 0.0;
      iVar33 = *(int *)(iVar20 + 8);
      iVar24 = *(int *)(iVar20 + 0x14);
      iVar6 = *(int *)(param_1 + 0x298);
      do {
        pdVar28 = (double *)(iVar33 * 8 + local_78);
        pdVar21 = (double *)(local_78 + iVar24 * 8);
        if ((int)uVar22 < 1) {
          fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));
          if (local_68 < 0) {
            fVar27 = fVar27 + DAT_0029f714;
          }
          local_3c = (double)fVar27;
          if (local_3c < dVar16) {
            *pdVar28 = 0.0;
          }
          else {
            dVar15 = 0.0;
LAB_00161f72:
            *pdVar28 = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;
            if (0 < (int)uVar22) goto LAB_00161938;
          }
          dVar15 = 0.0;
          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);
LAB_00161a0c:
          dVar14 = DAT_0029f738;
          if (DAT_0029f138 <= local_3c) {
            dVar14 = (double)DAT_0029f718 / local_3c;
          }
          *pdVar21 = dVar14 * dVar15 * (double)DAT_0029f710;
          if (0 < (int)uVar22) goto LAB_00161a4a;
          if (DAT_0029f138 <= local_3c) {
            dVar15 = 0.0;
            goto LAB_00161ed0;
          }
          *local_5c = 0.0;
          dVar15 = 0.0;
LAB_00161c0a:
          dVar14 = DAT_0029f738;
          if (DAT_0029f138 <= local_3c) {
LAB_00161f00:
            dVar14 = (double)DAT_0029f718 / local_3c;
          }
          dVar15 = dVar14 * dVar15 * (double)DAT_0029f710;
        }
        else {
          uVar19 = 0;
          uVar26 = param_2[0x14];
          uVar29 = uVar22;
          do {
            if (uVar26 == 0) {
              uVar18 = (uint)*(byte *)local_80;
              local_80 = (float *)((int)local_80 + 1);
              param_2[0x13] = uVar18;
              uVar26 = 8;
            }
            else {
              uVar18 = param_2[0x13];
            }
            uVar25 = uVar26;
            if (uVar29 <= uVar26) {
              uVar25 = uVar29;
            }
            uVar26 = uVar26 - uVar25;
            uVar29 = uVar29 - uVar25;
            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |
                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);
          } while (0 < (int)uVar29);
          param_2[0x14] = uVar26;
          if ((local_68 == 0) && (CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)) < uVar19)) {
            *pdVar28 = (double)DAT_0029f710;
          }
          else {
            dVar15 = (double)uVar19;
            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));
            if (local_68 < 0) {
              fVar27 = fVar27 + DAT_0029f714;
            }
            local_3c = (double)fVar27;
            if (DAT_0029f138 <= local_3c) goto LAB_00161f72;
            *pdVar28 = dVar15 * DAT_0029f738 * (double)DAT_0029f710;
          }
LAB_00161938:
          uVar19 = 0;
          uVar26 = param_2[0x14];
          uVar29 = uVar22;
          do {
            if (uVar26 == 0) {
              uVar18 = (uint)*(byte *)local_80;
              local_80 = (float *)((int)local_80 + 1);
              uVar26 = 8;
              param_2[0x13] = uVar18;
            }
            else {
              uVar18 = param_2[0x13];
            }
            uVar25 = uVar26;
            if (uVar29 <= uVar26) {
              uVar25 = uVar29;
            }
            uVar26 = uVar26 - uVar25;
            uVar29 = uVar29 - uVar25;
            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |
                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);
          } while (0 < (int)uVar29);
          param_2[0x14] = uVar26;
          local_5c = (double *)(local_78 + *(int *)(iVar20 + 0x20) * 8);
          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {
            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));
            if (local_68 < 0) {
              fVar27 = fVar27 + DAT_0029f714;
            }
            local_3c = (double)fVar27;
            dVar15 = (double)uVar19;
            goto LAB_00161a0c;
          }
          *pdVar21 = (double)DAT_0029f710;
LAB_00161a4a:
          uVar19 = 0;
          uVar26 = param_2[0x14];
          uVar29 = uVar22;
          do {
            if (uVar26 == 0) {
              uVar18 = (uint)*(byte *)local_80;
              local_80 = (float *)((int)local_80 + 1);
              param_2[0x13] = uVar18;
              uVar26 = 8;
            }
            else {
              uVar18 = param_2[0x13];
            }
            uVar25 = uVar29;
            if (uVar26 <= uVar29) {
              uVar25 = uVar26;
            }
            uVar26 = uVar26 - uVar25;
            uVar29 = uVar29 - uVar25;
            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |
                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);
          } while (0 < (int)uVar29);
          param_2[0x14] = uVar26;
          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {
            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));
            if (local_68 < 0) {
              fVar27 = fVar27 + DAT_0029f714;
            }
            local_3c = (double)fVar27;
            dVar15 = (double)uVar19;
            if (local_3c < DAT_0029f138) {
              *local_5c = dVar15 * DAT_0029f738 * (double)DAT_0029f710;
              if ((int)uVar22 < 1) {
                dVar15 = 0.0;
                goto LAB_00161c0a;
              }
              goto LAB_00161b52;
            }
LAB_00161ed0:
            *local_5c = ((double)DAT_0029f718 / local_3c) * dVar15 * (double)DAT_0029f710;
            if (0 < (int)uVar22) goto LAB_00161b52;
            dVar15 = 0.0;
            goto LAB_00161f00;
          }
          *local_5c = (double)DAT_0029f710;
LAB_00161b52:
          uVar19 = 0;
          uVar26 = param_2[0x14];
          uVar29 = uVar22;
          do {
            if (uVar26 == 0) {
              uVar18 = (uint)*(byte *)local_80;
              local_80 = (float *)((int)local_80 + 1);
              uVar26 = 8;
              param_2[0x13] = uVar18;
            }
            else {
              uVar18 = param_2[0x13];
            }
            uVar25 = uVar29;
            if (uVar26 <= uVar29) {
              uVar25 = uVar26;
            }
            uVar26 = uVar26 - uVar25;
            uVar29 = uVar29 - uVar25;
            uVar19 = uVar19 << ((byte)uVar25 & 0x1f) |
                     ~(-1 << ((byte)uVar25 & 0x1f)) & uVar18 >> ((byte)uVar26 & 0x1f);
          } while (0 < (int)uVar29);
          param_2[0x14] = uVar26;
          if ((local_68 != 0) || (uVar19 <= CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)))) {
            fVar27 = (float)CONCAT44(local_68,CONCAT22(uStack_6a,CONCAT11(bStack_6b,local_6c)));
            if (local_68 < 0) {
              fVar27 = fVar27 + DAT_0029f714;
            }
            local_3c = (double)fVar27;
            dVar15 = (double)uVar19;
            goto LAB_00161c0a;
          }
          dVar15 = (double)DAT_0029f710;
        }
        if (*(int *)(iVar20 + 0x34) != 0) {
          *(double *)(local_78 + *(int *)(iVar20 + 0x38) * 8) = (double)DAT_0029f710 - dVar15;
        }
        local_64 = (float)((int)local_64 + 1);
        local_78 = local_78 + iVar6 * 8;
      } while (local_64 != (float)param_3);
    }
  }
  if (iVar2 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_0029eab0();
  }
  return;
}

