
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* 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 */
/* WARNING: Enum "ExceptionType": Some values do not have unique names */

void ExportGrayAlphaQuantum
               (Image *image,QuantumInfo *quantum_info,MagickSizeType number_pixels,Quantum *p,
               uchar *q,ExceptionInfo *exception)

{
  byte *pbVar1;
  bool bVar2;
  size_t sVar3;
  size_t sVar4;
  PixelChannelMap *pPVar5;
  double dVar6;
  double dVar7;
  bool bVar8;
  double dVar9;
  double dVar10;
  double dVar11;
  double dVar12;
  double dVar13;
  double dVar14;
  float fVar15;
  float fVar16;
  float fVar17;
  double dVar18;
  byte bVar19;
  byte bVar20;
  uchar uVar21;
  ushort uVar22;
  undefined2 uVar23;
  uchar uVar25;
  undefined4 uVar24;
  ulong uVar26;
  ulong uVar27;
  uchar uVar28;
  uint uVar33;
  size_t sVar34;
  ulong uVar35;
  ulong uVar36;
  long lVar37;
  ulong uVar38;
  MagickSizeType MVar39;
  bool bVar40;
  Quantum QVar41;
  float fVar42;
  float fVar43;
  uchar uVar29;
  uchar uVar30;
  uchar uVar31;
  uchar uVar32;
  
  dVar18 = DAT_0042f2e8;
  fVar17 = DAT_0041abe0;
  fVar16 = DAT_0041abdc;
  fVar15 = DAT_0041abd8;
  dVar14 = DAT_00404938;
  dVar13 = DAT_00404930;
  dVar12 = DAT_00404928;
  dVar7 = DAT_00404920;
  fVar42 = _DAT_003fa400;
  dVar11 = DAT_003fa3a0;
  dVar10 = DAT_003f9c40;
  dVar9 = DAT_003f9c28;
  dVar6 = DAT_003f95f8;
  if (exception == (ExceptionInfo *)0x0) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x89f,
                  "ExportGrayAlphaQuantum");
  }
  if (exception->signature != 0xabacadab) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x8a0,
                  "ExportGrayAlphaQuantum");
  }
  uVar36 = quantum_info->depth;
  if (uVar36 == 8) {
    MVar39 = 0;
    if ((long)number_pixels < 1) {
      return;
    }
    do {
      pPVar5 = image->channel_map;
      fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +
               fVar17 * p[pPVar5[2].offset];
      if (NAN(fVar42)) {
        uVar21 = '\0';
      }
      else {
        uVar21 = '\0';
        if ((0.0 < fVar42) && (dVar6 = (double)fVar42 / dVar13, uVar21 = 0xff, dVar6 < dVar14)) {
          uVar21 = (uchar)(int)(dVar6 + dVar9);
        }
      }
      *q = uVar21;
      uVar21 = 0xff;
      if (image->channel_map[4].traits != UndefinedPixelTrait) {
        fVar42 = p[image->channel_map[4].offset];
        if (NAN(fVar42)) {
          uVar21 = '\0';
        }
        else {
          uVar21 = '\0';
          if ((0.0 < fVar42) && (uVar21 = 0xff, (double)fVar42 / DAT_00404930 < DAT_00404938)) {
            uVar21 = (uchar)(int)((double)fVar42 / DAT_00404930 + DAT_003f9c28);
          }
        }
      }
      q[1] = uVar21;
      p = p + image->number_channels;
      q = q + quantum_info->pad + 2;
      MVar39 = MVar39 + 1;
    } while (MVar39 != number_pixels);
    return;
  }
  if (uVar36 < 9) {
    if (uVar36 == 1) {
      bVar40 = quantum_info->min_is_white == MagickFalse;
      bVar8 = !bVar40;
      if (number_pixels != 3 && -1 < (long)(number_pixels - 3)) {
        pbVar1 = q + (number_pixels - 4 >> 2) + 1;
        do {
          *q = 0;
          pPVar5 = image->channel_map;
          uVar33 = (uint)bVar40;
          if (DAT_003fc580 <
              fVar17 * p[pPVar5[2].offset] +
              fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset]) {
            uVar33 = (uint)bVar8;
          }
          bVar20 = (byte)(uVar33 << 7);
          *q = bVar20;
          bVar19 = 0x40;
          if (image->channel_map[4].traits != UndefinedPixelTrait) {
            if (p[image->channel_map[4].offset] == _DAT_003fa400) {
              bVar19 = 0x40;
            }
            else {
              bVar19 = 0;
            }
          }
          bVar19 = bVar19 | bVar20;
          *q = bVar19;
          sVar34 = image->number_channels;
          pPVar5 = image->channel_map;
          uVar33 = (uint)bVar40;
          if (DAT_003fc580 <
              fVar17 * p[sVar34 + pPVar5[2].offset] +
              fVar15 * p[sVar34 + pPVar5->offset] + fVar16 * p[sVar34 + pPVar5[1].offset]) {
            uVar33 = (uint)bVar8;
          }
          bVar19 = bVar19 | (byte)(uVar33 << 5);
          *q = bVar19;
          bVar20 = 0x10;
          if (image->channel_map[4].traits != UndefinedPixelTrait) {
            if (p[sVar34 + image->channel_map[4].offset] == _DAT_003fa400) {
              bVar20 = 0x10;
            }
            else {
              bVar20 = 0;
            }
          }
          bVar19 = bVar19 | bVar20;
          *q = bVar19;
          sVar4 = image->number_channels;
          pPVar5 = image->channel_map;
          bVar2 = bVar40;
          if (DAT_003fc580 <
              fVar17 * p[sVar34 + sVar4 + pPVar5[2].offset] +
              fVar15 * p[sVar34 + sVar4 + pPVar5->offset] +
              fVar16 * p[sVar34 + sVar4 + pPVar5[1].offset]) {
            bVar2 = bVar8;
          }
          bVar19 = bVar19 | bVar2 * '\b';
          *q = bVar19;
          bVar20 = 4;
          if (image->channel_map[4].traits != UndefinedPixelTrait) {
            if (p[sVar34 + sVar4 + image->channel_map[4].offset] == _DAT_003fa400) {
              bVar20 = 4;
            }
            else {
              bVar20 = 0;
            }
          }
          bVar19 = bVar19 | bVar20;
          *q = bVar19;
          sVar3 = image->number_channels;
          pPVar5 = image->channel_map;
          bVar2 = bVar8;
          if (DAT_0041abe0 * p[sVar34 + sVar4 + sVar3 + pPVar5[2].offset] +
              DAT_0041abd8 * p[sVar34 + sVar4 + sVar3 + pPVar5->offset] +
              DAT_0041abdc * p[sVar34 + sVar4 + sVar3 + pPVar5[1].offset] <= DAT_003fc580) {
            bVar2 = bVar40;
          }
          bVar19 = bVar19 | bVar2 * '\x02';
          *q = bVar19;
          QVar41 = _DAT_003fa400;
          if (image->channel_map[4].traits != UndefinedPixelTrait) {
            QVar41 = p[sVar34 + sVar4 + sVar3 + image->channel_map[4].offset];
          }
          *q = bVar19 | QVar41 == _DAT_003fa400;
          p = p + sVar34 + sVar4 + sVar3 + image->number_channels;
          q = q + 1;
        } while (q != pbVar1);
      }
      if ((number_pixels & 3) == 0) {
        return;
      }
      *q = 0;
      fVar17 = DAT_0041abe0;
      fVar16 = DAT_0041abdc;
      fVar15 = DAT_0041abd8;
      fVar42 = _DAT_003fa400;
      bVar19 = 7;
      lVar37 = 0;
      do {
        pPVar5 = image->channel_map;
        bVar2 = bVar40;
        if (DAT_003fc580 <
            fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] + fVar17 * p[pPVar5[2].offset]
           ) {
          bVar2 = bVar8;
        }
        bVar20 = bVar2 << (bVar19 & 0x1f) | *q;
        *q = bVar20;
        QVar41 = fVar42;
        if (image->channel_map[4].traits != UndefinedPixelTrait) {
          QVar41 = p[image->channel_map[4].offset];
        }
        uVar33 = (uint)(!NAN(QVar41) && !NAN(_DAT_003fa400));
        if (QVar41 != _DAT_003fa400) {
          uVar33 = 0;
        }
        *q = (byte)(uVar33 << (bVar19 - 1 & 0x1f)) | bVar20;
        p = p + image->number_channels;
        lVar37 = lVar37 + 2;
        bVar19 = bVar19 - 2;
      } while (lVar37 <= (long)(ulong)((uint)number_pixels & 3));
      return;
    }
    if (uVar36 == 4) {
      pbVar1 = q + number_pixels;
      if ((long)number_pixels < 1) {
        return;
      }
      do {
        pPVar5 = image->channel_map;
        fVar43 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +
                 fVar17 * p[pPVar5[2].offset];
        if (NAN(fVar43)) {
          bVar19 = 0;
        }
        else {
          bVar19 = 0;
          if (0.0 < fVar43) {
            dVar6 = (double)fVar43 / dVar13;
            bVar19 = 0xff;
            if (dVar6 < dVar14) {
              bVar19 = (byte)(int)(dVar6 + dVar9);
            }
          }
        }
        *q = bVar19 & 0xf0;
        QVar41 = fVar42;
        if (image->channel_map[4].traits != UndefinedPixelTrait) {
          QVar41 = p[image->channel_map[4].offset];
        }
        *q = bVar19 & 0xf0 | (byte)(int)((double)QVar41 * dVar18 + dVar9) & 0xf;
        p = p + image->number_channels;
        q = q + 1;
      } while (q != pbVar1);
      return;
    }
LAB_002734da:
    uVar38 = 0;
    if (uVar36 == 0) goto LAB_002734e9;
  }
  else {
    if (uVar36 == 0x20) {
      if (quantum_info->format == FloatingPointQuantumFormat) {
        if ((long)number_pixels < 1) {
          return;
        }
        MVar39 = 0;
        do {
          pPVar5 = image->channel_map;
          fVar43 = (float)((double)(fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +
                                   fVar17 * p[pPVar5[2].offset]) *
                           (quantum_info->state).inverse_scale + quantum_info->minimum);
          uVar25 = (uchar)((uint)fVar43 >> 8);
          uVar31 = (uchar)((uint)fVar43 >> 0x10);
          uVar21 = (uchar)((uint)fVar43 >> 0x18);
          if (quantum_info->endian == LSBEndian) {
            *q = SUB41(fVar43,0);
            q[1] = uVar25;
            q[2] = uVar31;
            q[3] = uVar21;
          }
          else {
            *q = uVar21;
            q[1] = uVar31;
            q[2] = uVar25;
            q[3] = SUB41(fVar43,0);
          }
          QVar41 = fVar42;
          if (image->channel_map[4].traits != UndefinedPixelTrait) {
            QVar41 = p[image->channel_map[4].offset];
          }
          fVar43 = (float)((double)QVar41 * (quantum_info->state).inverse_scale +
                          quantum_info->minimum);
          uVar21 = (uchar)((uint)fVar43 >> 8);
          uVar25 = (uchar)((uint)fVar43 >> 0x10);
          uVar31 = (uchar)((uint)fVar43 >> 0x18);
          if (quantum_info->endian == LSBEndian) {
            q[4] = SUB41(fVar43,0);
            q[5] = uVar21;
            q[6] = uVar25;
            q[7] = uVar31;
          }
          else {
            q[4] = uVar31;
            q[5] = uVar25;
            q[6] = uVar21;
            q[7] = SUB41(fVar43,0);
          }
          p = p + image->number_channels;
          q = q + quantum_info->pad + 8;
          MVar39 = MVar39 + 1;
        } while (MVar39 != number_pixels);
        return;
      }
      MVar39 = 0;
      if ((long)number_pixels < 1) {
        return;
      }
      do {
        pPVar5 = image->channel_map;
        fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +
                 fVar17 * p[pPVar5[2].offset];
        if (NAN(fVar42)) {
          uVar24 = 0;
        }
        else {
          uVar24 = 0;
          if ((0.0 < fVar42) && (uVar24 = 0xffffffff, (double)fVar42 * dVar7 < dVar12)) {
            uVar24 = (undefined4)(long)((double)fVar42 * dVar7 + dVar9);
          }
        }
        uVar21 = (uchar)((uint)uVar24 >> 8);
        uVar25 = (uchar)((uint)uVar24 >> 0x10);
        uVar31 = (uchar)((uint)uVar24 >> 0x18);
        if (quantum_info->endian == LSBEndian) {
          *q = (uchar)uVar24;
          q[1] = uVar21;
          q[2] = uVar25;
          q[3] = uVar31;
        }
        else {
          *q = uVar31;
          q[1] = uVar25;
          q[2] = uVar21;
          q[3] = (uchar)uVar24;
        }
        uVar24 = 0xffffffff;
        if (image->channel_map[4].traits != UndefinedPixelTrait) {
          fVar42 = p[image->channel_map[4].offset];
          if (NAN(fVar42)) {
            uVar24 = 0;
          }
          else {
            uVar24 = 0;
            if ((0.0 < fVar42) &&
               (uVar24 = 0xffffffff, (double)fVar42 * DAT_00404920 < DAT_00404928)) {
              uVar24 = (int)(long)((double)fVar42 * DAT_00404920 + DAT_003f9c28);
            }
          }
        }
        uVar21 = (uchar)((uint)uVar24 >> 8);
        uVar25 = (uchar)((uint)uVar24 >> 0x10);
        uVar31 = (uchar)((uint)uVar24 >> 0x18);
        if (quantum_info->endian == LSBEndian) {
          q[4] = (uchar)uVar24;
          q[5] = uVar21;
          q[6] = uVar25;
          q[7] = uVar31;
        }
        else {
          q[4] = uVar31;
          q[5] = uVar25;
          q[6] = uVar21;
          q[7] = (uchar)uVar24;
        }
        p = p + image->number_channels;
        q = q + quantum_info->pad + 8;
        MVar39 = MVar39 + 1;
      } while (MVar39 != number_pixels);
      return;
    }
    if (uVar36 != 0x40) {
      if (uVar36 == 0x10) {
        if (quantum_info->format == FloatingPointQuantumFormat) {
          if ((long)number_pixels < 1) {
            return;
          }
          MVar39 = 0;
          do {
            pPVar5 = image->channel_map;
            uVar22 = SinglePrecisionToHalf
                               ((float)((double)(DAT_0041abdc * p[pPVar5[1].offset] +
                                                 DAT_0041abd8 * p[pPVar5->offset] +
                                                DAT_0041abe0 * p[pPVar5[2].offset]) * DAT_003f9c60))
            ;
            uVar21 = (uchar)(uVar22 >> 8);
            if (quantum_info->endian == LSBEndian) {
              *q = (uchar)uVar22;
              q[1] = uVar21;
            }
            else {
              *q = uVar21;
              q[1] = (uchar)uVar22;
            }
            QVar41 = _DAT_003fa400;
            if (image->channel_map[4].traits != UndefinedPixelTrait) {
              QVar41 = p[image->channel_map[4].offset];
            }
            uVar22 = SinglePrecisionToHalf((float)((double)QVar41 * DAT_003f9c60));
            uVar21 = (uchar)(uVar22 >> 8);
            if (quantum_info->endian == LSBEndian) {
              q[2] = (uchar)uVar22;
              q[3] = uVar21;
            }
            else {
              q[2] = uVar21;
              q[3] = (uchar)uVar22;
            }
            p = p + image->number_channels;
            q = q + quantum_info->pad + 4;
            MVar39 = MVar39 + 1;
          } while (MVar39 != number_pixels);
          return;
        }
        MVar39 = 0;
        if ((long)number_pixels < 1) {
          return;
        }
        do {
          pPVar5 = image->channel_map;
          fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +
                   fVar17 * p[pPVar5[2].offset];
          if (NAN(fVar42)) {
            uVar23 = 0;
          }
          else {
            uVar23 = 0;
            if ((0.0 < fVar42) && (uVar23 = 0xffff, fVar42 < _DAT_003fa400)) {
              uVar23 = (undefined2)(int)((double)fVar42 + dVar9);
            }
          }
          uVar21 = (uchar)((ushort)uVar23 >> 8);
          if (quantum_info->endian == LSBEndian) {
            *q = (uchar)uVar23;
            q[1] = uVar21;
          }
          else {
            *q = uVar21;
            q[1] = (uchar)uVar23;
          }
          uVar23 = 0xffff;
          if (image->channel_map[4].traits != UndefinedPixelTrait) {
            fVar42 = p[image->channel_map[4].offset];
            if (NAN(fVar42)) {
              uVar23 = 0;
            }
            else {
              uVar23 = 0;
              if ((0.0 < fVar42) && (uVar23 = 0xffff, fVar42 < _DAT_003fa400)) {
                uVar23 = (short)(int)((double)fVar42 + dVar9);
              }
            }
          }
          uVar21 = (uchar)((ushort)uVar23 >> 8);
          if (quantum_info->endian == LSBEndian) {
            q[2] = (uchar)uVar23;
            q[3] = uVar21;
          }
          else {
            q[2] = uVar21;
            q[3] = (uchar)uVar23;
          }
          p = p + image->number_channels;
          q = q + quantum_info->pad + 4;
          MVar39 = MVar39 + 1;
        } while (MVar39 != number_pixels);
        return;
      }
      goto LAB_002734da;
    }
    if (quantum_info->format == FloatingPointQuantumFormat) {
      if ((long)number_pixels < 1) {
        return;
      }
      MVar39 = 0;
      do {
        pPVar5 = image->channel_map;
        dVar6 = (double)(fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +
                        fVar17 * p[pPVar5[2].offset]) * (quantum_info->state).inverse_scale +
                quantum_info->minimum;
        uVar25 = (uchar)((ulong)dVar6 >> 8);
        uVar28 = (uchar)((ulong)dVar6 >> 0x10);
        uVar29 = (uchar)((ulong)dVar6 >> 0x18);
        uVar30 = (uchar)((ulong)dVar6 >> 0x20);
        uVar31 = (uchar)((ulong)dVar6 >> 0x28);
        uVar32 = (uchar)((ulong)dVar6 >> 0x30);
        uVar21 = (uchar)((ulong)dVar6 >> 0x38);
        if (quantum_info->endian == LSBEndian) {
          *q = SUB81(dVar6,0);
          q[1] = uVar25;
          q[2] = uVar28;
          q[3] = uVar29;
          q[4] = uVar30;
          q[5] = uVar31;
          q[6] = uVar32;
          q[7] = uVar21;
        }
        else {
          *q = uVar21;
          q[1] = uVar32;
          q[2] = uVar31;
          q[3] = uVar30;
          q[4] = uVar29;
          q[5] = uVar28;
          q[6] = uVar25;
          q[7] = SUB81(dVar6,0);
        }
        QVar41 = fVar42;
        if (image->channel_map[4].traits != UndefinedPixelTrait) {
          QVar41 = p[image->channel_map[4].offset];
        }
        dVar6 = (double)QVar41 * (quantum_info->state).inverse_scale + quantum_info->minimum;
        uVar21 = (uchar)((ulong)dVar6 >> 8);
        uVar25 = (uchar)((ulong)dVar6 >> 0x10);
        uVar31 = (uchar)((ulong)dVar6 >> 0x18);
        uVar32 = (uchar)((ulong)dVar6 >> 0x20);
        uVar30 = (uchar)((ulong)dVar6 >> 0x28);
        uVar29 = (uchar)((ulong)dVar6 >> 0x30);
        uVar28 = (uchar)((ulong)dVar6 >> 0x38);
        if (quantum_info->endian == LSBEndian) {
          q[8] = SUB81(dVar6,0);
          q[9] = uVar21;
          q[10] = uVar25;
          q[0xb] = uVar31;
          q[0xc] = uVar32;
          q[0xd] = uVar30;
          q[0xe] = uVar29;
          q[0xf] = uVar28;
        }
        else {
          q[8] = uVar28;
          q[9] = uVar29;
          q[10] = uVar30;
          q[0xb] = uVar32;
          q[0xc] = uVar31;
          q[0xd] = uVar25;
          q[0xe] = uVar21;
          q[0xf] = SUB81(dVar6,0);
        }
        p = p + image->number_channels;
        q = q + quantum_info->pad + 0x10;
        MVar39 = MVar39 + 1;
      } while (MVar39 != number_pixels);
      return;
    }
  }
  if (0x40 < uVar36) {
    uVar36 = 0;
  }
  uVar38 = (2L << ((char)uVar36 - 1U & 0x3f)) - 1;
LAB_002734e9:
  if (0 < (long)number_pixels) {
    MVar39 = 0;
    do {
      pPVar5 = image->channel_map;
      fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +
               fVar17 * p[pPVar5[2].offset];
      if (NAN(fVar42)) {
        uVar36 = 0;
      }
      else {
        uVar36 = 0;
        if (0.0 < fVar42) {
          dVar7 = ((double)fVar42 * (double)uVar38) / dVar6;
          uVar36 = 0xffffffffffffffff;
          if (dVar7 < dVar11) {
            dVar7 = dVar7 + dVar9;
            if (dVar10 <= dVar7) {
              uVar36 = (long)(dVar7 - dVar10) ^ 0x8000000000000000;
            }
            else {
              uVar36 = (ulong)dVar7;
            }
          }
        }
      }
      if ((quantum_info->state).bits == 0) {
        (quantum_info->state).bits = 8;
      }
      sVar34 = quantum_info->depth;
      if (0 < (long)sVar34) {
        uVar27 = (quantum_info->state).bits;
        do {
          uVar26 = sVar34;
          if (uVar27 <= sVar34) {
            uVar26 = uVar27;
          }
          uVar35 = sVar34 - uVar26;
          sVar34 = 0;
          if (-1 < (long)uVar35) {
            sVar34 = uVar35;
          }
          if (uVar27 == 8) {
            *q = 0;
          }
          uVar27 = uVar27 - uVar26;
          *q = *q | (byte)((~(-1L << ((byte)uVar26 & 0x3f)) & uVar36 >> ((byte)sVar34 & 0x3f)) <<
                          ((byte)uVar27 & 0x3f));
          if (uVar27 == 0) {
            q = q + 1;
            uVar27 = 8;
          }
        } while (0 < (long)uVar35);
        (quantum_info->state).bits = uVar27;
      }
      fVar42 = _DAT_003fa400;
      if (image->channel_map[4].traits == UndefinedPixelTrait) {
LAB_002745f5:
        dVar7 = ((double)fVar42 * (double)uVar38) / DAT_003f95f8;
        uVar36 = 0xffffffffffffffff;
        if (dVar7 < DAT_003fa3a0) {
          dVar7 = dVar7 + DAT_003f9c28;
          if (DAT_003f9c40 <= dVar7) {
            uVar36 = (long)(dVar7 - DAT_003f9c40) ^ 0x8000000000000000;
          }
          else {
            uVar36 = (ulong)dVar7;
          }
        }
      }
      else {
        fVar42 = p[image->channel_map[4].offset];
        if (NAN(fVar42)) {
          uVar36 = 0;
        }
        else {
          uVar36 = 0;
          if (0.0 < fVar42) goto LAB_002745f5;
        }
      }
      if ((quantum_info->state).bits == 0) {
        (quantum_info->state).bits = 8;
      }
      sVar34 = quantum_info->depth;
      if (0 < (long)sVar34) {
        uVar27 = (quantum_info->state).bits;
        do {
          uVar26 = sVar34;
          if (uVar27 <= sVar34) {
            uVar26 = uVar27;
          }
          uVar35 = sVar34 - uVar26;
          sVar34 = 0;
          if (-1 < (long)uVar35) {
            sVar34 = uVar35;
          }
          if (uVar27 == 8) {
            *q = 0;
          }
          uVar27 = uVar27 - uVar26;
          *q = *q | (byte)((~(-1L << ((byte)uVar26 & 0x3f)) & uVar36 >> ((byte)sVar34 & 0x3f)) <<
                          ((byte)uVar27 & 0x3f));
          if (uVar27 == 0) {
            q = q + 1;
            uVar27 = 8;
          }
        } while (0 < (long)uVar35);
        (quantum_info->state).bits = uVar27;
      }
      p = p + image->number_channels;
      q = q + quantum_info->pad;
      MVar39 = MVar39 + 1;
    } while (number_pixels != MVar39);
  }
  return;
}



/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_00273473(long param_1,ulong *param_2,ulong param_3,long param_4,byte *param_5,long param_6)

{
  byte *pbVar1;
  bool bVar2;
  long lVar3;
  double dVar4;
  double dVar5;
  bool bVar6;
  double dVar7;
  double dVar8;
  double dVar9;
  double dVar10;
  double dVar11;
  double dVar12;
  float fVar13;
  float fVar14;
  float fVar15;
  double dVar16;
  byte bVar17;
  byte bVar18;
  undefined2 uVar19;
  undefined4 uVar20;
  ulong uVar21;
  ulong uVar22;
  byte bVar23;
  uint uVar28;
  ulong uVar29;
  ulong uVar30;
  ulong uVar31;
  long lVar32;
  ulong uVar33;
  ulong uVar34;
  bool bVar35;
  float fVar36;
  float fVar37;
  byte bVar24;
  byte bVar25;
  byte bVar26;
  byte bVar27;
  
  dVar16 = DAT_0042f2e8;
  fVar15 = DAT_0041abe0;
  fVar14 = DAT_0041abdc;
  fVar13 = DAT_0041abd8;
  dVar12 = DAT_00404938;
  dVar11 = DAT_00404930;
  dVar10 = DAT_00404928;
  dVar5 = DAT_00404920;
  fVar36 = _DAT_003fa400;
  dVar9 = DAT_003fa3a0;
  dVar8 = DAT_003f9c40;
  dVar7 = DAT_003f9c28;
  dVar4 = DAT_003f95f8;
  if (param_6 == 0) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x89f,
                  "ExportGrayAlphaQuantum");
  }
  if (*(long *)(param_6 + 0x30) != 0xabacadab) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x8a0,
                  "ExportGrayAlphaQuantum");
  }
  uVar34 = *param_2;
  if (uVar34 == 8) {
    uVar34 = 0;
    if ((long)param_3 < 1) {
      return;
    }
    do {
      lVar32 = *(long *)(param_1 + 0x360);
      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +
               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +
               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);
      if (NAN(fVar36)) {
        bVar17 = 0;
      }
      else {
        bVar17 = 0;
        if ((0.0 < fVar36) && (dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12)) {
          bVar17 = (byte)(int)(dVar4 + dVar7);
        }
      }
      *param_5 = bVar17;
      bVar17 = 0xff;
      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {
        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);
        if (NAN(fVar36)) {
          bVar17 = 0;
        }
        else {
          bVar17 = 0;
          if ((0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)) {
            bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);
          }
        }
      }
      param_5[1] = bVar17;
      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;
      param_5 = param_5 + param_2[6] + 2;
      uVar34 = uVar34 + 1;
    } while (uVar34 != param_3);
    return;
  }
  if (uVar34 < 9) {
    if (uVar34 == 1) {
      bVar35 = (int)param_2[7] == 0;
      bVar6 = !bVar35;
      if (param_3 != 3 && -1 < (long)(param_3 - 3)) {
        pbVar1 = param_5 + (param_3 - 4 >> 2) + 1;
        do {
          *param_5 = 0;
          lVar32 = *(long *)(param_1 + 0x360);
          uVar28 = (uint)bVar35;
          if (DAT_003fc580 <
              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +
              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +
              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)) {
            uVar28 = (uint)bVar6;
          }
          bVar18 = (byte)(uVar28 << 7);
          *param_5 = bVar18;
          bVar17 = 0x40;
          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {
            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==
                _DAT_003fa400) {
              bVar17 = 0x40;
            }
            else {
              bVar17 = 0;
            }
          }
          bVar17 = bVar17 | bVar18;
          *param_5 = bVar17;
          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;
          lVar32 = *(long *)(param_1 + 0x360);
          uVar28 = (uint)bVar35;
          if (DAT_003fc580 <
              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +
              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +
              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {
            uVar28 = (uint)bVar6;
          }
          bVar17 = bVar17 | (byte)(uVar28 << 5);
          *param_5 = bVar17;
          bVar18 = 0x10;
          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {
            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==
                _DAT_003fa400) {
              bVar18 = 0x10;
            }
            else {
              bVar18 = 0;
            }
          }
          bVar17 = bVar17 | bVar18;
          *param_5 = bVar17;
          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;
          lVar32 = *(long *)(param_1 + 0x360);
          bVar2 = bVar35;
          if (DAT_003fc580 <
              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +
              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +
              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {
            bVar2 = bVar6;
          }
          bVar17 = bVar17 | bVar2 * '\b';
          *param_5 = bVar17;
          bVar18 = 4;
          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {
            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==
                _DAT_003fa400) {
              bVar18 = 4;
            }
            else {
              bVar18 = 0;
            }
          }
          bVar17 = bVar17 | bVar18;
          *param_5 = bVar17;
          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;
          lVar32 = *(long *)(param_1 + 0x360);
          bVar2 = bVar6;
          if (DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +
              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +
              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) <= DAT_003fc580) {
            bVar2 = bVar35;
          }
          bVar17 = bVar17 | bVar2 * '\x02';
          *param_5 = bVar17;
          fVar36 = _DAT_003fa400;
          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {
            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);
          }
          *param_5 = bVar17 | fVar36 == _DAT_003fa400;
          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;
          param_5 = param_5 + 1;
        } while (param_5 != pbVar1);
      }
      if ((param_3 & 3) == 0) {
        return;
      }
      *param_5 = 0;
      fVar15 = DAT_0041abe0;
      fVar14 = DAT_0041abdc;
      fVar13 = DAT_0041abd8;
      fVar36 = _DAT_003fa400;
      bVar17 = 7;
      lVar32 = 0;
      do {
        lVar3 = *(long *)(param_1 + 0x360);
        bVar2 = bVar35;
        if (DAT_003fc580 <
            fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4) +
            fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4) +
            fVar15 * *(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)) {
          bVar2 = bVar6;
        }
        bVar18 = bVar2 << (bVar17 & 0x1f) | *param_5;
        *param_5 = bVar18;
        fVar37 = fVar36;
        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {
          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);
        }
        uVar28 = (uint)(!NAN(fVar37) && !NAN(_DAT_003fa400));
        if (fVar37 != _DAT_003fa400) {
          uVar28 = 0;
        }
        *param_5 = (byte)(uVar28 << (bVar17 - 1 & 0x1f)) | bVar18;
        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;
        lVar32 = lVar32 + 2;
        bVar17 = bVar17 - 2;
      } while (lVar32 <= (long)(ulong)((uint)param_3 & 3));
      return;
    }
    if (uVar34 == 4) {
      pbVar1 = param_5 + param_3;
      if ((long)param_3 < 1) {
        return;
      }
      do {
        lVar32 = *(long *)(param_1 + 0x360);
        fVar37 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +
                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +
                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);
        if (NAN(fVar37)) {
          bVar17 = 0;
        }
        else {
          bVar17 = 0;
          if (0.0 < fVar37) {
            dVar4 = (double)fVar37 / dVar11;
            bVar17 = 0xff;
            if (dVar4 < dVar12) {
              bVar17 = (byte)(int)(dVar4 + dVar7);
            }
          }
        }
        *param_5 = bVar17 & 0xf0;
        fVar37 = fVar36;
        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {
          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);
        }
        *param_5 = bVar17 & 0xf0 | (byte)(int)((double)fVar37 * dVar16 + dVar7) & 0xf;
        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;
        param_5 = param_5 + 1;
      } while (param_5 != pbVar1);
      return;
    }
LAB_002734da:
    uVar33 = 0;
    if (uVar34 == 0) goto LAB_002734e9;
  }
  else {
    if (uVar34 == 0x20) {
      if ((int)param_2[2] == 1) {
        if ((long)param_3 < 1) {
          return;
        }
        uVar34 = 0;
        do {
          lVar32 = *(long *)(param_1 + 0x360);
          fVar37 = (float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +
                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +
                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *
                           (double)param_2[0xd] + (double)param_2[3]);
          bVar18 = (byte)((uint)fVar37 >> 8);
          bVar27 = (byte)((uint)fVar37 >> 0x10);
          bVar17 = (byte)((uint)fVar37 >> 0x18);
          if ((int)param_2[0xc] == 1) {
            *param_5 = SUB41(fVar37,0);
            param_5[1] = bVar18;
            param_5[2] = bVar27;
            param_5[3] = bVar17;
          }
          else {
            *param_5 = bVar17;
            param_5[1] = bVar27;
            param_5[2] = bVar18;
            param_5[3] = SUB41(fVar37,0);
          }
          fVar37 = fVar36;
          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {
            fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);
          }
          fVar37 = (float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3]);
          bVar17 = (byte)((uint)fVar37 >> 8);
          bVar18 = (byte)((uint)fVar37 >> 0x10);
          bVar27 = (byte)((uint)fVar37 >> 0x18);
          if ((int)param_2[0xc] == 1) {
            param_5[4] = SUB41(fVar37,0);
            param_5[5] = bVar17;
            param_5[6] = bVar18;
            param_5[7] = bVar27;
          }
          else {
            param_5[4] = bVar27;
            param_5[5] = bVar18;
            param_5[6] = bVar17;
            param_5[7] = SUB41(fVar37,0);
          }
          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;
          param_5 = param_5 + param_2[6] + 8;
          uVar34 = uVar34 + 1;
        } while (uVar34 != param_3);
        return;
      }
      uVar34 = 0;
      if ((long)param_3 < 1) {
        return;
      }
      do {
        lVar32 = *(long *)(param_1 + 0x360);
        fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +
                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +
                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);
        if (NAN(fVar36)) {
          uVar20 = 0;
        }
        else {
          uVar20 = 0;
          if ((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)) {
            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);
          }
        }
        bVar17 = (byte)((uint)uVar20 >> 8);
        bVar18 = (byte)((uint)uVar20 >> 0x10);
        bVar27 = (byte)((uint)uVar20 >> 0x18);
        if ((int)param_2[0xc] == 1) {
          *param_5 = (byte)uVar20;
          param_5[1] = bVar17;
          param_5[2] = bVar18;
          param_5[3] = bVar27;
        }
        else {
          *param_5 = bVar27;
          param_5[1] = bVar18;
          param_5[2] = bVar17;
          param_5[3] = (byte)uVar20;
        }
        uVar20 = 0xffffffff;
        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {
          fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);
          if (NAN(fVar36)) {
            uVar20 = 0;
          }
          else {
            uVar20 = 0;
            if ((0.0 < fVar36) &&
               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {
              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);
            }
          }
        }
        bVar17 = (byte)((uint)uVar20 >> 8);
        bVar18 = (byte)((uint)uVar20 >> 0x10);
        bVar27 = (byte)((uint)uVar20 >> 0x18);
        if ((int)param_2[0xc] == 1) {
          param_5[4] = (byte)uVar20;
          param_5[5] = bVar17;
          param_5[6] = bVar18;
          param_5[7] = bVar27;
        }
        else {
          param_5[4] = bVar27;
          param_5[5] = bVar18;
          param_5[6] = bVar17;
          param_5[7] = (byte)uVar20;
        }
        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;
        param_5 = param_5 + param_2[6] + 8;
        uVar34 = uVar34 + 1;
      } while (uVar34 != param_3);
      return;
    }
    if (uVar34 != 0x40) {
      if (uVar34 == 0x10) {
        if ((int)param_2[2] == 1) {
          if ((long)param_3 < 1) {
            return;
          }
          uVar34 = 0;
          do {
            lVar32 = *(long *)(param_1 + 0x360);
            uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *
                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4
                                                             ) +
                                                   DAT_0041abd8 *
                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +
                                                  DAT_0041abe0 *
                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)
                                                  ) * DAT_003f9c60));
            bVar17 = (byte)((ushort)uVar19 >> 8);
            if ((int)param_2[0xc] == 1) {
              *param_5 = (byte)uVar19;
              param_5[1] = bVar17;
            }
            else {
              *param_5 = bVar17;
              param_5[1] = (byte)uVar19;
            }
            fVar36 = _DAT_003fa400;
            if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {
              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);
            }
            uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));
            bVar17 = (byte)((ushort)uVar19 >> 8);
            if ((int)param_2[0xc] == 1) {
              param_5[2] = (byte)uVar19;
              param_5[3] = bVar17;
            }
            else {
              param_5[2] = bVar17;
              param_5[3] = (byte)uVar19;
            }
            param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;
            param_5 = param_5 + param_2[6] + 4;
            uVar34 = uVar34 + 1;
          } while (uVar34 != param_3);
          return;
        }
        uVar34 = 0;
        if ((long)param_3 < 1) {
          return;
        }
        do {
          lVar32 = *(long *)(param_1 + 0x360);
          fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +
                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +
                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);
          if (NAN(fVar36)) {
            uVar19 = 0;
          }
          else {
            uVar19 = 0;
            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {
              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);
            }
          }
          bVar17 = (byte)((ushort)uVar19 >> 8);
          if ((int)param_2[0xc] == 1) {
            *param_5 = (byte)uVar19;
            param_5[1] = bVar17;
          }
          else {
            *param_5 = bVar17;
            param_5[1] = (byte)uVar19;
          }
          uVar19 = 0xffff;
          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {
            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);
            if (NAN(fVar36)) {
              uVar19 = 0;
            }
            else {
              uVar19 = 0;
              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {
                uVar19 = (short)(int)((double)fVar36 + dVar7);
              }
            }
          }
          bVar17 = (byte)((ushort)uVar19 >> 8);
          if ((int)param_2[0xc] == 1) {
            param_5[2] = (byte)uVar19;
            param_5[3] = bVar17;
          }
          else {
            param_5[2] = bVar17;
            param_5[3] = (byte)uVar19;
          }
          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;
          param_5 = param_5 + param_2[6] + 4;
          uVar34 = uVar34 + 1;
        } while (uVar34 != param_3);
        return;
      }
      goto LAB_002734da;
    }
    if ((int)param_2[2] == 1) {
      if ((long)param_3 < 1) {
        return;
      }
      uVar34 = 0;
      do {
        lVar32 = *(long *)(param_1 + 0x360);
        dVar4 = (double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +
                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +
                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *
                (double)param_2[0xd] + (double)param_2[3];
        bVar18 = (byte)((ulong)dVar4 >> 8);
        bVar23 = (byte)((ulong)dVar4 >> 0x10);
        bVar24 = (byte)((ulong)dVar4 >> 0x18);
        bVar25 = (byte)((ulong)dVar4 >> 0x20);
        bVar26 = (byte)((ulong)dVar4 >> 0x28);
        bVar27 = (byte)((ulong)dVar4 >> 0x30);
        bVar17 = (byte)((ulong)dVar4 >> 0x38);
        if ((int)param_2[0xc] == 1) {
          *param_5 = SUB81(dVar4,0);
          param_5[1] = bVar18;
          param_5[2] = bVar23;
          param_5[3] = bVar24;
          param_5[4] = bVar25;
          param_5[5] = bVar26;
          param_5[6] = bVar27;
          param_5[7] = bVar17;
        }
        else {
          *param_5 = bVar17;
          param_5[1] = bVar27;
          param_5[2] = bVar26;
          param_5[3] = bVar25;
          param_5[4] = bVar24;
          param_5[5] = bVar23;
          param_5[6] = bVar18;
          param_5[7] = SUB81(dVar4,0);
        }
        fVar37 = fVar36;
        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {
          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);
        }
        dVar4 = (double)fVar37 * (double)param_2[0xd] + (double)param_2[3];
        bVar17 = (byte)((ulong)dVar4 >> 8);
        bVar18 = (byte)((ulong)dVar4 >> 0x10);
        bVar27 = (byte)((ulong)dVar4 >> 0x18);
        bVar26 = (byte)((ulong)dVar4 >> 0x20);
        bVar25 = (byte)((ulong)dVar4 >> 0x28);
        bVar24 = (byte)((ulong)dVar4 >> 0x30);
        bVar23 = (byte)((ulong)dVar4 >> 0x38);
        if ((int)param_2[0xc] == 1) {
          param_5[8] = SUB81(dVar4,0);
          param_5[9] = bVar17;
          param_5[10] = bVar18;
          param_5[0xb] = bVar27;
          param_5[0xc] = bVar26;
          param_5[0xd] = bVar25;
          param_5[0xe] = bVar24;
          param_5[0xf] = bVar23;
        }
        else {
          param_5[8] = bVar23;
          param_5[9] = bVar24;
          param_5[10] = bVar25;
          param_5[0xb] = bVar26;
          param_5[0xc] = bVar27;
          param_5[0xd] = bVar18;
          param_5[0xe] = bVar17;
          param_5[0xf] = SUB81(dVar4,0);
        }
        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;
        param_5 = param_5 + param_2[6] + 0x10;
        uVar34 = uVar34 + 1;
      } while (uVar34 != param_3);
      return;
    }
  }
  if (0x40 < uVar34) {
    uVar34 = 0;
  }
  uVar33 = (2L << ((char)uVar34 - 1U & 0x3f)) - 1;
LAB_002734e9:
  if (0 < (long)param_3) {
    uVar34 = 0;
    do {
      lVar32 = *(long *)(param_1 + 0x360);
      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +
               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +
               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);
      if (NAN(fVar36)) {
        uVar31 = 0;
      }
      else {
        uVar31 = 0;
        if (0.0 < fVar36) {
          dVar5 = ((double)fVar36 * (double)uVar33) / dVar4;
          uVar31 = 0xffffffffffffffff;
          if (dVar5 < dVar9) {
            dVar5 = dVar5 + dVar7;
            if (dVar8 <= dVar5) {
              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;
            }
            else {
              uVar31 = (ulong)dVar5;
            }
          }
        }
      }
      if (param_2[0xf] == 0) {
        param_2[0xf] = 8;
      }
      uVar29 = *param_2;
      if (0 < (long)uVar29) {
        uVar22 = param_2[0xf];
        do {
          uVar21 = uVar29;
          if (uVar22 <= uVar29) {
            uVar21 = uVar22;
          }
          uVar30 = uVar29 - uVar21;
          uVar29 = 0;
          if (-1 < (long)uVar30) {
            uVar29 = uVar30;
          }
          if (uVar22 == 8) {
            *param_5 = 0;
          }
          uVar22 = uVar22 - uVar21;
          *param_5 = *param_5 |
                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<
                           ((byte)uVar22 & 0x3f));
          if (uVar22 == 0) {
            param_5 = param_5 + 1;
            uVar22 = 8;
          }
        } while (0 < (long)uVar30);
        param_2[0xf] = uVar22;
      }
      fVar36 = _DAT_003fa400;
      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) == 0) {
LAB_002745f5:
        dVar5 = ((double)fVar36 * (double)uVar33) / DAT_003f95f8;
        uVar31 = 0xffffffffffffffff;
        if (dVar5 < DAT_003fa3a0) {
          dVar5 = dVar5 + DAT_003f9c28;
          if (DAT_003f9c40 <= dVar5) {
            uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;
          }
          else {
            uVar31 = (ulong)dVar5;
          }
        }
      }
      else {
        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);
        if (NAN(fVar36)) {
          uVar31 = 0;
        }
        else {
          uVar31 = 0;
          if (0.0 < fVar36) goto LAB_002745f5;
        }
      }
      if (param_2[0xf] == 0) {
        param_2[0xf] = 8;
      }
      uVar29 = *param_2;
      if (0 < (long)uVar29) {
        uVar22 = param_2[0xf];
        do {
          uVar21 = uVar29;
          if (uVar22 <= uVar29) {
            uVar21 = uVar22;
          }
          uVar30 = uVar29 - uVar21;
          uVar29 = 0;
          if (-1 < (long)uVar30) {
            uVar29 = uVar30;
          }
          if (uVar22 == 8) {
            *param_5 = 0;
          }
          uVar22 = uVar22 - uVar21;
          *param_5 = *param_5 |
                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<
                           ((byte)uVar22 & 0x3f));
          if (uVar22 == 0) {
            param_5 = param_5 + 1;
            uVar22 = 8;
          }
        } while (0 < (long)uVar30);
        param_2[0xf] = uVar22;
      }
      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;
      param_5 = param_5 + param_2[6];
      uVar34 = uVar34 + 1;
    } while (param_3 != uVar34);
  }
  return;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x28
TEST R9,R9
JZ 0x00273543
MOV R15,RDI
MOV R12,RSI
MOV RBP,RCX
MOV RBX,R8
MOV EAX,0xabacadab
CMP qword ptr [R9 + 0x30],RAX
JNZ 0x00273562
MOV RAX,qword ptr [RSI]
CMP RAX,0x8
JZ 0x002735f4
CMP RAX,0x8
JBE 0x00273581
CMP RAX,0x20
JZ 0x00273ecc
CMP RAX,0x40
JZ 0x0027424e
CMP RAX,0x10
JZ 0x00273c16
MOV R11D,0x0
TEST RAX,RAX
JNZ 0x00274254
MOV R14,RDX
TEST RDX,RDX
JLE 0x0027398f
MOV R13D,0x0
MOVSS XMM4,dword ptr [0x0041abd8]
MOVSS XMM3,dword ptr [0x0041abdc]
MOVSS XMM2,dword ptr [0x0041abe0]
PXOR XMM5,XMM5
MOVSD XMM7,qword ptr [0x003f95f8]
MOVSD XMM6,qword ptr [0x003fa3a0]
MOVSD XMM9,qword ptr [0x003f9c28]
MOVSD XMM8,qword ptr [0x003f9c40]
MOVAPD XMM10,XMM8
JMP 0x00274705
LEA RCX,[0x42f130]
MOV EDX,0x89f
LEA RSI,[0x42ec43]
LEA RDI,[0x3fa748]
CALL 0x0014a360
LEA RCX,[0x42f130]
MOV EDX,0x8a0
LEA RSI,[0x42ec43]
LEA RDI,[0x3fb6a0]
CALL 0x0014a360
CMP RAX,0x1
JZ 0x00273648
CMP RAX,0x4
JNZ 0x002734da
LEA RCX,[R8 + RDX*0x1]
TEST RDX,RDX
JLE 0x0027398f
MOVSS XMM7,dword ptr [0x0041abd8]
MOVSS XMM6,dword ptr [0x0041abdc]
MOVSS XMM5,dword ptr [0x0041abe0]
PXOR XMM8,XMM8
MOVSD XMM10,qword ptr [0x00404930]
MOVSD XMM9,qword ptr [0x00404938]
MOVSD XMM11,qword ptr [0x003f9c28]
MOVSS XMM4,dword ptr [0x003fa400]
MOVSD XMM3,qword ptr [0x0042f2e8]
MOVAPD XMM2,XMM11
JMP 0x00273a9c
MOV RSI,RDX
MOV ECX,0x0
TEST RDX,RDX
JLE 0x0027398f
MOVSS XMM4,dword ptr [0x0041abd8]
MOVSS XMM3,dword ptr [0x0041abdc]
MOVSS XMM2,dword ptr [0x0041abe0]
PXOR XMM5,XMM5
MOVSD XMM7,qword ptr [0x00404930]
MOVSD XMM6,qword ptr [0x00404938]
MOV EDX,0xffffffff
MOVSD XMM9,qword ptr [0x003f9c28]
MOVAPS XMM8,XMM5
JMP 0x00273b6f
CMP dword ptr [RSI + 0x38],0x1
SETC byte ptr [RSP + 0x1e]
MOVZX ESI,byte ptr [RSP + 0x1e]
SBB EAX,EAX
MOV EDI,EAX
ADD EDI,0x1
MOV byte ptr [RSP + 0x1f],DIL
LEA RAX,[RDX + -0x3]
TEST RAX,RAX
JLE 0x00273986
MOVZX ECX,SIL
MOV R12D,ECX
SHL R12D,0x7
MOVZX EAX,DIL
MOV R11D,EAX
SHL R11D,0x7
MOV R10D,ECX
SHL R10D,0x5
MOV R9D,EAX
SHL R9D,0x5
LEA R8D,[RCX*0x8]
LEA EDI,[RAX*0x8]
LEA R14D,[RCX + RCX*0x1]
ADD EAX,EAX
MOV dword ptr [RSP + 0x8],EAX
LEA RAX,[RDX + -0x4]
SHR RAX,0x2
LEA RSI,[RBX + RAX*0x1 + 0x1]
MOVSS XMM11,dword ptr [0x0041abdc]
MOVSS XMM10,dword ptr [0x0041abd8]
MOVSS XMM9,dword ptr [0x0041abe0]
MOV ECX,0x0
MOVAPS XMM8,XMM10
MOVAPS XMM7,XMM11
MOVAPS XMM6,XMM9
MOVAPS XMM5,XMM10
MOVAPS XMM4,XMM11
MOVAPS XMM3,XMM9
MOV qword ptr [RSP + 0x10],RDX
MOV EDX,R14D
JMP 0x002737d5
MOV EAX,0x40
JMP 0x00273854
MOV R13D,0x10
JMP 0x002738e3
MOV R13D,ECX
OR EAX,R13D
MOV byte ptr [RBX],AL
MOV R13,qword ptr [R15 + 0x340]
LEA RBP,[RBP + R13*0x4]
MOV R13,qword ptr [R15 + 0x360]
MOV R14,qword ptr [R13 + 0x8]
MOVSS XMM1,dword ptr [0x0041abd8]
MOVAPS XMM2,XMM1
MULSS XMM2,dword ptr [RBP + R14*0x4]
MOV R14,qword ptr [R13 + 0x18]
MOVSS XMM1,dword ptr [0x0041abdc]
MULSS XMM1,dword ptr [RBP + R14*0x4]
ADDSS XMM2,XMM1
MOV R13,qword ptr [R13 + 0x28]
MOVSS XMM0,dword ptr [0x0041abe0]
MULSS XMM0,dword ptr [RBP + R13*0x4]
ADDSS XMM0,XMM2
UCOMISS XMM0,dword ptr [0x003fc580]
MOV R13D,dword ptr [RSP + 0x8]
CMOVBE R13D,EDX
OR EAX,R13D
MOV byte ptr [RBX],AL
MOV R13,qword ptr [R15 + 0x360]
MOVSS XMM0,dword ptr [0x003fa400]
CMP dword ptr [R13 + 0x44],0x0
JZ 0x002737a8
MOV R13,qword ptr [R13 + 0x48]
MOVSS XMM0,dword ptr [RBP + R13*0x4]
UCOMISS XMM0,dword ptr [0x003fa400]
SETNP R13B
CMOVNZ R13D,ECX
OR EAX,R13D
MOV byte ptr [RBX],AL
MOV RAX,qword ptr [R15 + 0x340]
LEA RBP,[RBP + RAX*0x4]
ADD RBX,0x1
CMP RBX,RSI
JZ 0x00273981
MOV byte ptr [RBX],0x0
MOV RAX,qword ptr [R15 + 0x360]
MOV R13,qword ptr [RAX + 0x18]
MOVAPS XMM1,XMM11
MULSS XMM1,dword ptr [RBP + R13*0x4]
MOV R13,qword ptr [RAX + 0x8]
MOVAPS XMM0,XMM10
MULSS XMM0,dword ptr [RBP + R13*0x4]
ADDSS XMM1,XMM0
MOV RAX,qword ptr [RAX + 0x28]
MOVAPS XMM0,XMM9
MULSS XMM0,dword ptr [RBP + RAX*0x4]
ADDSS XMM0,XMM1
UCOMISS XMM0,dword ptr [0x003fc580]
MOV EAX,R12D
CMOVA EAX,R11D
MOV R14D,EAX
MOV byte ptr [RBX],AL
MOV R13,qword ptr [R15 + 0x360]
MOV EAX,0x40
CMP dword ptr [R13 + 0x44],0x0
JZ 0x00273854
MOV RAX,qword ptr [R13 + 0x48]
MOVSS XMM0,dword ptr [RBP + RAX*0x4]
UCOMISS XMM0,dword ptr [0x003fa400]
JP 0x00273852
JZ 0x002736fe
MOV EAX,ECX
OR EAX,R14D
MOV byte ptr [RBX],AL
MOV R13,qword ptr [R15 + 0x340]
LEA RBP,[RBP + R13*0x4]
MOV R13,qword ptr [R15 + 0x360]
MOV R14,qword ptr [R13 + 0x8]
MOVAPS XMM1,XMM8
MULSS XMM1,dword ptr [RBP + R14*0x4]
MOV R14,qword ptr [R13 + 0x18]
MOVAPS XMM0,XMM7
MULSS XMM0,dword ptr [RBP + R14*0x4]
ADDSS XMM1,XMM0
MOV R13,qword ptr [R13 + 0x28]
MOVAPS XMM0,XMM6
MULSS XMM0,dword ptr [RBP + R13*0x4]
ADDSS XMM0,XMM1
UCOMISS XMM0,dword ptr [0x003fc580]
MOV R13D,R10D
CMOVA R13D,R9D
OR EAX,R13D
MOV byte ptr [RBX],AL
MOV R14,qword ptr [R15 + 0x360]
MOV R13D,0x10
CMP dword ptr [R14 + 0x44],0x0
JZ 0x002738e3
MOV R13,qword ptr [R14 + 0x48]
MOVSS XMM0,dword ptr [RBP + R13*0x4]
UCOMISS XMM0,dword ptr [0x003fa400]
JP 0x002738e0
JZ 0x00273708
MOV R13D,ECX
OR EAX,R13D
MOV byte ptr [RBX],AL
MOV R13,qword ptr [R15 + 0x340]
LEA RBP,[RBP + R13*0x4]
MOV R13,qword ptr [R15 + 0x360]
MOV R14,qword ptr [R13 + 0x8]
MOVAPS XMM1,XMM5
MULSS XMM1,dword ptr [RBP + R14*0x4]
MOV R14,qword ptr [R13 + 0x18]
MOVAPS XMM0,XMM4
MULSS XMM0,dword ptr [RBP + R14*0x4]
ADDSS XMM1,XMM0
MOV R13,qword ptr [R13 + 0x28]
MOVAPS XMM0,XMM3
MULSS XMM0,dword ptr [RBP + R13*0x4]
ADDSS XMM0,XMM1
UCOMISS XMM0,dword ptr [0x003fc580]
MOV R13D,R8D
CMOVA R13D,EDI
OR EAX,R13D
MOV byte ptr [RBX],AL
MOV R14,qword ptr [R15 + 0x360]
MOV R13D,0x4
CMP dword ptr [R14 + 0x44],0x0
JZ 0x00273716
MOV R13,qword ptr [R14 + 0x48]
MOVSS XMM0,dword ptr [RBP + R13*0x4]
UCOMISS XMM0,dword ptr [0x003fa400]
JP 0x00273713
JNZ 0x00273713
MOV R13D,0x4
JMP 0x00273716
MOV RDX,qword ptr [RSP + 0x10]
TEST DL,0x3
JNZ 0x002747c9
ADD RSP,0x28
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
UCOMISS XMM0,dword ptr [0x003fa400]
SETNP SIL
MOVZX ESI,SIL
CMOVNZ ESI,R10D
LEA ECX,[RDI + -0x1]
SHL ESI,CL
OR ESI,EAX
MOV byte ptr [RBX],SIL
MOV RAX,qword ptr [R15 + 0x340]
LEA RBP,[RBP + RAX*0x4]
ADD R8,0x2
SUB EDI,0x2
CMP R8,RDX
JG 0x0027398f
MOV RAX,qword ptr [R15 + 0x360]
MOV RCX,qword ptr [RAX + 0x8]
MOVAPS XMM1,XMM5
MULSS XMM1,dword ptr [RBP + RCX*0x4]
MOV RCX,qword ptr [RAX + 0x18]
MOVAPS XMM0,XMM4
MULSS XMM0,dword ptr [RBP + RCX*0x4]
ADDSS XMM0,XMM1
MOV RAX,qword ptr [RAX + 0x28]
MOVAPS XMM1,XMM3
MULSS XMM1,dword ptr [RBP + RAX*0x4]
ADDSS XMM0,XMM1
UCOMISS XMM0,dword ptr [0x003fc580]
MOV EAX,R11D
CMOVA EAX,R9D
MOV ECX,EDI
SHL EAX,CL
OR AL,byte ptr [RBX]
MOV byte ptr [RBX],AL
MOV RCX,qword ptr [R15 + 0x360]
MOVAPS XMM0,XMM2
CMP dword ptr [RCX + 0x44],0x0
JZ 0x0027399e
MOV RCX,qword ptr [RCX + 0x48]
MOVSS XMM0,dword ptr [RBP + RCX*0x4]
JMP 0x0027399e
MOV EAX,0x0
SHR AL,0x4
MOVZX EAX,AL
SHL EAX,0x4
MOV byte ptr [RBX],AL
MOV RDX,qword ptr [R15 + 0x360]
MOVAPS XMM0,XMM4
CMP dword ptr [RDX + 0x44],0x0
JZ 0x00273a6c
MOV RDX,qword ptr [RDX + 0x48]
MOVSS XMM0,dword ptr [RBP + RDX*0x4]
CVTSS2SD XMM0,XMM0
MULSD XMM0,XMM3
ADDSD XMM0,XMM2
CVTTSD2SI EDX,XMM0
AND EDX,0xf
OR EAX,EDX
MOV byte ptr [RBX],AL
MOV RAX,qword ptr [R15 + 0x340]
LEA RBP,[RBP + RAX*0x4]
ADD RBX,0x1
CMP RBX,RCX
JZ 0x0027398f
MOV RAX,qword ptr [R15 + 0x360]
MOV RDX,qword ptr [RAX + 0x8]
MOVAPS XMM1,XMM7
MULSS XMM1,dword ptr [RBP + RDX*0x4]
MOV RDX,qword ptr [RAX + 0x18]
MOVAPS XMM0,XMM6
MULSS XMM0,dword ptr [RBP + RDX*0x4]
ADDSS XMM0,XMM1
MOV RAX,qword ptr [RAX + 0x28]
MOVAPS XMM1,XMM5
MULSS XMM1,dword ptr [RBP + RAX*0x4]
ADDSS XMM0,XMM1
UCOMISS XMM0,XMM0
JP 0x00273a42
MOV EAX,0x0
UCOMISS XMM8,XMM0
JNC 0x00273a47
CVTSS2SD XMM0,XMM0
DIVSD XMM0,XMM10
MOV EAX,0xffffffff
UCOMISD XMM0,XMM9
JNC 0x00273a47
ADDSD XMM0,XMM11
CVTTSD2SI EAX,XMM0
JMP 0x00273a47
MOV EAX,0x0
MOV byte ptr [RBX],AL
MOV RDI,qword ptr [R15 + 0x360]
MOV EAX,EDX
CMP dword ptr [RDI + 0x44],0x0
JZ 0x00273b49
MOV RAX,qword ptr [RDI + 0x48]
MOVSS XMM0,dword ptr [RBP + RAX*0x4]
UCOMISS XMM0,XMM0
JP 0x00273c05
MOV EAX,0x0
UCOMISS XMM8,XMM0
JC 0x00273bde
MOV byte ptr [RBX + 0x1],AL
MOV RAX,qword ptr [R15 + 0x340]
LEA RBP,[RBP + RAX*0x4]
MOV RAX,qword ptr [R12 + 0x30]
LEA RBX,[RBX + RAX*0x1 + 0x2]
ADD RCX,0x1
CMP RCX,RSI
JZ 0x0027398f
MOV RAX,qword ptr [R15 + 0x360]
MOV RDI,qword ptr [RAX + 0x8]
MOVAPS XMM1,XMM4
MULSS XMM1,dword ptr [RBP + RDI*0x4]
MOV RDI,qword ptr [RAX + 0x18]
MOVAPS XMM0,XMM3
MULSS XMM0,dword ptr [RBP + RDI*0x4]
ADDSS XMM0,XMM1
MOV RAX,qword ptr [RAX + 0x28]
MOVAPS XMM1,XMM2
MULSS XMM1,dword ptr [RBP + RAX*0x4]
ADDSS XMM0,XMM1
UCOMISS XMM0,XMM0
JP 0x00273b11
MOV EAX,0x0
UCOMISS XMM5,XMM0
JNC 0x00273b16
CVTSS2SD XMM0,XMM0
DIVSD XMM0,XMM7
MOV EAX,EDX
UCOMISD XMM0,XMM6
JNC 0x00273b16
ADDSD XMM0,XMM9
CVTTSD2SI EAX,XMM0
JMP 0x00273b16
CVTSS2SD XMM0,XMM0
DIVSD XMM0,qword ptr [0x00404930]
UCOMISD XMM0,qword ptr [0x00404938]
JNC 0x00273c0f
ADDSD XMM0,qword ptr [0x003f9c28]
CVTTSD2SI EAX,XMM0
JMP 0x00273b49
MOV EAX,0x0
JMP 0x00273b49
MOV EAX,EDX
JMP 0x00273b49
CMP dword ptr [RSI + 0x10],0x1
JZ 0x00273c6a
MOV RDI,RDX
MOV ECX,0x0
TEST RDX,RDX
JLE 0x0027398f
MOVSS XMM4,dword ptr [0x0041abd8]
MOVSS XMM3,dword ptr [0x0041abdc]
MOVSS XMM2,dword ptr [0x0041abe0]
MOV R8D,0x0
PXOR XMM5,XMM5
MOV ESI,0xffffffff
MOVSD XMM8,qword ptr [0x003f9c28]
MOVAPS XMM6,XMM5
MOVAPD XMM7,XMM8
JMP 0x00273df5
MOV qword ptr [RSP + 0x8],RDX
TEST RDX,RDX
JLE 0x0027398f
MOV R14D,0x0
JMP 0x00273ce4
MOV byte ptr [RBX],AL
LEA R13,[RBX + 0x2]
MOVZX EAX,DH
MOV byte ptr [RBX + 0x1],AL
JMP 0x00273d59
CVTSS2SD XMM0,XMM0
MULSD XMM0,qword ptr [0x003f9c60]
CVTSD2SS XMM0,XMM0
CALL 0x00272577
MOVZX EDX,AX
CMP dword ptr [R12 + 0x60],0x1
JZ 0x00273d81
MOVZX EBX,DH
MOV byte ptr [R13],BL
LEA RBX,[R13 + 0x2]
MOV byte ptr [R13 + 0x1],AL
MOV RAX,qword ptr [R15 + 0x340]
LEA RBP,[RBP + RAX*0x4]
ADD RBX,qword ptr [R12 + 0x30]
ADD R14,0x1
CMP R14,qword ptr [RSP + 0x8]
JZ 0x0027398f
MOV RAX,qword ptr [R15 + 0x360]
MOV RDX,qword ptr [RAX + 0x8]
MOVSS XMM1,dword ptr [0x0041abd8]
MULSS XMM1,dword ptr [RBP + RDX*0x4]
MOV RDX,qword ptr [RAX + 0x18]
MOVSS XMM0,dword ptr [0x0041abdc]
MULSS XMM0,dword ptr [RBP + RDX*0x4]
ADDSS XMM0,XMM1
MOV RAX,qword ptr [RAX + 0x28]
MOVSS XMM1,dword ptr [0x0041abe0]
MULSS XMM1,dword ptr [RBP + RAX*0x4]
ADDSS XMM0,XMM1
CVTSS2SD XMM0,XMM0
MULSD XMM0,qword ptr [0x003f9c60]
CVTSD2SS XMM0,XMM0
CALL 0x00272577
MOVZX EDX,AX
CMP dword ptr [R12 + 0x60],0x1
JZ 0x00273c80
MOVZX EDX,DH
MOV byte ptr [RBX],DL
LEA R13,[RBX + 0x2]
MOV byte ptr [RBX + 0x1],AL
MOV RAX,qword ptr [R15 + 0x360]
MOVSS XMM0,dword ptr [0x003fa400]
CMP dword ptr [RAX + 0x44],0x0
JZ 0x00273c91
MOV RAX,qword ptr [RAX + 0x48]
MOVSS XMM0,dword ptr [RBP + RAX*0x4]
JMP 0x00273c91
MOV byte ptr [R13],AL
LEA RBX,[R13 + 0x2]
MOVZX EAX,DH
MOV byte ptr [R13 + 0x1],AL
JMP 0x00273cc4
MOV EAX,R8D
JMP 0x00273e54
MOV byte ptr [RBX],AL
LEA R9,[RBX + 0x2]
MOVZX EAX,DH
MOV byte ptr [RBX + 0x1],AL
JMP 0x00273e6f
CVTSS2SD XMM0,XMM0
ADDSD XMM0,XMM7
CVTTSD2SI EAX,XMM0
MOVZX EDX,AX
CMP dword ptr [R12 + 0x60],0x1
JZ 0x00273eb9
MOVZX EBX,DH
MOV byte ptr [R9],BL
LEA RBX,[R9 + 0x2]
MOV byte ptr [R9 + 0x1],AL
MOV RAX,qword ptr [R15 + 0x340]
LEA RBP,[RBP + RAX*0x4]
ADD RBX,qword ptr [R12 + 0x30]
ADD RCX,0x1
CMP RCX,RDI
JZ 0x0027398f
MOV RAX,qword ptr [R15 + 0x360]
MOV RDX,qword ptr [RAX + 0x8]
MOVAPS XMM1,XMM4
MULSS XMM1,dword ptr [RBP + RDX*0x4]
MOV RDX,qword ptr [RAX + 0x18]
MOVAPS XMM0,XMM3
MULSS XMM0,dword ptr [RBP + RDX*0x4]
ADDSS XMM0,XMM1
MOV RAX,qword ptr [RAX + 0x28]
MOVAPS XMM1,XMM2
MULSS XMM1,dword ptr [RBP + RAX*0x4]
ADDSS XMM0,XMM1
UCOMISS XMM0,XMM0
JP 0x00273d95
MOV EAX,R8D
UCOMISS XMM5,XMM0
JNC 0x00273e54
MOV EAX,ESI
UCOMISS XMM0,dword ptr [0x003fa400]
JNC 0x00273e54
CVTSS2SD XMM0,XMM0
ADDSD XMM0,XMM8
CVTTSD2SI EAX,XMM0
MOVZX EDX,AX
CMP dword ptr [R12 + 0x60],0x1
JZ 0x00273d9d
MOVZX EDX,DH
MOV byte ptr [RBX],DL
LEA R9,[RBX + 0x2]
MOV byte ptr [RBX + 0x1],AL
MOV RDX,qword ptr [R15 + 0x360]
MOV EAX,ESI
CMP dword ptr [RDX + 0x44],0x0
JZ 0x00273dba
MOV RAX,qword ptr [RDX + 0x48]
MOVSS XMM0,dword ptr [RBP + RAX*0x4]
UCOMISS XMM0,XMM0
JP 0x00273eb1
MOV EAX,R8D
UCOMISS XMM6,XMM0
JNC 0x00273dba
UCOMISS XMM0,dword ptr [0x003fa400]
JC 0x00273dae
MOV EAX,ESI
JMP 0x00273dba
MOV EAX,R8D
JMP 0x00273dba
MOV byte ptr [R9],AL
LEA RBX,[R9 + 0x2]
MOVZX EAX,DH
MOV byte ptr [R9 + 0x1],AL
JMP 0x00273dd7
CMP dword ptr [RSI + 0x10],0x1
JZ 0x00273f27
MOV RSI,RDX
MOV ECX,0x0
TEST RDX,RDX
JLE 0x0027398f
MOVSS XMM4,dword ptr [0x0041abd8]
MOVSS XMM3,dword ptr [0x0041abdc]
MOVSS XMM2,dword ptr [0x0041abe0]
PXOR XMM5,XMM5
MOVSD XMM7,qword ptr [0x00404920]
MOVSD XMM6,qword ptr [0x00404928]
MOV R10D,0xffffffff
MOVSD XMM9,qword ptr [0x003f9c28]
MOVAPS XMM8,XMM5
JMP 0x00274161
MOV RCX,RDX
TEST RDX,RDX
JLE 0x0027398f
MOV EDX,0x0
MOVSS XMM5,dword ptr [0x0041abd8]
MOVSS XMM4,dword ptr [0x0041abdc]
MOVSS XMM3,dword ptr [0x0041abe0]
MOVSS XMM2,dword ptr [0x003fa400]
MOV R10,RCX
JMP 0x00273fec
MOV byte ptr [RBX],AL
MOVZX ECX,AH
MOV byte ptr [RBX + 0x1],CL
MOVD ESI,XMM7
SHR ESI,0x10
MOV byte ptr [RBX + 0x2],SIL
LEA RSI,[RBX + 0x4]
SHR EAX,0x18
MOV byte ptr [RBX + 0x3],AL
JMP 0x0027406e
CVTSS2SD XMM0,XMM0
MULSD XMM0,qword ptr [R12 + 0x68]
ADDSD XMM0,qword ptr [R12 + 0x18]
PXOR XMM6,XMM6
CVTSD2SS XMM6,XMM0
MOVD EAX,XMM6
CMP dword ptr [R12 + 0x60],0x1
JZ 0x00274091
MOVD EDI,XMM6
SHR EDI,0x18
MOV byte ptr [RSI],DIL
MOVD EDI,XMM6
SHR EDI,0x10
MOV byte ptr [RSI + 0x1],DIL
MOVZX EBX,AH
MOV byte ptr [RSI + 0x2],BL
LEA RBX,[RSI + 0x4]
MOV byte ptr [RSI + 0x3],AL
MOV RAX,qword ptr [R15 + 0x340]
LEA RBP,[RBP + RAX*0x4]
ADD RBX,qword ptr [R12 + 0x30]
ADD RDX,0x1
CMP RDX,R10
JZ 0x0027398f
MOV RAX,qword ptr [R15 + 0x360]
MOV RSI,qword ptr [RAX + 0x8]
MOVAPS XMM1,XMM5
MULSS XMM1,dword ptr [RBP + RSI*0x4]
MOV RSI,qword ptr [RAX + 0x18]
MOVAPS XMM0,XMM4
MULSS XMM0,dword ptr [RBP + RSI*0x4]
ADDSS XMM0,XMM1
MOV RAX,qword ptr [RAX + 0x28]
MOVAPS XMM1,XMM3
MULSS XMM1,dword ptr [RBP + RAX*0x4]
ADDSS XMM0,XMM1
CVTSS2SD XMM0,XMM0
MULSD XMM0,qword ptr [R12 + 0x68]
ADDSD XMM0,qword ptr [R12 + 0x18]
PXOR XMM7,XMM7
CVTSD2SS XMM7,XMM0
MOVD EAX,XMM7
CMP dword ptr [R12 + 0x60],0x1
JZ 0x00273f60
MOVD ESI,XMM7
SHR ESI,0x18
MOV byte ptr [RBX],SIL
MOVD ESI,XMM7
SHR ESI,0x10
MOV byte ptr [RBX + 0x1],SIL
MOVZX ECX,AH
MOV byte ptr [RBX + 0x2],CL
LEA RSI,[RBX + 0x4]
MOV byte ptr [RBX + 0x3],AL
MOV RAX,qword ptr [R15 + 0x360]
MOVAPS XMM0,XMM2
CMP dword ptr [RAX + 0x44],0x0
JZ 0x00273f82
MOV RAX,qword ptr [RAX + 0x48]
MOVSS XMM0,dword ptr [RBP + RAX*0x4]
JMP 0x00273f82
MOV byte ptr [RSI],AL
MOVZX EBX,AH
MOV byte ptr [RSI + 0x1],BL
MOVD EDI,XMM6
SHR EDI,0x10
MOV byte ptr [RSI + 0x2],DIL
LEA RBX,[RSI + 0x4]
SHR EAX,0x18
MOV byte ptr [RSI + 0x3],AL
JMP 0x00273fce
MOV EAX,0x0
CMP dword ptr [R12 + 0x60],0x1
JZ 0x002741d2
MOV EDI,EAX
SHR EDI,0x18
MOV byte ptr [RBX],DIL
MOV EDI,EAX
SHR EDI,0x10
MOV byte ptr [RBX + 0x1],DIL
MOVZX EDX,AH
MOV byte ptr [RBX + 0x2],DL
LEA RDI,[RBX + 0x4]
MOV byte ptr [RBX + 0x3],AL
MOV R8,qword ptr [R15 + 0x360]
MOV EAX,R10D
CMP dword ptr [R8 + 0x44],0x0
JZ 0x00274115
MOV RAX,qword ptr [R8 + 0x48]
MOVSS XMM0,dword ptr [RBP + RAX*0x4]
UCOMISS XMM0,XMM0
JP 0x0027421a
MOV EAX,0x0
UCOMISS XMM8,XMM0
JC 0x002741f2
CMP dword ptr [R12 + 0x60],0x1
JZ 0x0027422c
MOV R8D,EAX
SHR R8D,0x18
MOV byte ptr [RDI],R8B
MOV R8D,EAX
SHR R8D,0x10
MOV byte ptr [RDI + 0x1],R8B
MOVZX EBX,AH
MOV byte ptr [RDI + 0x2],BL
LEA RBX,[RDI + 0x4]
MOV byte ptr [RDI + 0x3],AL
MOV RAX,qword ptr [R15 + 0x340]
LEA RBP,[RBP + RAX*0x4]
ADD RBX,qword ptr [R12 + 0x30]
ADD RCX,0x1
CMP RCX,RSI
JZ 0x0027398f
MOV RAX,qword ptr [R15 + 0x360]
MOV RDI,qword ptr [RAX + 0x8]
MOVAPS XMM1,XMM4
MULSS XMM1,dword ptr [RBP + RDI*0x4]
MOV RDI,qword ptr [RAX + 0x18]
MOVAPS XMM0,XMM3
MULSS XMM0,dword ptr [RBP + RDI*0x4]
ADDSS XMM0,XMM1
MOV RAX,qword ptr [RAX + 0x28]
MOVAPS XMM1,XMM2
MULSS XMM1,dword ptr [RBP + RAX*0x4]
ADDSS XMM0,XMM1
UCOMISS XMM0,XMM0
JP 0x002740b3
MOV EAX,0x0
UCOMISS XMM5,XMM0
JNC 0x002740b8
CVTSS2SD XMM0,XMM0
MULSD XMM0,XMM7
MOV EAX,R10D
UCOMISD XMM0,XMM6
JNC 0x002740b8
ADDSD XMM0,XMM9
CVTTSD2SI RAX,XMM0
JMP 0x002740b8
MOV byte ptr [RBX],AL
MOVZX EDX,AH
MOV byte ptr [RBX + 0x1],DL
MOV EDI,EAX
SHR EDI,0x10
MOV byte ptr [RBX + 0x2],DIL
LEA RDI,[RBX + 0x4]
SHR EAX,0x18
MOV byte ptr [RBX + 0x3],AL
JMP 0x002740e2
CVTSS2SD XMM0,XMM0
MULSD XMM0,qword ptr [0x00404920]
UCOMISD XMM0,qword ptr [0x00404928]
JNC 0x00274224
ADDSD XMM0,qword ptr [0x003f9c28]
CVTTSD2SI RAX,XMM0
JMP 0x00274115
MOV EAX,0x0
JMP 0x00274115
MOV EAX,R10D
JMP 0x00274115
MOV byte ptr [RDI],AL
MOVZX EBX,AH
MOV byte ptr [RDI + 0x1],BL
MOV R8D,EAX
SHR R8D,0x10
MOV byte ptr [RDI + 0x2],R8B
LEA RBX,[RDI + 0x4]
SHR EAX,0x18
MOV byte ptr [RDI + 0x3],AL
JMP 0x00274143
CMP dword ptr [RSI + 0x10],0x1
JZ 0x00274276
CMP RAX,0x40
MOV ECX,0x40
CMOVA RAX,RCX
LEA ECX,[RAX + -0x1]
MOV R11D,0x2
SHL R11,CL
SUB R11,0x1
JMP 0x002734e9
MOV RCX,RDX
TEST RDX,RDX
JLE 0x0027398f
MOV EDX,0x0
MOVSS XMM5,dword ptr [0x0041abd8]
MOVSS XMM4,dword ptr [0x0041abdc]
MOVSS XMM3,dword ptr [0x0041abe0]
MOVSS XMM2,dword ptr [0x003fa400]
JMP 0x002743a7
MOVQ RAX,XMM0
MOV byte ptr [RBX],AL
MOVZX ESI,AH
MOV byte ptr [RBX + 0x1],SIL
MOVQ RSI,XMM0
SHR RSI,0x10
MOV byte ptr [RBX + 0x2],SIL
MOVQ RSI,XMM0
SHR RSI,0x18
MOV byte ptr [RBX + 0x3],SIL
MOVQ RSI,XMM0
SHR RSI,0x20
MOV byte ptr [RBX + 0x4],SIL
MOVQ RSI,XMM0
SHR RSI,0x28
MOV byte ptr [RBX + 0x5],SIL
MOVQ RSI,XMM0
SHR RSI,0x30
MOV byte ptr [RBX + 0x6],SIL
LEA RSI,[RBX + 0x8]
SHR RAX,0x38
MOV byte ptr [RBX + 0x7],AL
JMP 0x0027445b
CVTSS2SD XMM0,XMM0
MULSD XMM0,qword ptr [R12 + 0x68]
ADDSD XMM0,qword ptr [R12 + 0x18]
CMP dword ptr [R12 + 0x60],0x1
JZ 0x0027447e
MOVQ RAX,XMM0
MOVQ RDI,XMM0
SHR RDI,0x38
MOV byte ptr [RSI],DIL
MOVQ RDI,XMM0
SHR RDI,0x30
MOV byte ptr [RSI + 0x1],DIL
MOVQ RDI,XMM0
SHR RDI,0x28
MOV byte ptr [RSI + 0x2],DIL
MOVQ RDI,XMM0
SHR RDI,0x20
MOV byte ptr [RSI + 0x3],DIL
MOVQ RDI,XMM0
SHR RDI,0x18
MOV byte ptr [RSI + 0x4],DIL
MOVQ RDI,XMM0
SHR RDI,0x10
MOV byte ptr [RSI + 0x5],DIL
MOVZX EDI,AH
MOV byte ptr [RSI + 0x6],DIL
LEA RBX,[RSI + 0x8]
MOV byte ptr [RSI + 0x7],AL
MOV RAX,qword ptr [R15 + 0x340]
LEA RBP,[RBP + RAX*0x4]
ADD RBX,qword ptr [R12 + 0x30]
ADD RDX,0x1
CMP RDX,RCX
JZ 0x0027398f
MOV RAX,qword ptr [R15 + 0x360]
MOV RSI,qword ptr [RAX + 0x8]
MOVAPS XMM1,XMM5
MULSS XMM1,dword ptr [RBP + RSI*0x4]
MOV RSI,qword ptr [RAX + 0x18]
MOVAPS XMM0,XMM4
MULSS XMM0,dword ptr [RBP + RSI*0x4]
ADDSS XMM0,XMM1
MOV RAX,qword ptr [RAX + 0x28]
MOVAPS XMM1,XMM3
MULSS XMM1,dword ptr [RBP + RAX*0x4]
ADDSS XMM0,XMM1
CVTSS2SD XMM0,XMM0
MULSD XMM0,qword ptr [R12 + 0x68]
ADDSD XMM0,qword ptr [R12 + 0x18]
CMP dword ptr [R12 + 0x60],0x1
JZ 0x002742ac
MOVQ RAX,XMM0
MOVQ RSI,XMM0
SHR RSI,0x38
MOV byte ptr [RBX],SIL
MOVQ RSI,XMM0
SHR RSI,0x30
MOV byte ptr [RBX + 0x1],SIL
MOVQ RSI,XMM0
SHR RSI,0x28
MOV byte ptr [RBX + 0x2],SIL
MOVQ RSI,XMM0
SHR RSI,0x20
MOV byte ptr [RBX + 0x3],SIL
MOVQ RSI,XMM0
SHR RSI,0x18
MOV byte ptr [RBX + 0x4],SIL
MOVQ RSI,XMM0
SHR RSI,0x10
MOV byte ptr [RBX + 0x5],SIL
MOVZX ESI,AH
MOV byte ptr [RBX + 0x6],SIL
LEA RSI,[RBX + 0x8]
MOV byte ptr [RBX + 0x7],AL
MOV RAX,qword ptr [R15 + 0x360]
MOVAPS XMM0,XMM2
CMP dword ptr [RAX + 0x44],0x0
JZ 0x0027430b
MOV RAX,qword ptr [RAX + 0x48]
MOVSS XMM0,dword ptr [RBP + RAX*0x4]
JMP 0x0027430b
MOVQ RAX,XMM0
MOV byte ptr [RSI],AL
MOVZX EDI,AH
MOV byte ptr [RSI + 0x1],DIL
MOVQ RDI,XMM0
SHR RDI,0x10
MOV byte ptr [RSI + 0x2],DIL
MOVQ RDI,XMM0
SHR RDI,0x18
MOV byte ptr [RSI + 0x3],DIL
MOVQ RDI,XMM0
SHR RDI,0x20
MOV byte ptr [RSI + 0x4],DIL
MOVQ RDI,XMM0
SHR RDI,0x28
MOV byte ptr [RSI + 0x5],DIL
MOVQ RDI,XMM0
SHR RDI,0x30
MOV byte ptr [RSI + 0x6],DIL
LEA RBX,[RSI + 0x8]
SHR RAX,0x38
MOV byte ptr [RSI + 0x7],AL
JMP 0x00274389
MOV RAX,R11
SHR RAX,0x1
MOV RDX,R11
AND EDX,0x1
OR RAX,RDX
PXOR XMM1,XMM1
CVTSI2SD XMM1,RAX
ADDSD XMM1,XMM1
JMP 0x00274761
SUBSD XMM0,XMM10
CVTTSD2SI R8,XMM0
MOV RAX,-0x8000000000000000
XOR R8,RAX
JMP 0x0027478f
MOV R8D,0x0
JMP 0x0027478f
MOV byte ptr [RBX],0x0
JMP 0x0027454c
TEST RDI,RDI
JLE 0x0027457a
CMP RDX,RSI
MOV RCX,RSI
CMOVBE RCX,RDX
MOV RDI,RSI
SUB RDI,RCX
MOV RSI,R10
CMOVNS RSI,RDI
CMP RDX,0x8
JZ 0x00274525
SUB RDX,RCX
MOV RAX,R9
SHL RAX,CL
NOT RAX
MOV R11,R8
MOV ECX,ESI
SHR R11,CL
AND RAX,R11
MOV ECX,EDX
SHL RAX,CL
OR byte ptr [RBX],AL
TEST RDX,RDX
JNZ 0x0027452a
ADD RBX,0x1
MOV EDX,0x8
JMP 0x0027452a
MOV R11,qword ptr [RSP + 0x8]
MOV qword ptr [R12 + 0x78],RDX
MOV RAX,qword ptr [R15 + 0x360]
CMP dword ptr [RAX + 0x44],0x0
JZ 0x002745ed
MOV RAX,qword ptr [RAX + 0x48]
MOVSS XMM0,dword ptr [RBP + RAX*0x4]
UCOMISS XMM0,XMM0
JP 0x0027467d
MOV R8D,0x0
PXOR XMM1,XMM1
UCOMISS XMM1,XMM0
JC 0x002745f5
CMP qword ptr [R12 + 0x78],0x0
JNZ 0x002745c4
MOV qword ptr [R12 + 0x78],0x8
MOV RSI,qword ptr [R12]
TEST RSI,RSI
JLE 0x002746e7
MOV RDX,qword ptr [R12 + 0x78]
MOV R10D,0x0
MOV R9,-0x1
MOV qword ptr [RSP + 0x8],R11
JMP 0x00274692
MOVSS XMM0,dword ptr [0x003fa400]
TEST R11,R11
JS 0x00274640
PXOR XMM1,XMM1
CVTSI2SD XMM1,R11
CVTSS2SD XMM0,XMM0
MULSD XMM0,XMM1
DIVSD XMM0,qword ptr [0x003f95f8]
MOV R8,-0x1
UCOMISD XMM0,qword ptr [0x003fa3a0]
JNC 0x002745b3
ADDSD XMM0,qword ptr [0x003f9c28]
UCOMISD XMM0,qword ptr [0x003f9c40]
JNC 0x0027465e
CVTTSD2SI R8,XMM0
JMP 0x002745b3
MOV RAX,R11
SHR RAX,0x1
MOV RDX,R11
AND EDX,0x1
OR RAX,RDX
PXOR XMM1,XMM1
CVTSI2SD XMM1,RAX
ADDSD XMM1,XMM1
JMP 0x00274603
SUBSD XMM0,qword ptr [0x003f9c40]
CVTTSD2SI R8,XMM0
MOV RAX,-0x8000000000000000
XOR R8,RAX
JMP 0x002745b3
MOV R8D,0x0
JMP 0x002745b3
MOV byte ptr [RBX],0x0
JMP 0x002746af
TEST RDI,RDI
JLE 0x002746dd
CMP RDX,RSI
MOV RCX,RSI
CMOVBE RCX,RDX
MOV RDI,RSI
SUB RDI,RCX
MOV RSI,R10
CMOVNS RSI,RDI
CMP RDX,0x8
JZ 0x00274688
SUB RDX,RCX
MOV RAX,R9
SHL RAX,CL
NOT RAX
MOV R11,R8
MOV ECX,ESI
SHR R11,CL
AND RAX,R11
MOV ECX,EDX
SHL RAX,CL
OR byte ptr [RBX],AL
TEST RDX,RDX
JNZ 0x0027468d
ADD RBX,0x1
MOV EDX,0x8
JMP 0x0027468d
MOV R11,qword ptr [RSP + 0x8]
MOV qword ptr [R12 + 0x78],RDX
MOV RAX,qword ptr [R15 + 0x340]
LEA RBP,[RBP + RAX*0x4]
ADD RBX,qword ptr [R12 + 0x30]
ADD R13,0x1
CMP R14,R13
JZ 0x0027398f
MOV RAX,qword ptr [R15 + 0x360]
MOV RDX,qword ptr [RAX + 0x8]
MOVAPS XMM1,XMM4
MULSS XMM1,dword ptr [RBP + RDX*0x4]
MOV RDX,qword ptr [RAX + 0x18]
MOVAPS XMM0,XMM3
MULSS XMM0,dword ptr [RBP + RDX*0x4]
ADDSS XMM0,XMM1
MOV RAX,qword ptr [RAX + 0x28]
MOVAPS XMM1,XMM2
MULSS XMM1,dword ptr [RBP + RAX*0x4]
ADDSS XMM0,XMM1
UCOMISS XMM0,XMM0
JP 0x0027451a
MOV R8D,0x0
UCOMISS XMM5,XMM0
JNC 0x0027478f
TEST R11,R11
JS 0x002744dd
PXOR XMM1,XMM1
CVTSI2SD XMM1,R11
CVTSS2SD XMM0,XMM0
MULSD XMM0,XMM1
DIVSD XMM0,XMM7
MOV R8,-0x1
UCOMISD XMM0,XMM6
JNC 0x0027478f
ADDSD XMM0,XMM9
UCOMISD XMM0,XMM8
JNC 0x002744fe
CVTTSD2SI R8,XMM0
CMP qword ptr [R12 + 0x78],0x0
JNZ 0x002747a0
MOV qword ptr [R12 + 0x78],0x8
MOV RSI,qword ptr [R12]
TEST RSI,RSI
JLE 0x00274584
MOV RDX,qword ptr [R12 + 0x78]
MOV R10D,0x0
MOV R9,-0x1
MOV qword ptr [RSP + 0x8],R11
JMP 0x0027452f
MOV byte ptr [RBX],0x0
AND EDX,0x3
MOV EDI,0x7
MOV R8D,0x0
MOVSS XMM5,dword ptr [0x0041abd8]
MOVSS XMM4,dword ptr [0x0041abdc]
MOVSS XMM3,dword ptr [0x0041abe0]
MOVZX R9D,byte ptr [RSP + 0x1f]
MOVZX R11D,byte ptr [RSP + 0x1e]
MOVSS XMM2,dword ptr [0x003fa400]
MOV R10D,0x0
JMP 0x002739d3
(translation_unit "/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */\n\nvoid FUN_00273473(long param_1,ulong *param_2,ulong param_3,long param_4,byte *param_5,long param_6)\n\n{\n  byte *pbVar1;\n  bool bVar2;\n  long lVar3;\n  double dVar4;\n  double dVar5;\n  bool bVar6;\n  double dVar7;\n  double dVar8;\n  double dVar9;\n  double dVar10;\n  double dVar11;\n  double dVar12;\n  float fVar13;\n  float fVar14;\n  float fVar15;\n  double dVar16;\n  byte bVar17;\n  byte bVar18;\n  undefined2 uVar19;\n  undefined4 uVar20;\n  ulong uVar21;\n  ulong uVar22;\n  byte bVar23;\n  uint uVar28;\n  ulong uVar29;\n  ulong uVar30;\n  ulong uVar31;\n  long lVar32;\n  ulong uVar33;\n  ulong uVar34;\n  bool bVar35;\n  float fVar36;\n  float fVar37;\n  byte bVar24;\n  byte bVar25;\n  byte bVar26;\n  byte bVar27;\n  \n  dVar16 = DAT_0042f2e8;\n  fVar15 = DAT_0041abe0;\n  fVar14 = DAT_0041abdc;\n  fVar13 = DAT_0041abd8;\n  dVar12 = DAT_00404938;\n  dVar11 = DAT_00404930;\n  dVar10 = DAT_00404928;\n  dVar5 = DAT_00404920;\n  fVar36 = _DAT_003fa400;\n  dVar9 = DAT_003fa3a0;\n  dVar8 = DAT_003f9c40;\n  dVar7 = DAT_003f9c28;\n  dVar4 = DAT_003f95f8;\n  if (param_6 == 0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x89f,\n                  "ExportGrayAlphaQuantum");\n  }\n  if (*(long *)(param_6 + 0x30) != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x8a0,\n                  "ExportGrayAlphaQuantum");\n  }\n  uVar34 = *param_2;\n  if (uVar34 == 8) {\n    uVar34 = 0;\n    if ((long)param_3 < 1) {\n      return;\n    }\n    do {\n      lVar32 = *(long *)(param_1 + 0x360);\n      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n      if (NAN(fVar36)) {\n        bVar17 = 0;\n      }\n      else {\n        bVar17 = 0;\n        if ((0.0 < fVar36) && (dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12)) {\n          bVar17 = (byte)(int)(dVar4 + dVar7);\n        }\n      }\n      *param_5 = bVar17;\n      bVar17 = 0xff;\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if ((0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)) {\n            bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);\n          }\n        }\n      }\n      param_5[1] = bVar17;\n      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n      param_5 = param_5 + param_2[6] + 2;\n      uVar34 = uVar34 + 1;\n    } while (uVar34 != param_3);\n    return;\n  }\n  if (uVar34 < 9) {\n    if (uVar34 == 1) {\n      bVar35 = (int)param_2[7] == 0;\n      bVar6 = !bVar35;\n      if (param_3 != 3 && -1 < (long)(param_3 - 3)) {\n        pbVar1 = param_5 + (param_3 - 4 >> 2) + 1;\n        do {\n          *param_5 = 0;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar18 = (byte)(uVar28 << 7);\n          *param_5 = bVar18;\n          bVar17 = 0x40;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar17 = 0x40;\n            }\n            else {\n              bVar17 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar17 = bVar17 | (byte)(uVar28 << 5);\n          *param_5 = bVar17;\n          bVar18 = 0x10;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 0x10;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            bVar2 = bVar6;\n          }\n          bVar17 = bVar17 | bVar2 * '\b';\n          *param_5 = bVar17;\n          bVar18 = 4;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 4;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar6;\n          if (DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) <= DAT_003fc580) {\n            bVar2 = bVar35;\n          }\n          bVar17 = bVar17 | bVar2 * '\x02';\n          *param_5 = bVar17;\n          fVar36 = _DAT_003fa400;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          *param_5 = bVar17 | fVar36 == _DAT_003fa400;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + 1;\n        } while (param_5 != pbVar1);\n      }\n      if ((param_3 & 3) == 0) {\n        return;\n      }\n      *param_5 = 0;\n      fVar15 = DAT_0041abe0;\n      fVar14 = DAT_0041abdc;\n      fVar13 = DAT_0041abd8;\n      fVar36 = _DAT_003fa400;\n      bVar17 = 7;\n      lVar32 = 0;\n      do {\n        lVar3 = *(long *)(param_1 + 0x360);\n        bVar2 = bVar35;\n        if (DAT_003fc580 <\n            fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4) +\n            fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4) +\n            fVar15 * *(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)) {\n          bVar2 = bVar6;\n        }\n        bVar18 = bVar2 << (bVar17 & 0x1f) | *param_5;\n        *param_5 = bVar18;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        uVar28 = (uint)(!NAN(fVar37) && !NAN(_DAT_003fa400));\n        if (fVar37 != _DAT_003fa400) {\n          uVar28 = 0;\n        }\n        *param_5 = (byte)(uVar28 << (bVar17 - 1 & 0x1f)) | bVar18;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        lVar32 = lVar32 + 2;\n        bVar17 = bVar17 - 2;\n      } while (lVar32 <= (long)(ulong)((uint)param_3 & 3));\n      return;\n    }\n    if (uVar34 == 4) {\n      pbVar1 = param_5 + param_3;\n      if ((long)param_3 < 1) {\n        return;\n      }\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar37 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar37)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if (0.0 < fVar37) {\n            dVar4 = (double)fVar37 / dVar11;\n            bVar17 = 0xff;\n            if (dVar4 < dVar12) {\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }\n          }\n        }\n        *param_5 = bVar17 & 0xf0;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        *param_5 = bVar17 & 0xf0 | (byte)(int)((double)fVar37 * dVar16 + dVar7) & 0xf;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + 1;\n      } while (param_5 != pbVar1);\n      return;\n    }\nLAB_002734da:\n    uVar33 = 0;\n    if (uVar34 == 0) goto LAB_002734e9;\n  }\n  else {\n    if (uVar34 == 0x20) {\n      if ((int)param_2[2] == 1) {\n        if ((long)param_3 < 1) {\n          return;\n        }\n        uVar34 = 0;\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar37 = (float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3]);\n          bVar18 = (byte)((uint)fVar37 >> 8);\n          bVar27 = (byte)((uint)fVar37 >> 0x10);\n          bVar17 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = SUB41(fVar37,0);\n            param_5[1] = bVar18;\n            param_5[2] = bVar27;\n            param_5[3] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = bVar27;\n            param_5[2] = bVar18;\n            param_5[3] = SUB41(fVar37,0);\n          }\n          fVar37 = fVar36;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          fVar37 = (float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3]);\n          bVar17 = (byte)((uint)fVar37 >> 8);\n          bVar18 = (byte)((uint)fVar37 >> 0x10);\n          bVar27 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            param_5[4] = SUB41(fVar37,0);\n            param_5[5] = bVar17;\n            param_5[6] = bVar18;\n            param_5[7] = bVar27;\n          }\n          else {\n            param_5[4] = bVar27;\n            param_5[5] = bVar18;\n            param_5[6] = bVar17;\n            param_5[7] = SUB41(fVar37,0);\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 8;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      uVar34 = 0;\n      if ((long)param_3 < 1) {\n        return;\n      }\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar36)) {\n          uVar20 = 0;\n        }\n        else {\n          uVar20 = 0;\n          if ((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)) {\n            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = (byte)uVar20;\n          param_5[1] = bVar17;\n          param_5[2] = bVar18;\n          param_5[3] = bVar27;\n        }\n        else {\n          *param_5 = bVar27;\n          param_5[1] = bVar18;\n          param_5[2] = bVar17;\n          param_5[3] = (byte)uVar20;\n        }\n        uVar20 = 0xffffffff;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          if (NAN(fVar36)) {\n            uVar20 = 0;\n          }\n          else {\n            uVar20 = 0;\n            if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          param_5[4] = (byte)uVar20;\n          param_5[5] = bVar17;\n          param_5[6] = bVar18;\n          param_5[7] = bVar27;\n        }\n        else {\n          param_5[4] = bVar27;\n          param_5[5] = bVar18;\n          param_5[6] = bVar17;\n          param_5[7] = (byte)uVar20;\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 8;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }\n    if (uVar34 != 0x40) {\n      if (uVar34 == 0x10) {\n        if ((int)param_2[2] == 1) {\n          if ((long)param_3 < 1) {\n            return;\n          }\n          uVar34 = 0;\n          do {\n            lVar32 = *(long *)(param_1 + 0x360);\n            uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }\n            else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }\n            fVar36 = _DAT_003fa400;\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }\n            uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }\n            else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }\n            param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n            param_5 = param_5 + param_2[6] + 4;\n            uVar34 = uVar34 + 1;\n          } while (uVar34 != param_3);\n          return;\n        }\n        uVar34 = 0;\n        if ((long)param_3 < 1) {\n          return;\n        }\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n          if (NAN(fVar36)) {\n            uVar19 = 0;\n          }\n          else {\n            uVar19 = 0;\n            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = (byte)uVar19;\n            param_5[1] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = (byte)uVar19;\n          }\n          uVar19 = 0xffff;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            if (NAN(fVar36)) {\n              uVar19 = 0;\n            }\n            else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            param_5[2] = (byte)uVar19;\n            param_5[3] = bVar17;\n          }\n          else {\n            param_5[2] = bVar17;\n            param_5[3] = (byte)uVar19;\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 4;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      goto LAB_002734da;\n    }\n    if ((int)param_2[2] == 1) {\n      if ((long)param_3 < 1) {\n        return;\n      }\n      uVar34 = 0;\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        dVar4 = (double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                (double)param_2[0xd] + (double)param_2[3];\n        bVar18 = (byte)((ulong)dVar4 >> 8);\n        bVar23 = (byte)((ulong)dVar4 >> 0x10);\n        bVar24 = (byte)((ulong)dVar4 >> 0x18);\n        bVar25 = (byte)((ulong)dVar4 >> 0x20);\n        bVar26 = (byte)((ulong)dVar4 >> 0x28);\n        bVar27 = (byte)((ulong)dVar4 >> 0x30);\n        bVar17 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = SUB81(dVar4,0);\n          param_5[1] = bVar18;\n          param_5[2] = bVar23;\n          param_5[3] = bVar24;\n          param_5[4] = bVar25;\n          param_5[5] = bVar26;\n          param_5[6] = bVar27;\n          param_5[7] = bVar17;\n        }\n        else {\n          *param_5 = bVar17;\n          param_5[1] = bVar27;\n          param_5[2] = bVar26;\n          param_5[3] = bVar25;\n          param_5[4] = bVar24;\n          param_5[5] = bVar23;\n          param_5[6] = bVar18;\n          param_5[7] = SUB81(dVar4,0);\n        }\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        dVar4 = (double)fVar37 * (double)param_2[0xd] + (double)param_2[3];\n        bVar17 = (byte)((ulong)dVar4 >> 8);\n        bVar18 = (byte)((ulong)dVar4 >> 0x10);\n        bVar27 = (byte)((ulong)dVar4 >> 0x18);\n        bVar26 = (byte)((ulong)dVar4 >> 0x20);\n        bVar25 = (byte)((ulong)dVar4 >> 0x28);\n        bVar24 = (byte)((ulong)dVar4 >> 0x30);\n        bVar23 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          param_5[8] = SUB81(dVar4,0);\n          param_5[9] = bVar17;\n          param_5[10] = bVar18;\n          param_5[0xb] = bVar27;\n          param_5[0xc] = bVar26;\n          param_5[0xd] = bVar25;\n          param_5[0xe] = bVar24;\n          param_5[0xf] = bVar23;\n        }\n        else {\n          param_5[8] = bVar23;\n          param_5[9] = bVar24;\n          param_5[10] = bVar25;\n          param_5[0xb] = bVar26;\n          param_5[0xc] = bVar27;\n          param_5[0xd] = bVar18;\n          param_5[0xe] = bVar17;\n          param_5[0xf] = SUB81(dVar4,0);\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 0x10;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }\n  }\n  if (0x40 < uVar34) {\n    uVar34 = 0;\n  }\n  uVar33 = (2L << ((char)uVar34 - 1U & 0x3f)) - 1;\nLAB_002734e9:\n  if (0 < (long)param_3) {\n    uVar34 = 0;\n    do {\n      lVar32 = *(long *)(param_1 + 0x360);\n      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n      if (NAN(fVar36)) {\n        uVar31 = 0;\n      }\n      else {\n        uVar31 = 0;\n        if (0.0 < fVar36) {\n          dVar5 = ((double)fVar36 * (double)uVar33) / dVar4;\n          uVar31 = 0xffffffffffffffff;\n          if (dVar5 < dVar9) {\n            dVar5 = dVar5 + dVar7;\n            if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }\n          }\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      fVar36 = _DAT_003fa400;\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) == 0) {\nLAB_002745f5:\n        dVar5 = ((double)fVar36 * (double)uVar33) / DAT_003f95f8;\n        uVar31 = 0xffffffffffffffff;\n        if (dVar5 < DAT_003fa3a0) {\n          dVar5 = dVar5 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar5) {\n            uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar31 = (ulong)dVar5;\n          }\n        }\n      }\n      else {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          uVar31 = 0;\n        }\n        else {\n          uVar31 = 0;\n          if (0.0 < fVar36) goto LAB_002745f5;\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n      param_5 = param_5 + param_2[6];\n      uVar34 = uVar34 + 1;\n    } while (param_3 != uVar34);\n  }\n  return;\n}\n\n" comment (function_definition "void FUN_00273473(long param_1,ulong *param_2,ulong param_3,long param_4,byte *param_5,long param_6)\n\n{\n  byte *pbVar1;\n  bool bVar2;\n  long lVar3;\n  double dVar4;\n  double dVar5;\n  bool bVar6;\n  double dVar7;\n  double dVar8;\n  double dVar9;\n  double dVar10;\n  double dVar11;\n  double dVar12;\n  float fVar13;\n  float fVar14;\n  float fVar15;\n  double dVar16;\n  byte bVar17;\n  byte bVar18;\n  undefined2 uVar19;\n  undefined4 uVar20;\n  ulong uVar21;\n  ulong uVar22;\n  byte bVar23;\n  uint uVar28;\n  ulong uVar29;\n  ulong uVar30;\n  ulong uVar31;\n  long lVar32;\n  ulong uVar33;\n  ulong uVar34;\n  bool bVar35;\n  float fVar36;\n  float fVar37;\n  byte bVar24;\n  byte bVar25;\n  byte bVar26;\n  byte bVar27;\n  \n  dVar16 = DAT_0042f2e8;\n  fVar15 = DAT_0041abe0;\n  fVar14 = DAT_0041abdc;\n  fVar13 = DAT_0041abd8;\n  dVar12 = DAT_00404938;\n  dVar11 = DAT_00404930;\n  dVar10 = DAT_00404928;\n  dVar5 = DAT_00404920;\n  fVar36 = _DAT_003fa400;\n  dVar9 = DAT_003fa3a0;\n  dVar8 = DAT_003f9c40;\n  dVar7 = DAT_003f9c28;\n  dVar4 = DAT_003f95f8;\n  if (param_6 == 0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x89f,\n                  "ExportGrayAlphaQuantum");\n  }\n  if (*(long *)(param_6 + 0x30) != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x8a0,\n                  "ExportGrayAlphaQuantum");\n  }\n  uVar34 = *param_2;\n  if (uVar34 == 8) {\n    uVar34 = 0;\n    if ((long)param_3 < 1) {\n      return;\n    }\n    do {\n      lVar32 = *(long *)(param_1 + 0x360);\n      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n      if (NAN(fVar36)) {\n        bVar17 = 0;\n      }\n      else {\n        bVar17 = 0;\n        if ((0.0 < fVar36) && (dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12)) {\n          bVar17 = (byte)(int)(dVar4 + dVar7);\n        }\n      }\n      *param_5 = bVar17;\n      bVar17 = 0xff;\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if ((0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)) {\n            bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);\n          }\n        }\n      }\n      param_5[1] = bVar17;\n      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n      param_5 = param_5 + param_2[6] + 2;\n      uVar34 = uVar34 + 1;\n    } while (uVar34 != param_3);\n    return;\n  }\n  if (uVar34 < 9) {\n    if (uVar34 == 1) {\n      bVar35 = (int)param_2[7] == 0;\n      bVar6 = !bVar35;\n      if (param_3 != 3 && -1 < (long)(param_3 - 3)) {\n        pbVar1 = param_5 + (param_3 - 4 >> 2) + 1;\n        do {\n          *param_5 = 0;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar18 = (byte)(uVar28 << 7);\n          *param_5 = bVar18;\n          bVar17 = 0x40;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar17 = 0x40;\n            }\n            else {\n              bVar17 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar17 = bVar17 | (byte)(uVar28 << 5);\n          *param_5 = bVar17;\n          bVar18 = 0x10;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 0x10;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            bVar2 = bVar6;\n          }\n          bVar17 = bVar17 | bVar2 * '\b';\n          *param_5 = bVar17;\n          bVar18 = 4;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 4;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar6;\n          if (DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) <= DAT_003fc580) {\n            bVar2 = bVar35;\n          }\n          bVar17 = bVar17 | bVar2 * '\x02';\n          *param_5 = bVar17;\n          fVar36 = _DAT_003fa400;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          *param_5 = bVar17 | fVar36 == _DAT_003fa400;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + 1;\n        } while (param_5 != pbVar1);\n      }\n      if ((param_3 & 3) == 0) {\n        return;\n      }\n      *param_5 = 0;\n      fVar15 = DAT_0041abe0;\n      fVar14 = DAT_0041abdc;\n      fVar13 = DAT_0041abd8;\n      fVar36 = _DAT_003fa400;\n      bVar17 = 7;\n      lVar32 = 0;\n      do {\n        lVar3 = *(long *)(param_1 + 0x360);\n        bVar2 = bVar35;\n        if (DAT_003fc580 <\n            fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4) +\n            fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4) +\n            fVar15 * *(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)) {\n          bVar2 = bVar6;\n        }\n        bVar18 = bVar2 << (bVar17 & 0x1f) | *param_5;\n        *param_5 = bVar18;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        uVar28 = (uint)(!NAN(fVar37) && !NAN(_DAT_003fa400));\n        if (fVar37 != _DAT_003fa400) {\n          uVar28 = 0;\n        }\n        *param_5 = (byte)(uVar28 << (bVar17 - 1 & 0x1f)) | bVar18;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        lVar32 = lVar32 + 2;\n        bVar17 = bVar17 - 2;\n      } while (lVar32 <= (long)(ulong)((uint)param_3 & 3));\n      return;\n    }\n    if (uVar34 == 4) {\n      pbVar1 = param_5 + param_3;\n      if ((long)param_3 < 1) {\n        return;\n      }\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar37 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar37)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if (0.0 < fVar37) {\n            dVar4 = (double)fVar37 / dVar11;\n            bVar17 = 0xff;\n            if (dVar4 < dVar12) {\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }\n          }\n        }\n        *param_5 = bVar17 & 0xf0;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        *param_5 = bVar17 & 0xf0 | (byte)(int)((double)fVar37 * dVar16 + dVar7) & 0xf;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + 1;\n      } while (param_5 != pbVar1);\n      return;\n    }\nLAB_002734da:\n    uVar33 = 0;\n    if (uVar34 == 0) goto LAB_002734e9;\n  }\n  else {\n    if (uVar34 == 0x20) {\n      if ((int)param_2[2] == 1) {\n        if ((long)param_3 < 1) {\n          return;\n        }\n        uVar34 = 0;\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar37 = (float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3]);\n          bVar18 = (byte)((uint)fVar37 >> 8);\n          bVar27 = (byte)((uint)fVar37 >> 0x10);\n          bVar17 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = SUB41(fVar37,0);\n            param_5[1] = bVar18;\n            param_5[2] = bVar27;\n            param_5[3] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = bVar27;\n            param_5[2] = bVar18;\n            param_5[3] = SUB41(fVar37,0);\n          }\n          fVar37 = fVar36;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          fVar37 = (float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3]);\n          bVar17 = (byte)((uint)fVar37 >> 8);\n          bVar18 = (byte)((uint)fVar37 >> 0x10);\n          bVar27 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            param_5[4] = SUB41(fVar37,0);\n            param_5[5] = bVar17;\n            param_5[6] = bVar18;\n            param_5[7] = bVar27;\n          }\n          else {\n            param_5[4] = bVar27;\n            param_5[5] = bVar18;\n            param_5[6] = bVar17;\n            param_5[7] = SUB41(fVar37,0);\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 8;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      uVar34 = 0;\n      if ((long)param_3 < 1) {\n        return;\n      }\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar36)) {\n          uVar20 = 0;\n        }\n        else {\n          uVar20 = 0;\n          if ((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)) {\n            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = (byte)uVar20;\n          param_5[1] = bVar17;\n          param_5[2] = bVar18;\n          param_5[3] = bVar27;\n        }\n        else {\n          *param_5 = bVar27;\n          param_5[1] = bVar18;\n          param_5[2] = bVar17;\n          param_5[3] = (byte)uVar20;\n        }\n        uVar20 = 0xffffffff;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          if (NAN(fVar36)) {\n            uVar20 = 0;\n          }\n          else {\n            uVar20 = 0;\n            if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          param_5[4] = (byte)uVar20;\n          param_5[5] = bVar17;\n          param_5[6] = bVar18;\n          param_5[7] = bVar27;\n        }\n        else {\n          param_5[4] = bVar27;\n          param_5[5] = bVar18;\n          param_5[6] = bVar17;\n          param_5[7] = (byte)uVar20;\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 8;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }\n    if (uVar34 != 0x40) {\n      if (uVar34 == 0x10) {\n        if ((int)param_2[2] == 1) {\n          if ((long)param_3 < 1) {\n            return;\n          }\n          uVar34 = 0;\n          do {\n            lVar32 = *(long *)(param_1 + 0x360);\n            uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }\n            else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }\n            fVar36 = _DAT_003fa400;\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }\n            uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }\n            else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }\n            param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n            param_5 = param_5 + param_2[6] + 4;\n            uVar34 = uVar34 + 1;\n          } while (uVar34 != param_3);\n          return;\n        }\n        uVar34 = 0;\n        if ((long)param_3 < 1) {\n          return;\n        }\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n          if (NAN(fVar36)) {\n            uVar19 = 0;\n          }\n          else {\n            uVar19 = 0;\n            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = (byte)uVar19;\n            param_5[1] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = (byte)uVar19;\n          }\n          uVar19 = 0xffff;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            if (NAN(fVar36)) {\n              uVar19 = 0;\n            }\n            else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            param_5[2] = (byte)uVar19;\n            param_5[3] = bVar17;\n          }\n          else {\n            param_5[2] = bVar17;\n            param_5[3] = (byte)uVar19;\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 4;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      goto LAB_002734da;\n    }\n    if ((int)param_2[2] == 1) {\n      if ((long)param_3 < 1) {\n        return;\n      }\n      uVar34 = 0;\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        dVar4 = (double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                (double)param_2[0xd] + (double)param_2[3];\n        bVar18 = (byte)((ulong)dVar4 >> 8);\n        bVar23 = (byte)((ulong)dVar4 >> 0x10);\n        bVar24 = (byte)((ulong)dVar4 >> 0x18);\n        bVar25 = (byte)((ulong)dVar4 >> 0x20);\n        bVar26 = (byte)((ulong)dVar4 >> 0x28);\n        bVar27 = (byte)((ulong)dVar4 >> 0x30);\n        bVar17 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = SUB81(dVar4,0);\n          param_5[1] = bVar18;\n          param_5[2] = bVar23;\n          param_5[3] = bVar24;\n          param_5[4] = bVar25;\n          param_5[5] = bVar26;\n          param_5[6] = bVar27;\n          param_5[7] = bVar17;\n        }\n        else {\n          *param_5 = bVar17;\n          param_5[1] = bVar27;\n          param_5[2] = bVar26;\n          param_5[3] = bVar25;\n          param_5[4] = bVar24;\n          param_5[5] = bVar23;\n          param_5[6] = bVar18;\n          param_5[7] = SUB81(dVar4,0);\n        }\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        dVar4 = (double)fVar37 * (double)param_2[0xd] + (double)param_2[3];\n        bVar17 = (byte)((ulong)dVar4 >> 8);\n        bVar18 = (byte)((ulong)dVar4 >> 0x10);\n        bVar27 = (byte)((ulong)dVar4 >> 0x18);\n        bVar26 = (byte)((ulong)dVar4 >> 0x20);\n        bVar25 = (byte)((ulong)dVar4 >> 0x28);\n        bVar24 = (byte)((ulong)dVar4 >> 0x30);\n        bVar23 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          param_5[8] = SUB81(dVar4,0);\n          param_5[9] = bVar17;\n          param_5[10] = bVar18;\n          param_5[0xb] = bVar27;\n          param_5[0xc] = bVar26;\n          param_5[0xd] = bVar25;\n          param_5[0xe] = bVar24;\n          param_5[0xf] = bVar23;\n        }\n        else {\n          param_5[8] = bVar23;\n          param_5[9] = bVar24;\n          param_5[10] = bVar25;\n          param_5[0xb] = bVar26;\n          param_5[0xc] = bVar27;\n          param_5[0xd] = bVar18;\n          param_5[0xe] = bVar17;\n          param_5[0xf] = SUB81(dVar4,0);\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 0x10;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }\n  }\n  if (0x40 < uVar34) {\n    uVar34 = 0;\n  }\n  uVar33 = (2L << ((char)uVar34 - 1U & 0x3f)) - 1;\nLAB_002734e9:\n  if (0 < (long)param_3) {\n    uVar34 = 0;\n    do {\n      lVar32 = *(long *)(param_1 + 0x360);\n      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n      if (NAN(fVar36)) {\n        uVar31 = 0;\n      }\n      else {\n        uVar31 = 0;\n        if (0.0 < fVar36) {\n          dVar5 = ((double)fVar36 * (double)uVar33) / dVar4;\n          uVar31 = 0xffffffffffffffff;\n          if (dVar5 < dVar9) {\n            dVar5 = dVar5 + dVar7;\n            if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }\n          }\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      fVar36 = _DAT_003fa400;\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) == 0) {\nLAB_002745f5:\n        dVar5 = ((double)fVar36 * (double)uVar33) / DAT_003f95f8;\n        uVar31 = 0xffffffffffffffff;\n        if (dVar5 < DAT_003fa3a0) {\n          dVar5 = dVar5 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar5) {\n            uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar31 = (ulong)dVar5;\n          }\n        }\n      }\n      else {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          uVar31 = 0;\n        }\n        else {\n          uVar31 = 0;\n          if (0.0 < fVar36) goto LAB_002745f5;\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n      param_5 = param_5 + param_2[6];\n      uVar34 = uVar34 + 1;\n    } while (param_3 != uVar34);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00273473(long param_1,ulong *param_2,ulong param_3,long param_4,byte *param_5,long param_6)" identifier (parameter_list "(long param_1,ulong *param_2,ulong param_3,long param_4,byte *param_5,long param_6)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "ulong *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "ulong param_3" type_identifier identifier) , (parameter_declaration "long param_4" (sized_type_specifier "long" long) identifier) , (parameter_declaration "byte *param_5" type_identifier (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "long param_6" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  byte *pbVar1;\n  bool bVar2;\n  long lVar3;\n  double dVar4;\n  double dVar5;\n  bool bVar6;\n  double dVar7;\n  double dVar8;\n  double dVar9;\n  double dVar10;\n  double dVar11;\n  double dVar12;\n  float fVar13;\n  float fVar14;\n  float fVar15;\n  double dVar16;\n  byte bVar17;\n  byte bVar18;\n  undefined2 uVar19;\n  undefined4 uVar20;\n  ulong uVar21;\n  ulong uVar22;\n  byte bVar23;\n  uint uVar28;\n  ulong uVar29;\n  ulong uVar30;\n  ulong uVar31;\n  long lVar32;\n  ulong uVar33;\n  ulong uVar34;\n  bool bVar35;\n  float fVar36;\n  float fVar37;\n  byte bVar24;\n  byte bVar25;\n  byte bVar26;\n  byte bVar27;\n  \n  dVar16 = DAT_0042f2e8;\n  fVar15 = DAT_0041abe0;\n  fVar14 = DAT_0041abdc;\n  fVar13 = DAT_0041abd8;\n  dVar12 = DAT_00404938;\n  dVar11 = DAT_00404930;\n  dVar10 = DAT_00404928;\n  dVar5 = DAT_00404920;\n  fVar36 = _DAT_003fa400;\n  dVar9 = DAT_003fa3a0;\n  dVar8 = DAT_003f9c40;\n  dVar7 = DAT_003f9c28;\n  dVar4 = DAT_003f95f8;\n  if (param_6 == 0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x89f,\n                  "ExportGrayAlphaQuantum");\n  }\n  if (*(long *)(param_6 + 0x30) != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x8a0,\n                  "ExportGrayAlphaQuantum");\n  }\n  uVar34 = *param_2;\n  if (uVar34 == 8) {\n    uVar34 = 0;\n    if ((long)param_3 < 1) {\n      return;\n    }\n    do {\n      lVar32 = *(long *)(param_1 + 0x360);\n      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n      if (NAN(fVar36)) {\n        bVar17 = 0;\n      }\n      else {\n        bVar17 = 0;\n        if ((0.0 < fVar36) && (dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12)) {\n          bVar17 = (byte)(int)(dVar4 + dVar7);\n        }\n      }\n      *param_5 = bVar17;\n      bVar17 = 0xff;\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if ((0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)) {\n            bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);\n          }\n        }\n      }\n      param_5[1] = bVar17;\n      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n      param_5 = param_5 + param_2[6] + 2;\n      uVar34 = uVar34 + 1;\n    } while (uVar34 != param_3);\n    return;\n  }\n  if (uVar34 < 9) {\n    if (uVar34 == 1) {\n      bVar35 = (int)param_2[7] == 0;\n      bVar6 = !bVar35;\n      if (param_3 != 3 && -1 < (long)(param_3 - 3)) {\n        pbVar1 = param_5 + (param_3 - 4 >> 2) + 1;\n        do {\n          *param_5 = 0;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar18 = (byte)(uVar28 << 7);\n          *param_5 = bVar18;\n          bVar17 = 0x40;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar17 = 0x40;\n            }\n            else {\n              bVar17 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar17 = bVar17 | (byte)(uVar28 << 5);\n          *param_5 = bVar17;\n          bVar18 = 0x10;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 0x10;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            bVar2 = bVar6;\n          }\n          bVar17 = bVar17 | bVar2 * '\b';\n          *param_5 = bVar17;\n          bVar18 = 4;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 4;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar6;\n          if (DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) <= DAT_003fc580) {\n            bVar2 = bVar35;\n          }\n          bVar17 = bVar17 | bVar2 * '\x02';\n          *param_5 = bVar17;\n          fVar36 = _DAT_003fa400;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          *param_5 = bVar17 | fVar36 == _DAT_003fa400;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + 1;\n        } while (param_5 != pbVar1);\n      }\n      if ((param_3 & 3) == 0) {\n        return;\n      }\n      *param_5 = 0;\n      fVar15 = DAT_0041abe0;\n      fVar14 = DAT_0041abdc;\n      fVar13 = DAT_0041abd8;\n      fVar36 = _DAT_003fa400;\n      bVar17 = 7;\n      lVar32 = 0;\n      do {\n        lVar3 = *(long *)(param_1 + 0x360);\n        bVar2 = bVar35;\n        if (DAT_003fc580 <\n            fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4) +\n            fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4) +\n            fVar15 * *(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)) {\n          bVar2 = bVar6;\n        }\n        bVar18 = bVar2 << (bVar17 & 0x1f) | *param_5;\n        *param_5 = bVar18;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        uVar28 = (uint)(!NAN(fVar37) && !NAN(_DAT_003fa400));\n        if (fVar37 != _DAT_003fa400) {\n          uVar28 = 0;\n        }\n        *param_5 = (byte)(uVar28 << (bVar17 - 1 & 0x1f)) | bVar18;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        lVar32 = lVar32 + 2;\n        bVar17 = bVar17 - 2;\n      } while (lVar32 <= (long)(ulong)((uint)param_3 & 3));\n      return;\n    }\n    if (uVar34 == 4) {\n      pbVar1 = param_5 + param_3;\n      if ((long)param_3 < 1) {\n        return;\n      }\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar37 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar37)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if (0.0 < fVar37) {\n            dVar4 = (double)fVar37 / dVar11;\n            bVar17 = 0xff;\n            if (dVar4 < dVar12) {\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }\n          }\n        }\n        *param_5 = bVar17 & 0xf0;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        *param_5 = bVar17 & 0xf0 | (byte)(int)((double)fVar37 * dVar16 + dVar7) & 0xf;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + 1;\n      } while (param_5 != pbVar1);\n      return;\n    }\nLAB_002734da:\n    uVar33 = 0;\n    if (uVar34 == 0) goto LAB_002734e9;\n  }\n  else {\n    if (uVar34 == 0x20) {\n      if ((int)param_2[2] == 1) {\n        if ((long)param_3 < 1) {\n          return;\n        }\n        uVar34 = 0;\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar37 = (float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3]);\n          bVar18 = (byte)((uint)fVar37 >> 8);\n          bVar27 = (byte)((uint)fVar37 >> 0x10);\n          bVar17 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = SUB41(fVar37,0);\n            param_5[1] = bVar18;\n            param_5[2] = bVar27;\n            param_5[3] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = bVar27;\n            param_5[2] = bVar18;\n            param_5[3] = SUB41(fVar37,0);\n          }\n          fVar37 = fVar36;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          fVar37 = (float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3]);\n          bVar17 = (byte)((uint)fVar37 >> 8);\n          bVar18 = (byte)((uint)fVar37 >> 0x10);\n          bVar27 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            param_5[4] = SUB41(fVar37,0);\n            param_5[5] = bVar17;\n            param_5[6] = bVar18;\n            param_5[7] = bVar27;\n          }\n          else {\n            param_5[4] = bVar27;\n            param_5[5] = bVar18;\n            param_5[6] = bVar17;\n            param_5[7] = SUB41(fVar37,0);\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 8;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      uVar34 = 0;\n      if ((long)param_3 < 1) {\n        return;\n      }\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar36)) {\n          uVar20 = 0;\n        }\n        else {\n          uVar20 = 0;\n          if ((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)) {\n            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = (byte)uVar20;\n          param_5[1] = bVar17;\n          param_5[2] = bVar18;\n          param_5[3] = bVar27;\n        }\n        else {\n          *param_5 = bVar27;\n          param_5[1] = bVar18;\n          param_5[2] = bVar17;\n          param_5[3] = (byte)uVar20;\n        }\n        uVar20 = 0xffffffff;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          if (NAN(fVar36)) {\n            uVar20 = 0;\n          }\n          else {\n            uVar20 = 0;\n            if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          param_5[4] = (byte)uVar20;\n          param_5[5] = bVar17;\n          param_5[6] = bVar18;\n          param_5[7] = bVar27;\n        }\n        else {\n          param_5[4] = bVar27;\n          param_5[5] = bVar18;\n          param_5[6] = bVar17;\n          param_5[7] = (byte)uVar20;\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 8;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }\n    if (uVar34 != 0x40) {\n      if (uVar34 == 0x10) {\n        if ((int)param_2[2] == 1) {\n          if ((long)param_3 < 1) {\n            return;\n          }\n          uVar34 = 0;\n          do {\n            lVar32 = *(long *)(param_1 + 0x360);\n            uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }\n            else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }\n            fVar36 = _DAT_003fa400;\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }\n            uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }\n            else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }\n            param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n            param_5 = param_5 + param_2[6] + 4;\n            uVar34 = uVar34 + 1;\n          } while (uVar34 != param_3);\n          return;\n        }\n        uVar34 = 0;\n        if ((long)param_3 < 1) {\n          return;\n        }\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n          if (NAN(fVar36)) {\n            uVar19 = 0;\n          }\n          else {\n            uVar19 = 0;\n            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = (byte)uVar19;\n            param_5[1] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = (byte)uVar19;\n          }\n          uVar19 = 0xffff;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            if (NAN(fVar36)) {\n              uVar19 = 0;\n            }\n            else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            param_5[2] = (byte)uVar19;\n            param_5[3] = bVar17;\n          }\n          else {\n            param_5[2] = bVar17;\n            param_5[3] = (byte)uVar19;\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 4;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      goto LAB_002734da;\n    }\n    if ((int)param_2[2] == 1) {\n      if ((long)param_3 < 1) {\n        return;\n      }\n      uVar34 = 0;\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        dVar4 = (double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                (double)param_2[0xd] + (double)param_2[3];\n        bVar18 = (byte)((ulong)dVar4 >> 8);\n        bVar23 = (byte)((ulong)dVar4 >> 0x10);\n        bVar24 = (byte)((ulong)dVar4 >> 0x18);\n        bVar25 = (byte)((ulong)dVar4 >> 0x20);\n        bVar26 = (byte)((ulong)dVar4 >> 0x28);\n        bVar27 = (byte)((ulong)dVar4 >> 0x30);\n        bVar17 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = SUB81(dVar4,0);\n          param_5[1] = bVar18;\n          param_5[2] = bVar23;\n          param_5[3] = bVar24;\n          param_5[4] = bVar25;\n          param_5[5] = bVar26;\n          param_5[6] = bVar27;\n          param_5[7] = bVar17;\n        }\n        else {\n          *param_5 = bVar17;\n          param_5[1] = bVar27;\n          param_5[2] = bVar26;\n          param_5[3] = bVar25;\n          param_5[4] = bVar24;\n          param_5[5] = bVar23;\n          param_5[6] = bVar18;\n          param_5[7] = SUB81(dVar4,0);\n        }\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        dVar4 = (double)fVar37 * (double)param_2[0xd] + (double)param_2[3];\n        bVar17 = (byte)((ulong)dVar4 >> 8);\n        bVar18 = (byte)((ulong)dVar4 >> 0x10);\n        bVar27 = (byte)((ulong)dVar4 >> 0x18);\n        bVar26 = (byte)((ulong)dVar4 >> 0x20);\n        bVar25 = (byte)((ulong)dVar4 >> 0x28);\n        bVar24 = (byte)((ulong)dVar4 >> 0x30);\n        bVar23 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          param_5[8] = SUB81(dVar4,0);\n          param_5[9] = bVar17;\n          param_5[10] = bVar18;\n          param_5[0xb] = bVar27;\n          param_5[0xc] = bVar26;\n          param_5[0xd] = bVar25;\n          param_5[0xe] = bVar24;\n          param_5[0xf] = bVar23;\n        }\n        else {\n          param_5[8] = bVar23;\n          param_5[9] = bVar24;\n          param_5[10] = bVar25;\n          param_5[0xb] = bVar26;\n          param_5[0xc] = bVar27;\n          param_5[0xd] = bVar18;\n          param_5[0xe] = bVar17;\n          param_5[0xf] = SUB81(dVar4,0);\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 0x10;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }\n  }\n  if (0x40 < uVar34) {\n    uVar34 = 0;\n  }\n  uVar33 = (2L << ((char)uVar34 - 1U & 0x3f)) - 1;\nLAB_002734e9:\n  if (0 < (long)param_3) {\n    uVar34 = 0;\n    do {\n      lVar32 = *(long *)(param_1 + 0x360);\n      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n      if (NAN(fVar36)) {\n        uVar31 = 0;\n      }\n      else {\n        uVar31 = 0;\n        if (0.0 < fVar36) {\n          dVar5 = ((double)fVar36 * (double)uVar33) / dVar4;\n          uVar31 = 0xffffffffffffffff;\n          if (dVar5 < dVar9) {\n            dVar5 = dVar5 + dVar7;\n            if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }\n          }\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      fVar36 = _DAT_003fa400;\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) == 0) {\nLAB_002745f5:\n        dVar5 = ((double)fVar36 * (double)uVar33) / DAT_003f95f8;\n        uVar31 = 0xffffffffffffffff;\n        if (dVar5 < DAT_003fa3a0) {\n          dVar5 = dVar5 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar5) {\n            uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar31 = (ulong)dVar5;\n          }\n        }\n      }\n      else {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          uVar31 = 0;\n        }\n        else {\n          uVar31 = 0;\n          if (0.0 < fVar36) goto LAB_002745f5;\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n      param_5 = param_5 + param_2[6];\n      uVar34 = uVar34 + 1;\n    } while (param_3 != uVar34);\n  }\n  return;\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "double dVar4;" primitive_type identifier ;) (declaration "double dVar5;" primitive_type identifier ;) (declaration "bool bVar6;" primitive_type identifier ;) (declaration "double dVar7;" primitive_type identifier ;) (declaration "double dVar8;" primitive_type identifier ;) (declaration "double dVar9;" primitive_type 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 "float fVar15;" primitive_type identifier ;) (declaration "double dVar16;" primitive_type identifier ;) (declaration "byte bVar17;" type_identifier identifier ;) (declaration "byte bVar18;" type_identifier identifier ;) (declaration "undefined2 uVar19;" type_identifier identifier ;) (declaration "undefined4 uVar20;" type_identifier identifier ;) (declaration "ulong uVar21;" type_identifier identifier ;) (declaration "ulong uVar22;" type_identifier identifier ;) (declaration "byte bVar23;" type_identifier identifier ;) (declaration "uint uVar28;" type_identifier identifier ;) (declaration "ulong uVar29;" type_identifier identifier ;) (declaration "ulong uVar30;" type_identifier identifier ;) (declaration "ulong uVar31;" type_identifier identifier ;) (declaration "long lVar32;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar33;" type_identifier identifier ;) (declaration "ulong uVar34;" type_identifier identifier ;) (declaration "bool bVar35;" primitive_type identifier ;) (declaration "float fVar36;" primitive_type identifier ;) (declaration "float fVar37;" primitive_type identifier ;) (declaration "byte bVar24;" type_identifier identifier ;) (declaration "byte bVar25;" type_identifier identifier ;) (declaration "byte bVar26;" type_identifier identifier ;) (declaration "byte bVar27;" type_identifier identifier ;) (expression_statement "dVar16 = DAT_0042f2e8;" (assignment_expression "dVar16 = DAT_0042f2e8" identifier = identifier) ;) (expression_statement "fVar15 = DAT_0041abe0;" (assignment_expression "fVar15 = DAT_0041abe0" identifier = identifier) ;) (expression_statement "fVar14 = DAT_0041abdc;" (assignment_expression "fVar14 = DAT_0041abdc" identifier = identifier) ;) (expression_statement "fVar13 = DAT_0041abd8;" (assignment_expression "fVar13 = DAT_0041abd8" identifier = identifier) ;) (expression_statement "dVar12 = DAT_00404938;" (assignment_expression "dVar12 = DAT_00404938" identifier = identifier) ;) (expression_statement "dVar11 = DAT_00404930;" (assignment_expression "dVar11 = DAT_00404930" identifier = identifier) ;) (expression_statement "dVar10 = DAT_00404928;" (assignment_expression "dVar10 = DAT_00404928" identifier = identifier) ;) (expression_statement "dVar5 = DAT_00404920;" (assignment_expression "dVar5 = DAT_00404920" identifier = identifier) ;) (expression_statement "fVar36 = _DAT_003fa400;" (assignment_expression "fVar36 = _DAT_003fa400" identifier = identifier) ;) (expression_statement "dVar9 = DAT_003fa3a0;" (assignment_expression "dVar9 = DAT_003fa3a0" identifier = identifier) ;) (expression_statement "dVar8 = DAT_003f9c40;" (assignment_expression "dVar8 = DAT_003f9c40" identifier = identifier) ;) (expression_statement "dVar7 = DAT_003f9c28;" (assignment_expression "dVar7 = DAT_003f9c28" identifier = identifier) ;) (expression_statement "dVar4 = DAT_003f95f8;" (assignment_expression "dVar4 = DAT_003f95f8" identifier = identifier) ;) (if_statement "if (param_6 == 0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x89f,\n                  "ExportGrayAlphaQuantum");\n  }" if (parenthesized_expression "(param_6 == 0)" ( (binary_expression "param_6 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x89f,\n                  "ExportGrayAlphaQuantum");\n  }" { comment (expression_statement "__assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x89f,\n                  "ExportGrayAlphaQuantum");" (call_expression "__assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x89f,\n                  "ExportGrayAlphaQuantum")" identifier (argument_list "("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x89f,\n                  "ExportGrayAlphaQuantum")" ( (string_literal ""exception != (ExceptionInfo *) NULL"" " string_content ") , (string_literal ""MagickCore/quantum-export.c"" " string_content ") , number_literal , (string_literal ""ExportGrayAlphaQuantum"" " string_content ") ))) ;) })) (if_statement "if (*(long *)(param_6 + 0x30) != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x8a0,\n                  "ExportGrayAlphaQuantum");\n  }" if (parenthesized_expression "(*(long *)(param_6 + 0x30) != 0xabacadab)" ( (binary_expression "*(long *)(param_6 + 0x30) != 0xabacadab" (pointer_expression "*(long *)(param_6 + 0x30)" * (cast_expression "(long *)(param_6 + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + 0x30)" ( (binary_expression "param_6 + 0x30" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x8a0,\n                  "ExportGrayAlphaQuantum");\n  }" { comment (expression_statement "__assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x8a0,\n                  "ExportGrayAlphaQuantum");" (call_expression "__assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x8a0,\n                  "ExportGrayAlphaQuantum")" identifier (argument_list "("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x8a0,\n                  "ExportGrayAlphaQuantum")" ( (string_literal ""exception->signature == MagickCoreSignature"" " string_content ") , (string_literal ""MagickCore/quantum-export.c"" " string_content ") , number_literal , (string_literal ""ExportGrayAlphaQuantum"" " string_content ") ))) ;) })) (expression_statement "uVar34 = *param_2;" (assignment_expression "uVar34 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (uVar34 == 8) {\n    uVar34 = 0;\n    if ((long)param_3 < 1) {\n      return;\n    }\n    do {\n      lVar32 = *(long *)(param_1 + 0x360);\n      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n      if (NAN(fVar36)) {\n        bVar17 = 0;\n      }\n      else {\n        bVar17 = 0;\n        if ((0.0 < fVar36) && (dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12)) {\n          bVar17 = (byte)(int)(dVar4 + dVar7);\n        }\n      }\n      *param_5 = bVar17;\n      bVar17 = 0xff;\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if ((0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)) {\n            bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);\n          }\n        }\n      }\n      param_5[1] = bVar17;\n      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n      param_5 = param_5 + param_2[6] + 2;\n      uVar34 = uVar34 + 1;\n    } while (uVar34 != param_3);\n    return;\n  }" if (parenthesized_expression "(uVar34 == 8)" ( (binary_expression "uVar34 == 8" identifier == number_literal) )) (compound_statement "{\n    uVar34 = 0;\n    if ((long)param_3 < 1) {\n      return;\n    }\n    do {\n      lVar32 = *(long *)(param_1 + 0x360);\n      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n      if (NAN(fVar36)) {\n        bVar17 = 0;\n      }\n      else {\n        bVar17 = 0;\n        if ((0.0 < fVar36) && (dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12)) {\n          bVar17 = (byte)(int)(dVar4 + dVar7);\n        }\n      }\n      *param_5 = bVar17;\n      bVar17 = 0xff;\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if ((0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)) {\n            bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);\n          }\n        }\n      }\n      param_5[1] = bVar17;\n      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n      param_5 = param_5 + param_2[6] + 2;\n      uVar34 = uVar34 + 1;\n    } while (uVar34 != param_3);\n    return;\n  }" { (expression_statement "uVar34 = 0;" (assignment_expression "uVar34 = 0" identifier = number_literal) ;) (if_statement "if ((long)param_3 < 1) {\n      return;\n    }" if (parenthesized_expression "((long)param_3 < 1)" ( (binary_expression "(long)param_3 < 1" (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (do_statement "do {\n      lVar32 = *(long *)(param_1 + 0x360);\n      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n      if (NAN(fVar36)) {\n        bVar17 = 0;\n      }\n      else {\n        bVar17 = 0;\n        if ((0.0 < fVar36) && (dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12)) {\n          bVar17 = (byte)(int)(dVar4 + dVar7);\n        }\n      }\n      *param_5 = bVar17;\n      bVar17 = 0xff;\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if ((0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)) {\n            bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);\n          }\n        }\n      }\n      param_5[1] = bVar17;\n      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n      param_5 = param_5 + param_2[6] + 2;\n      uVar34 = uVar34 + 1;\n    } while (uVar34 != param_3);" do (compound_statement "{\n      lVar32 = *(long *)(param_1 + 0x360);\n      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n      if (NAN(fVar36)) {\n        bVar17 = 0;\n      }\n      else {\n        bVar17 = 0;\n        if ((0.0 < fVar36) && (dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12)) {\n          bVar17 = (byte)(int)(dVar4 + dVar7);\n        }\n      }\n      *param_5 = bVar17;\n      bVar17 = 0xff;\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if ((0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)) {\n            bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);\n          }\n        }\n      }\n      param_5[1] = bVar17;\n      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n      param_5 = param_5 + param_2[6] + 2;\n      uVar34 = uVar34 + 1;\n    }" { (expression_statement "lVar32 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar32 = *(long *)(param_1 + 0x360)" identifier = (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);" (assignment_expression "fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" identifier = (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x18) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x18) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x18) * 4" (pointer_expression "*(long *)(lVar32 + 0x18)" * (cast_expression "(long *)(lVar32 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x18)" ( (binary_expression "lVar32 + 0x18" identifier + number_literal) )))) * number_literal)) ))))) + (binary_expression "fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 8) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 8) * 4" identifier + (binary_expression "*(long *)(lVar32 + 8) * 4" (pointer_expression "*(long *)(lVar32 + 8)" * (cast_expression "(long *)(lVar32 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 8)" ( (binary_expression "lVar32 + 8" identifier + number_literal) )))) * number_literal)) )))))) + (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x28) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x28) * 4" (pointer_expression "*(long *)(lVar32 + 0x28)" * (cast_expression "(long *)(lVar32 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x28)" ( (binary_expression "lVar32 + 0x28" identifier + number_literal) )))) * number_literal)) ))))))) ;) (if_statement "if (NAN(fVar36)) {\n        bVar17 = 0;\n      }\n      else {\n        bVar17 = 0;\n        if ((0.0 < fVar36) && (dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12)) {\n          bVar17 = (byte)(int)(dVar4 + dVar7);\n        }\n      }" if (parenthesized_expression "(NAN(fVar36))" ( (call_expression "NAN(fVar36)" identifier (argument_list "(fVar36)" ( identifier ))) )) (compound_statement "{\n        bVar17 = 0;\n      }" { (expression_statement "bVar17 = 0;" (assignment_expression "bVar17 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        bVar17 = 0;\n        if ((0.0 < fVar36) && (dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12)) {\n          bVar17 = (byte)(int)(dVar4 + dVar7);\n        }\n      }" else (compound_statement "{\n        bVar17 = 0;\n        if ((0.0 < fVar36) && (dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12)) {\n          bVar17 = (byte)(int)(dVar4 + dVar7);\n        }\n      }" { (expression_statement "bVar17 = 0;" (assignment_expression "bVar17 = 0" identifier = number_literal) ;) (if_statement "if ((0.0 < fVar36) && (dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12)) {\n          bVar17 = (byte)(int)(dVar4 + dVar7);\n        }" if (parenthesized_expression "((0.0 < fVar36) && (dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12))" ( (binary_expression "(0.0 < fVar36) && (dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12)" (parenthesized_expression "(0.0 < fVar36)" ( (binary_expression "0.0 < fVar36" number_literal < identifier) )) && (parenthesized_expression "(dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12)" ( (comma_expression "dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12" (assignment_expression "dVar4 = (double)fVar36 / dVar11" identifier = (binary_expression "(double)fVar36 / dVar11" (cast_expression "(double)fVar36" ( (type_descriptor "double" primitive_type) ) identifier) / identifier)) , (comma_expression "bVar17 = 0xff, dVar4 < dVar12" (assignment_expression "bVar17 = 0xff" identifier = number_literal) , (binary_expression "dVar4 < dVar12" identifier < identifier))) ))) )) (compound_statement "{\n          bVar17 = (byte)(int)(dVar4 + dVar7);\n        }" { (expression_statement "bVar17 = (byte)(int)(dVar4 + dVar7);" (assignment_expression "bVar17 = (byte)(int)(dVar4 + dVar7)" identifier = (call_expression "(byte)(int)(dVar4 + dVar7)" (call_expression "(byte)(int)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(int)" ( identifier ))) (argument_list "(dVar4 + dVar7)" ( (binary_expression "dVar4 + dVar7" identifier + identifier) )))) ;) })) }))) (expression_statement "*param_5 = bVar17;" (assignment_expression "*param_5 = bVar17" (pointer_expression "*param_5" * identifier) = identifier) ;) (expression_statement "bVar17 = 0xff;" (assignment_expression "bVar17 = 0xff" identifier = number_literal) ;) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if ((0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)) {\n            bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);\n          }\n        }\n      }" if (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0)" ( (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44)" * (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x44)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x44" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if ((0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)) {\n            bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);\n          }\n        }\n      }" { (expression_statement "fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);" (assignment_expression "fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" identifier = (pointer_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (binary_expression "param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" identifier + (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48)" * (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x48)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x48" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (NAN(fVar36)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if ((0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)) {\n            bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);\n          }\n        }" if (parenthesized_expression "(NAN(fVar36))" ( (call_expression "NAN(fVar36)" identifier (argument_list "(fVar36)" ( identifier ))) )) (compound_statement "{\n          bVar17 = 0;\n        }" { (expression_statement "bVar17 = 0;" (assignment_expression "bVar17 = 0" identifier = number_literal) ;) }) (else_clause "else {\n          bVar17 = 0;\n          if ((0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)) {\n            bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);\n          }\n        }" else (compound_statement "{\n          bVar17 = 0;\n          if ((0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)) {\n            bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);\n          }\n        }" { (expression_statement "bVar17 = 0;" (assignment_expression "bVar17 = 0" identifier = number_literal) ;) (if_statement "if ((0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)) {\n            bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);\n          }" if (parenthesized_expression "((0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938))" ( (binary_expression "(0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)" (parenthesized_expression "(0.0 < fVar36)" ( (binary_expression "0.0 < fVar36" number_literal < identifier) )) && (parenthesized_expression "(bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)" ( (comma_expression "bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938" (assignment_expression "bVar17 = 0xff" identifier = number_literal) , (binary_expression "(double)fVar36 / DAT_00404930 < DAT_00404938" (binary_expression "(double)fVar36 / DAT_00404930" (cast_expression "(double)fVar36" ( (type_descriptor "double" primitive_type) ) identifier) / identifier) < identifier)) ))) )) (compound_statement "{\n            bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);\n          }" { (expression_statement "bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);" (assignment_expression "bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28)" identifier = (call_expression "(byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28)" (call_expression "(byte)(int)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(int)" ( identifier ))) (argument_list "((double)fVar36 / DAT_00404930 + DAT_003f9c28)" ( (binary_expression "(double)fVar36 / DAT_00404930 + DAT_003f9c28" (binary_expression "(double)fVar36 / DAT_00404930" (cast_expression "(double)fVar36" ( (type_descriptor "double" primitive_type) ) identifier) / identifier) + identifier) )))) ;) })) }))) })) (expression_statement "param_5[1] = bVar17;" (assignment_expression "param_5[1] = bVar17" (subscript_expression "param_5[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4" identifier = (binary_expression "param_4 + *(long *)(param_1 + 0x340) * 4" identifier + (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" * (cast_expression "(long *)(param_1 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "param_5 = param_5 + param_2[6] + 2;" (assignment_expression "param_5 = param_5 + param_2[6] + 2" identifier = (binary_expression "param_5 + param_2[6] + 2" (binary_expression "param_5 + param_2[6]" identifier + (subscript_expression "param_2[6]" identifier [ number_literal ])) + number_literal)) ;) (expression_statement "uVar34 = uVar34 + 1;" (assignment_expression "uVar34 = uVar34 + 1" identifier = (binary_expression "uVar34 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar34 != param_3)" ( (binary_expression "uVar34 != param_3" identifier != identifier) )) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar34 < 9) {\n    if (uVar34 == 1) {\n      bVar35 = (int)param_2[7] == 0;\n      bVar6 = !bVar35;\n      if (param_3 != 3 && -1 < (long)(param_3 - 3)) {\n        pbVar1 = param_5 + (param_3 - 4 >> 2) + 1;\n        do {\n          *param_5 = 0;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar18 = (byte)(uVar28 << 7);\n          *param_5 = bVar18;\n          bVar17 = 0x40;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar17 = 0x40;\n            }\n            else {\n              bVar17 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar17 = bVar17 | (byte)(uVar28 << 5);\n          *param_5 = bVar17;\n          bVar18 = 0x10;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 0x10;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            bVar2 = bVar6;\n          }\n          bVar17 = bVar17 | bVar2 * '\b';\n          *param_5 = bVar17;\n          bVar18 = 4;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 4;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar6;\n          if (DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) <= DAT_003fc580) {\n            bVar2 = bVar35;\n          }\n          bVar17 = bVar17 | bVar2 * '\x02';\n          *param_5 = bVar17;\n          fVar36 = _DAT_003fa400;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          *param_5 = bVar17 | fVar36 == _DAT_003fa400;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + 1;\n        } while (param_5 != pbVar1);\n      }\n      if ((param_3 & 3) == 0) {\n        return;\n      }\n      *param_5 = 0;\n      fVar15 = DAT_0041abe0;\n      fVar14 = DAT_0041abdc;\n      fVar13 = DAT_0041abd8;\n      fVar36 = _DAT_003fa400;\n      bVar17 = 7;\n      lVar32 = 0;\n      do {\n        lVar3 = *(long *)(param_1 + 0x360);\n        bVar2 = bVar35;\n        if (DAT_003fc580 <\n            fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4) +\n            fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4) +\n            fVar15 * *(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)) {\n          bVar2 = bVar6;\n        }\n        bVar18 = bVar2 << (bVar17 & 0x1f) | *param_5;\n        *param_5 = bVar18;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        uVar28 = (uint)(!NAN(fVar37) && !NAN(_DAT_003fa400));\n        if (fVar37 != _DAT_003fa400) {\n          uVar28 = 0;\n        }\n        *param_5 = (byte)(uVar28 << (bVar17 - 1 & 0x1f)) | bVar18;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        lVar32 = lVar32 + 2;\n        bVar17 = bVar17 - 2;\n      } while (lVar32 <= (long)(ulong)((uint)param_3 & 3));\n      return;\n    }\n    if (uVar34 == 4) {\n      pbVar1 = param_5 + param_3;\n      if ((long)param_3 < 1) {\n        return;\n      }\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar37 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar37)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if (0.0 < fVar37) {\n            dVar4 = (double)fVar37 / dVar11;\n            bVar17 = 0xff;\n            if (dVar4 < dVar12) {\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }\n          }\n        }\n        *param_5 = bVar17 & 0xf0;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        *param_5 = bVar17 & 0xf0 | (byte)(int)((double)fVar37 * dVar16 + dVar7) & 0xf;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + 1;\n      } while (param_5 != pbVar1);\n      return;\n    }\nLAB_002734da:\n    uVar33 = 0;\n    if (uVar34 == 0) goto LAB_002734e9;\n  }\n  else {\n    if (uVar34 == 0x20) {\n      if ((int)param_2[2] == 1) {\n        if ((long)param_3 < 1) {\n          return;\n        }\n        uVar34 = 0;\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar37 = (float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3]);\n          bVar18 = (byte)((uint)fVar37 >> 8);\n          bVar27 = (byte)((uint)fVar37 >> 0x10);\n          bVar17 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = SUB41(fVar37,0);\n            param_5[1] = bVar18;\n            param_5[2] = bVar27;\n            param_5[3] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = bVar27;\n            param_5[2] = bVar18;\n            param_5[3] = SUB41(fVar37,0);\n          }\n          fVar37 = fVar36;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          fVar37 = (float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3]);\n          bVar17 = (byte)((uint)fVar37 >> 8);\n          bVar18 = (byte)((uint)fVar37 >> 0x10);\n          bVar27 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            param_5[4] = SUB41(fVar37,0);\n            param_5[5] = bVar17;\n            param_5[6] = bVar18;\n            param_5[7] = bVar27;\n          }\n          else {\n            param_5[4] = bVar27;\n            param_5[5] = bVar18;\n            param_5[6] = bVar17;\n            param_5[7] = SUB41(fVar37,0);\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 8;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      uVar34 = 0;\n      if ((long)param_3 < 1) {\n        return;\n      }\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar36)) {\n          uVar20 = 0;\n        }\n        else {\n          uVar20 = 0;\n          if ((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)) {\n            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = (byte)uVar20;\n          param_5[1] = bVar17;\n          param_5[2] = bVar18;\n          param_5[3] = bVar27;\n        }\n        else {\n          *param_5 = bVar27;\n          param_5[1] = bVar18;\n          param_5[2] = bVar17;\n          param_5[3] = (byte)uVar20;\n        }\n        uVar20 = 0xffffffff;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          if (NAN(fVar36)) {\n            uVar20 = 0;\n          }\n          else {\n            uVar20 = 0;\n            if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          param_5[4] = (byte)uVar20;\n          param_5[5] = bVar17;\n          param_5[6] = bVar18;\n          param_5[7] = bVar27;\n        }\n        else {\n          param_5[4] = bVar27;\n          param_5[5] = bVar18;\n          param_5[6] = bVar17;\n          param_5[7] = (byte)uVar20;\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 8;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }\n    if (uVar34 != 0x40) {\n      if (uVar34 == 0x10) {\n        if ((int)param_2[2] == 1) {\n          if ((long)param_3 < 1) {\n            return;\n          }\n          uVar34 = 0;\n          do {\n            lVar32 = *(long *)(param_1 + 0x360);\n            uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }\n            else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }\n            fVar36 = _DAT_003fa400;\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }\n            uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }\n            else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }\n            param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n            param_5 = param_5 + param_2[6] + 4;\n            uVar34 = uVar34 + 1;\n          } while (uVar34 != param_3);\n          return;\n        }\n        uVar34 = 0;\n        if ((long)param_3 < 1) {\n          return;\n        }\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n          if (NAN(fVar36)) {\n            uVar19 = 0;\n          }\n          else {\n            uVar19 = 0;\n            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = (byte)uVar19;\n            param_5[1] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = (byte)uVar19;\n          }\n          uVar19 = 0xffff;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            if (NAN(fVar36)) {\n              uVar19 = 0;\n            }\n            else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            param_5[2] = (byte)uVar19;\n            param_5[3] = bVar17;\n          }\n          else {\n            param_5[2] = bVar17;\n            param_5[3] = (byte)uVar19;\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 4;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      goto LAB_002734da;\n    }\n    if ((int)param_2[2] == 1) {\n      if ((long)param_3 < 1) {\n        return;\n      }\n      uVar34 = 0;\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        dVar4 = (double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                (double)param_2[0xd] + (double)param_2[3];\n        bVar18 = (byte)((ulong)dVar4 >> 8);\n        bVar23 = (byte)((ulong)dVar4 >> 0x10);\n        bVar24 = (byte)((ulong)dVar4 >> 0x18);\n        bVar25 = (byte)((ulong)dVar4 >> 0x20);\n        bVar26 = (byte)((ulong)dVar4 >> 0x28);\n        bVar27 = (byte)((ulong)dVar4 >> 0x30);\n        bVar17 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = SUB81(dVar4,0);\n          param_5[1] = bVar18;\n          param_5[2] = bVar23;\n          param_5[3] = bVar24;\n          param_5[4] = bVar25;\n          param_5[5] = bVar26;\n          param_5[6] = bVar27;\n          param_5[7] = bVar17;\n        }\n        else {\n          *param_5 = bVar17;\n          param_5[1] = bVar27;\n          param_5[2] = bVar26;\n          param_5[3] = bVar25;\n          param_5[4] = bVar24;\n          param_5[5] = bVar23;\n          param_5[6] = bVar18;\n          param_5[7] = SUB81(dVar4,0);\n        }\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        dVar4 = (double)fVar37 * (double)param_2[0xd] + (double)param_2[3];\n        bVar17 = (byte)((ulong)dVar4 >> 8);\n        bVar18 = (byte)((ulong)dVar4 >> 0x10);\n        bVar27 = (byte)((ulong)dVar4 >> 0x18);\n        bVar26 = (byte)((ulong)dVar4 >> 0x20);\n        bVar25 = (byte)((ulong)dVar4 >> 0x28);\n        bVar24 = (byte)((ulong)dVar4 >> 0x30);\n        bVar23 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          param_5[8] = SUB81(dVar4,0);\n          param_5[9] = bVar17;\n          param_5[10] = bVar18;\n          param_5[0xb] = bVar27;\n          param_5[0xc] = bVar26;\n          param_5[0xd] = bVar25;\n          param_5[0xe] = bVar24;\n          param_5[0xf] = bVar23;\n        }\n        else {\n          param_5[8] = bVar23;\n          param_5[9] = bVar24;\n          param_5[10] = bVar25;\n          param_5[0xb] = bVar26;\n          param_5[0xc] = bVar27;\n          param_5[0xd] = bVar18;\n          param_5[0xe] = bVar17;\n          param_5[0xf] = SUB81(dVar4,0);\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 0x10;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }\n  }" if (parenthesized_expression "(uVar34 < 9)" ( (binary_expression "uVar34 < 9" identifier < number_literal) )) (compound_statement "{\n    if (uVar34 == 1) {\n      bVar35 = (int)param_2[7] == 0;\n      bVar6 = !bVar35;\n      if (param_3 != 3 && -1 < (long)(param_3 - 3)) {\n        pbVar1 = param_5 + (param_3 - 4 >> 2) + 1;\n        do {\n          *param_5 = 0;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar18 = (byte)(uVar28 << 7);\n          *param_5 = bVar18;\n          bVar17 = 0x40;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar17 = 0x40;\n            }\n            else {\n              bVar17 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar17 = bVar17 | (byte)(uVar28 << 5);\n          *param_5 = bVar17;\n          bVar18 = 0x10;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 0x10;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            bVar2 = bVar6;\n          }\n          bVar17 = bVar17 | bVar2 * '\b';\n          *param_5 = bVar17;\n          bVar18 = 4;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 4;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar6;\n          if (DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) <= DAT_003fc580) {\n            bVar2 = bVar35;\n          }\n          bVar17 = bVar17 | bVar2 * '\x02';\n          *param_5 = bVar17;\n          fVar36 = _DAT_003fa400;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          *param_5 = bVar17 | fVar36 == _DAT_003fa400;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + 1;\n        } while (param_5 != pbVar1);\n      }\n      if ((param_3 & 3) == 0) {\n        return;\n      }\n      *param_5 = 0;\n      fVar15 = DAT_0041abe0;\n      fVar14 = DAT_0041abdc;\n      fVar13 = DAT_0041abd8;\n      fVar36 = _DAT_003fa400;\n      bVar17 = 7;\n      lVar32 = 0;\n      do {\n        lVar3 = *(long *)(param_1 + 0x360);\n        bVar2 = bVar35;\n        if (DAT_003fc580 <\n            fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4) +\n            fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4) +\n            fVar15 * *(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)) {\n          bVar2 = bVar6;\n        }\n        bVar18 = bVar2 << (bVar17 & 0x1f) | *param_5;\n        *param_5 = bVar18;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        uVar28 = (uint)(!NAN(fVar37) && !NAN(_DAT_003fa400));\n        if (fVar37 != _DAT_003fa400) {\n          uVar28 = 0;\n        }\n        *param_5 = (byte)(uVar28 << (bVar17 - 1 & 0x1f)) | bVar18;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        lVar32 = lVar32 + 2;\n        bVar17 = bVar17 - 2;\n      } while (lVar32 <= (long)(ulong)((uint)param_3 & 3));\n      return;\n    }\n    if (uVar34 == 4) {\n      pbVar1 = param_5 + param_3;\n      if ((long)param_3 < 1) {\n        return;\n      }\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar37 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar37)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if (0.0 < fVar37) {\n            dVar4 = (double)fVar37 / dVar11;\n            bVar17 = 0xff;\n            if (dVar4 < dVar12) {\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }\n          }\n        }\n        *param_5 = bVar17 & 0xf0;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        *param_5 = bVar17 & 0xf0 | (byte)(int)((double)fVar37 * dVar16 + dVar7) & 0xf;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + 1;\n      } while (param_5 != pbVar1);\n      return;\n    }\nLAB_002734da:\n    uVar33 = 0;\n    if (uVar34 == 0) goto LAB_002734e9;\n  }" { (if_statement "if (uVar34 == 1) {\n      bVar35 = (int)param_2[7] == 0;\n      bVar6 = !bVar35;\n      if (param_3 != 3 && -1 < (long)(param_3 - 3)) {\n        pbVar1 = param_5 + (param_3 - 4 >> 2) + 1;\n        do {\n          *param_5 = 0;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar18 = (byte)(uVar28 << 7);\n          *param_5 = bVar18;\n          bVar17 = 0x40;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar17 = 0x40;\n            }\n            else {\n              bVar17 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar17 = bVar17 | (byte)(uVar28 << 5);\n          *param_5 = bVar17;\n          bVar18 = 0x10;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 0x10;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            bVar2 = bVar6;\n          }\n          bVar17 = bVar17 | bVar2 * '\b';\n          *param_5 = bVar17;\n          bVar18 = 4;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 4;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar6;\n          if (DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) <= DAT_003fc580) {\n            bVar2 = bVar35;\n          }\n          bVar17 = bVar17 | bVar2 * '\x02';\n          *param_5 = bVar17;\n          fVar36 = _DAT_003fa400;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          *param_5 = bVar17 | fVar36 == _DAT_003fa400;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + 1;\n        } while (param_5 != pbVar1);\n      }\n      if ((param_3 & 3) == 0) {\n        return;\n      }\n      *param_5 = 0;\n      fVar15 = DAT_0041abe0;\n      fVar14 = DAT_0041abdc;\n      fVar13 = DAT_0041abd8;\n      fVar36 = _DAT_003fa400;\n      bVar17 = 7;\n      lVar32 = 0;\n      do {\n        lVar3 = *(long *)(param_1 + 0x360);\n        bVar2 = bVar35;\n        if (DAT_003fc580 <\n            fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4) +\n            fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4) +\n            fVar15 * *(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)) {\n          bVar2 = bVar6;\n        }\n        bVar18 = bVar2 << (bVar17 & 0x1f) | *param_5;\n        *param_5 = bVar18;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        uVar28 = (uint)(!NAN(fVar37) && !NAN(_DAT_003fa400));\n        if (fVar37 != _DAT_003fa400) {\n          uVar28 = 0;\n        }\n        *param_5 = (byte)(uVar28 << (bVar17 - 1 & 0x1f)) | bVar18;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        lVar32 = lVar32 + 2;\n        bVar17 = bVar17 - 2;\n      } while (lVar32 <= (long)(ulong)((uint)param_3 & 3));\n      return;\n    }" if (parenthesized_expression "(uVar34 == 1)" ( (binary_expression "uVar34 == 1" identifier == number_literal) )) (compound_statement "{\n      bVar35 = (int)param_2[7] == 0;\n      bVar6 = !bVar35;\n      if (param_3 != 3 && -1 < (long)(param_3 - 3)) {\n        pbVar1 = param_5 + (param_3 - 4 >> 2) + 1;\n        do {\n          *param_5 = 0;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar18 = (byte)(uVar28 << 7);\n          *param_5 = bVar18;\n          bVar17 = 0x40;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar17 = 0x40;\n            }\n            else {\n              bVar17 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar17 = bVar17 | (byte)(uVar28 << 5);\n          *param_5 = bVar17;\n          bVar18 = 0x10;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 0x10;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            bVar2 = bVar6;\n          }\n          bVar17 = bVar17 | bVar2 * '\b';\n          *param_5 = bVar17;\n          bVar18 = 4;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 4;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar6;\n          if (DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) <= DAT_003fc580) {\n            bVar2 = bVar35;\n          }\n          bVar17 = bVar17 | bVar2 * '\x02';\n          *param_5 = bVar17;\n          fVar36 = _DAT_003fa400;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          *param_5 = bVar17 | fVar36 == _DAT_003fa400;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + 1;\n        } while (param_5 != pbVar1);\n      }\n      if ((param_3 & 3) == 0) {\n        return;\n      }\n      *param_5 = 0;\n      fVar15 = DAT_0041abe0;\n      fVar14 = DAT_0041abdc;\n      fVar13 = DAT_0041abd8;\n      fVar36 = _DAT_003fa400;\n      bVar17 = 7;\n      lVar32 = 0;\n      do {\n        lVar3 = *(long *)(param_1 + 0x360);\n        bVar2 = bVar35;\n        if (DAT_003fc580 <\n            fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4) +\n            fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4) +\n            fVar15 * *(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)) {\n          bVar2 = bVar6;\n        }\n        bVar18 = bVar2 << (bVar17 & 0x1f) | *param_5;\n        *param_5 = bVar18;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        uVar28 = (uint)(!NAN(fVar37) && !NAN(_DAT_003fa400));\n        if (fVar37 != _DAT_003fa400) {\n          uVar28 = 0;\n        }\n        *param_5 = (byte)(uVar28 << (bVar17 - 1 & 0x1f)) | bVar18;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        lVar32 = lVar32 + 2;\n        bVar17 = bVar17 - 2;\n      } while (lVar32 <= (long)(ulong)((uint)param_3 & 3));\n      return;\n    }" { (expression_statement "bVar35 = (int)param_2[7] == 0;" (assignment_expression "bVar35 = (int)param_2[7] == 0" identifier = (binary_expression "(int)param_2[7] == 0" (cast_expression "(int)param_2[7]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[7]" identifier [ number_literal ])) == number_literal)) ;) (expression_statement "bVar6 = !bVar35;" (assignment_expression "bVar6 = !bVar35" identifier = (unary_expression "!bVar35" ! identifier)) ;) (if_statement "if (param_3 != 3 && -1 < (long)(param_3 - 3)) {\n        pbVar1 = param_5 + (param_3 - 4 >> 2) + 1;\n        do {\n          *param_5 = 0;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar18 = (byte)(uVar28 << 7);\n          *param_5 = bVar18;\n          bVar17 = 0x40;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar17 = 0x40;\n            }\n            else {\n              bVar17 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar17 = bVar17 | (byte)(uVar28 << 5);\n          *param_5 = bVar17;\n          bVar18 = 0x10;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 0x10;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            bVar2 = bVar6;\n          }\n          bVar17 = bVar17 | bVar2 * '\b';\n          *param_5 = bVar17;\n          bVar18 = 4;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 4;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar6;\n          if (DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) <= DAT_003fc580) {\n            bVar2 = bVar35;\n          }\n          bVar17 = bVar17 | bVar2 * '\x02';\n          *param_5 = bVar17;\n          fVar36 = _DAT_003fa400;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          *param_5 = bVar17 | fVar36 == _DAT_003fa400;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + 1;\n        } while (param_5 != pbVar1);\n      }" if (parenthesized_expression "(param_3 != 3 && -1 < (long)(param_3 - 3))" ( (binary_expression "param_3 != 3 && -1 < (long)(param_3 - 3)" (binary_expression "param_3 != 3" identifier != number_literal) && (binary_expression "-1 < (long)(param_3 - 3)" number_literal < (cast_expression "(long)(param_3 - 3)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(param_3 - 3)" ( (binary_expression "param_3 - 3" identifier - number_literal) ))))) )) (compound_statement "{\n        pbVar1 = param_5 + (param_3 - 4 >> 2) + 1;\n        do {\n          *param_5 = 0;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar18 = (byte)(uVar28 << 7);\n          *param_5 = bVar18;\n          bVar17 = 0x40;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar17 = 0x40;\n            }\n            else {\n              bVar17 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar17 = bVar17 | (byte)(uVar28 << 5);\n          *param_5 = bVar17;\n          bVar18 = 0x10;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 0x10;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            bVar2 = bVar6;\n          }\n          bVar17 = bVar17 | bVar2 * '\b';\n          *param_5 = bVar17;\n          bVar18 = 4;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 4;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar6;\n          if (DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) <= DAT_003fc580) {\n            bVar2 = bVar35;\n          }\n          bVar17 = bVar17 | bVar2 * '\x02';\n          *param_5 = bVar17;\n          fVar36 = _DAT_003fa400;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          *param_5 = bVar17 | fVar36 == _DAT_003fa400;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + 1;\n        } while (param_5 != pbVar1);\n      }" { (expression_statement "pbVar1 = param_5 + (param_3 - 4 >> 2) + 1;" (assignment_expression "pbVar1 = param_5 + (param_3 - 4 >> 2) + 1" identifier = (binary_expression "param_5 + (param_3 - 4 >> 2) + 1" (binary_expression "param_5 + (param_3 - 4 >> 2)" identifier + (parenthesized_expression "(param_3 - 4 >> 2)" ( (binary_expression "param_3 - 4 >> 2" (binary_expression "param_3 - 4" identifier - number_literal) >> number_literal) ))) + number_literal)) ;) (do_statement "do {\n          *param_5 = 0;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar18 = (byte)(uVar28 << 7);\n          *param_5 = bVar18;\n          bVar17 = 0x40;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar17 = 0x40;\n            }\n            else {\n              bVar17 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar17 = bVar17 | (byte)(uVar28 << 5);\n          *param_5 = bVar17;\n          bVar18 = 0x10;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 0x10;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            bVar2 = bVar6;\n          }\n          bVar17 = bVar17 | bVar2 * '\b';\n          *param_5 = bVar17;\n          bVar18 = 4;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 4;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar6;\n          if (DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) <= DAT_003fc580) {\n            bVar2 = bVar35;\n          }\n          bVar17 = bVar17 | bVar2 * '\x02';\n          *param_5 = bVar17;\n          fVar36 = _DAT_003fa400;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          *param_5 = bVar17 | fVar36 == _DAT_003fa400;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + 1;\n        } while (param_5 != pbVar1);" do (compound_statement "{\n          *param_5 = 0;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar18 = (byte)(uVar28 << 7);\n          *param_5 = bVar18;\n          bVar17 = 0x40;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar17 = 0x40;\n            }\n            else {\n              bVar17 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar17 = bVar17 | (byte)(uVar28 << 5);\n          *param_5 = bVar17;\n          bVar18 = 0x10;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 0x10;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            bVar2 = bVar6;\n          }\n          bVar17 = bVar17 | bVar2 * '\b';\n          *param_5 = bVar17;\n          bVar18 = 4;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 4;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar6;\n          if (DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) <= DAT_003fc580) {\n            bVar2 = bVar35;\n          }\n          bVar17 = bVar17 | bVar2 * '\x02';\n          *param_5 = bVar17;\n          fVar36 = _DAT_003fa400;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          *param_5 = bVar17 | fVar36 == _DAT_003fa400;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + 1;\n        }" { (expression_statement "*param_5 = 0;" (assignment_expression "*param_5 = 0" (pointer_expression "*param_5" * identifier) = number_literal) ;) (expression_statement "lVar32 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar32 = *(long *)(param_1 + 0x360)" identifier = (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "uVar28 = (uint)bVar35;" (assignment_expression "uVar28 = (uint)bVar35" identifier = (cast_expression "(uint)bVar35" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)) {\n            uVar28 = (uint)bVar6;\n          }" if (parenthesized_expression "(DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4))" ( (binary_expression "DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" identifier < (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x28) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x28) * 4" (pointer_expression "*(long *)(lVar32 + 0x28)" * (cast_expression "(long *)(lVar32 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x28)" ( (binary_expression "lVar32 + 0x28" identifier + number_literal) )))) * number_literal)) ))))) + (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x18) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x18) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x18) * 4" (pointer_expression "*(long *)(lVar32 + 0x18)" * (cast_expression "(long *)(lVar32 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x18)" ( (binary_expression "lVar32 + 0x18" identifier + number_literal) )))) * number_literal)) )))))) + (binary_expression "fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 8) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 8) * 4" identifier + (binary_expression "*(long *)(lVar32 + 8) * 4" (pointer_expression "*(long *)(lVar32 + 8)" * (cast_expression "(long *)(lVar32 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 8)" ( (binary_expression "lVar32 + 8" identifier + number_literal) )))) * number_literal)) ))))))) )) (compound_statement "{\n            uVar28 = (uint)bVar6;\n          }" { (expression_statement "uVar28 = (uint)bVar6;" (assignment_expression "uVar28 = (uint)bVar6" identifier = (cast_expression "(uint)bVar6" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) })) (expression_statement "bVar18 = (byte)(uVar28 << 7);" (assignment_expression "bVar18 = (byte)(uVar28 << 7)" identifier = (call_expression "(byte)(uVar28 << 7)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar28 << 7)" ( (binary_expression "uVar28 << 7" identifier << number_literal) )))) ;) (expression_statement "*param_5 = bVar18;" (assignment_expression "*param_5 = bVar18" (pointer_expression "*param_5" * identifier) = identifier) ;) (expression_statement "bVar17 = 0x40;" (assignment_expression "bVar17 = 0x40" identifier = number_literal) ;) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar17 = 0x40;\n            }\n            else {\n              bVar17 = 0;\n            }\n          }" if (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0)" ( (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44)" * (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x44)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x44" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar17 = 0x40;\n            }\n            else {\n              bVar17 = 0;\n            }\n          }" { (if_statement "if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar17 = 0x40;\n            }\n            else {\n              bVar17 = 0;\n            }" if (parenthesized_expression "(*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400)" ( (binary_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400" (pointer_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (binary_expression "param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" identifier + (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48)" * (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x48)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x48" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) == identifier) )) (compound_statement "{\n              bVar17 = 0x40;\n            }" { (expression_statement "bVar17 = 0x40;" (assignment_expression "bVar17 = 0x40" identifier = number_literal) ;) }) (else_clause "else {\n              bVar17 = 0;\n            }" else (compound_statement "{\n              bVar17 = 0;\n            }" { (expression_statement "bVar17 = 0;" (assignment_expression "bVar17 = 0" identifier = number_literal) ;) }))) })) (expression_statement "bVar17 = bVar17 | bVar18;" (assignment_expression "bVar17 = bVar17 | bVar18" identifier = (binary_expression "bVar17 | bVar18" identifier | identifier)) ;) (expression_statement "*param_5 = bVar17;" (assignment_expression "*param_5 = bVar17" (pointer_expression "*param_5" * identifier) = identifier) ;) (expression_statement "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4" identifier = (binary_expression "param_4 + *(long *)(param_1 + 0x340) * 4" identifier + (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" * (cast_expression "(long *)(param_1 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "lVar32 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar32 = *(long *)(param_1 + 0x360)" identifier = (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "uVar28 = (uint)bVar35;" (assignment_expression "uVar28 = (uint)bVar35" identifier = (cast_expression "(uint)bVar35" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            uVar28 = (uint)bVar6;\n          }" if (parenthesized_expression "(DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4))" ( (binary_expression "DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" identifier < (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x28) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x28) * 4" (pointer_expression "*(long *)(lVar32 + 0x28)" * (cast_expression "(long *)(lVar32 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x28)" ( (binary_expression "lVar32 + 0x28" identifier + number_literal) )))) * number_literal)) ))))) + (binary_expression "fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 8) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 8) * 4" identifier + (binary_expression "*(long *)(lVar32 + 8) * 4" (pointer_expression "*(long *)(lVar32 + 8)" * (cast_expression "(long *)(lVar32 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 8)" ( (binary_expression "lVar32 + 8" identifier + number_literal) )))) * number_literal)) )))))) + (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x18) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x18) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x18) * 4" (pointer_expression "*(long *)(lVar32 + 0x18)" * (cast_expression "(long *)(lVar32 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x18)" ( (binary_expression "lVar32 + 0x18" identifier + number_literal) )))) * number_literal)) ))))))) )) (compound_statement "{\n            uVar28 = (uint)bVar6;\n          }" { (expression_statement "uVar28 = (uint)bVar6;" (assignment_expression "uVar28 = (uint)bVar6" identifier = (cast_expression "(uint)bVar6" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) })) (expression_statement "bVar17 = bVar17 | (byte)(uVar28 << 5);" (assignment_expression "bVar17 = bVar17 | (byte)(uVar28 << 5)" identifier = (binary_expression "bVar17 | (byte)(uVar28 << 5)" identifier | (call_expression "(byte)(uVar28 << 5)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar28 << 5)" ( (binary_expression "uVar28 << 5" identifier << number_literal) ))))) ;) (expression_statement "*param_5 = bVar17;" (assignment_expression "*param_5 = bVar17" (pointer_expression "*param_5" * identifier) = identifier) ;) (expression_statement "bVar18 = 0x10;" (assignment_expression "bVar18 = 0x10" identifier = number_literal) ;) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 0x10;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }" if (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0)" ( (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44)" * (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x44)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x44" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 0x10;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }" { (if_statement "if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 0x10;\n            }\n            else {\n              bVar18 = 0;\n            }" if (parenthesized_expression "(*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400)" ( (binary_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400" (pointer_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (binary_expression "param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" identifier + (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48)" * (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x48)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x48" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) == identifier) )) (compound_statement "{\n              bVar18 = 0x10;\n            }" { (expression_statement "bVar18 = 0x10;" (assignment_expression "bVar18 = 0x10" identifier = number_literal) ;) }) (else_clause "else {\n              bVar18 = 0;\n            }" else (compound_statement "{\n              bVar18 = 0;\n            }" { (expression_statement "bVar18 = 0;" (assignment_expression "bVar18 = 0" identifier = number_literal) ;) }))) })) (expression_statement "bVar17 = bVar17 | bVar18;" (assignment_expression "bVar17 = bVar17 | bVar18" identifier = (binary_expression "bVar17 | bVar18" identifier | identifier)) ;) (expression_statement "*param_5 = bVar17;" (assignment_expression "*param_5 = bVar17" (pointer_expression "*param_5" * identifier) = identifier) ;) (expression_statement "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4" identifier = (binary_expression "param_4 + *(long *)(param_1 + 0x340) * 4" identifier + (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" * (cast_expression "(long *)(param_1 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "lVar32 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar32 = *(long *)(param_1 + 0x360)" identifier = (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "bVar2 = bVar35;" (assignment_expression "bVar2 = bVar35" identifier = identifier) ;) (if_statement "if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            bVar2 = bVar6;\n          }" if (parenthesized_expression "(DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4))" ( (binary_expression "DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" identifier < (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x28) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x28) * 4" (pointer_expression "*(long *)(lVar32 + 0x28)" * (cast_expression "(long *)(lVar32 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x28)" ( (binary_expression "lVar32 + 0x28" identifier + number_literal) )))) * number_literal)) ))))) + (binary_expression "fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 8) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 8) * 4" identifier + (binary_expression "*(long *)(lVar32 + 8) * 4" (pointer_expression "*(long *)(lVar32 + 8)" * (cast_expression "(long *)(lVar32 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 8)" ( (binary_expression "lVar32 + 8" identifier + number_literal) )))) * number_literal)) )))))) + (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x18) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x18) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x18) * 4" (pointer_expression "*(long *)(lVar32 + 0x18)" * (cast_expression "(long *)(lVar32 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x18)" ( (binary_expression "lVar32 + 0x18" identifier + number_literal) )))) * number_literal)) ))))))) )) (compound_statement "{\n            bVar2 = bVar6;\n          }" { (expression_statement "bVar2 = bVar6;" (assignment_expression "bVar2 = bVar6" identifier = identifier) ;) })) (expression_statement "bVar17 = bVar17 | bVar2 * '\b';" (assignment_expression "bVar17 = bVar17 | bVar2 * '\b'" identifier = (binary_expression "bVar17 | bVar2 * '\b'" identifier | (binary_expression "bVar2 * '\b'" identifier * (char_literal "'\b'" ' escape_sequence ')))) ;) (expression_statement "*param_5 = bVar17;" (assignment_expression "*param_5 = bVar17" (pointer_expression "*param_5" * identifier) = identifier) ;) (expression_statement "bVar18 = 4;" (assignment_expression "bVar18 = 4" identifier = number_literal) ;) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 4;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }" if (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0)" ( (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44)" * (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x44)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x44" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 4;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }" { (if_statement "if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 4;\n            }\n            else {\n              bVar18 = 0;\n            }" if (parenthesized_expression "(*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400)" ( (binary_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400" (pointer_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (binary_expression "param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" identifier + (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48)" * (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x48)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x48" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) == identifier) )) (compound_statement "{\n              bVar18 = 4;\n            }" { (expression_statement "bVar18 = 4;" (assignment_expression "bVar18 = 4" identifier = number_literal) ;) }) (else_clause "else {\n              bVar18 = 0;\n            }" else (compound_statement "{\n              bVar18 = 0;\n            }" { (expression_statement "bVar18 = 0;" (assignment_expression "bVar18 = 0" identifier = number_literal) ;) }))) })) (expression_statement "bVar17 = bVar17 | bVar18;" (assignment_expression "bVar17 = bVar17 | bVar18" identifier = (binary_expression "bVar17 | bVar18" identifier | identifier)) ;) (expression_statement "*param_5 = bVar17;" (assignment_expression "*param_5 = bVar17" (pointer_expression "*param_5" * identifier) = identifier) ;) (expression_statement "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4" identifier = (binary_expression "param_4 + *(long *)(param_1 + 0x340) * 4" identifier + (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" * (cast_expression "(long *)(param_1 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "lVar32 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar32 = *(long *)(param_1 + 0x360)" identifier = (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "bVar2 = bVar6;" (assignment_expression "bVar2 = bVar6" identifier = identifier) ;) (if_statement "if (DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) <= DAT_003fc580) {\n            bVar2 = bVar35;\n          }" if (parenthesized_expression "(DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) <= DAT_003fc580)" ( (binary_expression "DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) <= DAT_003fc580" (binary_expression "DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (binary_expression "DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (binary_expression "DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x28) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x28) * 4" (pointer_expression "*(long *)(lVar32 + 0x28)" * (cast_expression "(long *)(lVar32 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x28)" ( (binary_expression "lVar32 + 0x28" identifier + number_literal) )))) * number_literal)) ))))) + (binary_expression "DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 8) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 8) * 4" identifier + (binary_expression "*(long *)(lVar32 + 8) * 4" (pointer_expression "*(long *)(lVar32 + 8)" * (cast_expression "(long *)(lVar32 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 8)" ( (binary_expression "lVar32 + 8" identifier + number_literal) )))) * number_literal)) )))))) + (binary_expression "DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x18) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x18) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x18) * 4" (pointer_expression "*(long *)(lVar32 + 0x18)" * (cast_expression "(long *)(lVar32 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x18)" ( (binary_expression "lVar32 + 0x18" identifier + number_literal) )))) * number_literal)) )))))) <= identifier) )) (compound_statement "{\n            bVar2 = bVar35;\n          }" { (expression_statement "bVar2 = bVar35;" (assignment_expression "bVar2 = bVar35" identifier = identifier) ;) })) (expression_statement "bVar17 = bVar17 | bVar2 * '\x02';" (assignment_expression "bVar17 = bVar17 | bVar2 * '\x02'" identifier = (binary_expression "bVar17 | bVar2 * '\x02'" identifier | (binary_expression "bVar2 * '\x02'" identifier * (char_literal "'\x02'" ' escape_sequence ')))) ;) (expression_statement "*param_5 = bVar17;" (assignment_expression "*param_5 = bVar17" (pointer_expression "*param_5" * identifier) = identifier) ;) (expression_statement "fVar36 = _DAT_003fa400;" (assignment_expression "fVar36 = _DAT_003fa400" identifier = identifier) ;) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }" if (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0)" ( (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44)" * (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x44)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x44" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }" { (expression_statement "fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);" (assignment_expression "fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" identifier = (pointer_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (binary_expression "param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" identifier + (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48)" * (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x48)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x48" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) })) (expression_statement "*param_5 = bVar17 | fVar36 == _DAT_003fa400;" (assignment_expression "*param_5 = bVar17 | fVar36 == _DAT_003fa400" (pointer_expression "*param_5" * identifier) = (binary_expression "bVar17 | fVar36 == _DAT_003fa400" identifier | (binary_expression "fVar36 == _DAT_003fa400" identifier == identifier))) ;) (expression_statement "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4" identifier = (binary_expression "param_4 + *(long *)(param_1 + 0x340) * 4" identifier + (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" * (cast_expression "(long *)(param_1 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "param_5 = param_5 + 1;" (assignment_expression "param_5 = param_5 + 1" identifier = (binary_expression "param_5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_5 != pbVar1)" ( (binary_expression "param_5 != pbVar1" identifier != identifier) )) ;) })) (if_statement "if ((param_3 & 3) == 0) {\n        return;\n      }" if (parenthesized_expression "((param_3 & 3) == 0)" ( (binary_expression "(param_3 & 3) == 0" (parenthesized_expression "(param_3 & 3)" ( (binary_expression "param_3 & 3" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "*param_5 = 0;" (assignment_expression "*param_5 = 0" (pointer_expression "*param_5" * identifier) = number_literal) ;) (expression_statement "fVar15 = DAT_0041abe0;" (assignment_expression "fVar15 = DAT_0041abe0" identifier = identifier) ;) (expression_statement "fVar14 = DAT_0041abdc;" (assignment_expression "fVar14 = DAT_0041abdc" identifier = identifier) ;) (expression_statement "fVar13 = DAT_0041abd8;" (assignment_expression "fVar13 = DAT_0041abd8" identifier = identifier) ;) (expression_statement "fVar36 = _DAT_003fa400;" (assignment_expression "fVar36 = _DAT_003fa400" identifier = identifier) ;) (expression_statement "bVar17 = 7;" (assignment_expression "bVar17 = 7" identifier = number_literal) ;) (expression_statement "lVar32 = 0;" (assignment_expression "lVar32 = 0" identifier = number_literal) ;) (do_statement "do {\n        lVar3 = *(long *)(param_1 + 0x360);\n        bVar2 = bVar35;\n        if (DAT_003fc580 <\n            fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4) +\n            fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4) +\n            fVar15 * *(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)) {\n          bVar2 = bVar6;\n        }\n        bVar18 = bVar2 << (bVar17 & 0x1f) | *param_5;\n        *param_5 = bVar18;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        uVar28 = (uint)(!NAN(fVar37) && !NAN(_DAT_003fa400));\n        if (fVar37 != _DAT_003fa400) {\n          uVar28 = 0;\n        }\n        *param_5 = (byte)(uVar28 << (bVar17 - 1 & 0x1f)) | bVar18;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        lVar32 = lVar32 + 2;\n        bVar17 = bVar17 - 2;\n      } while (lVar32 <= (long)(ulong)((uint)param_3 & 3));" do (compound_statement "{\n        lVar3 = *(long *)(param_1 + 0x360);\n        bVar2 = bVar35;\n        if (DAT_003fc580 <\n            fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4) +\n            fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4) +\n            fVar15 * *(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)) {\n          bVar2 = bVar6;\n        }\n        bVar18 = bVar2 << (bVar17 & 0x1f) | *param_5;\n        *param_5 = bVar18;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        uVar28 = (uint)(!NAN(fVar37) && !NAN(_DAT_003fa400));\n        if (fVar37 != _DAT_003fa400) {\n          uVar28 = 0;\n        }\n        *param_5 = (byte)(uVar28 << (bVar17 - 1 & 0x1f)) | bVar18;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        lVar32 = lVar32 + 2;\n        bVar17 = bVar17 - 2;\n      }" { (expression_statement "lVar3 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar3 = *(long *)(param_1 + 0x360)" identifier = (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "bVar2 = bVar35;" (assignment_expression "bVar2 = bVar35" identifier = identifier) ;) (if_statement "if (DAT_003fc580 <\n            fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4) +\n            fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4) +\n            fVar15 * *(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)) {\n          bVar2 = bVar6;\n        }" if (parenthesized_expression "(DAT_003fc580 <\n            fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4) +\n            fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4) +\n            fVar15 * *(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4))" ( (binary_expression "DAT_003fc580 <\n            fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4) +\n            fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4) +\n            fVar15 * *(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)" identifier < (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4) +\n            fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4) +\n            fVar15 * *(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4) +\n            fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar3 + 0x18) * 4)" ( (binary_expression "param_4 + *(long *)(lVar3 + 0x18) * 4" identifier + (binary_expression "*(long *)(lVar3 + 0x18) * 4" (pointer_expression "*(long *)(lVar3 + 0x18)" * (cast_expression "(long *)(lVar3 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x18)" ( (binary_expression "lVar3 + 0x18" identifier + number_literal) )))) * number_literal)) ))))) + (binary_expression "fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar3 + 8) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar3 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar3 + 8) * 4)" ( (binary_expression "param_4 + *(long *)(lVar3 + 8) * 4" identifier + (binary_expression "*(long *)(lVar3 + 8) * 4" (pointer_expression "*(long *)(lVar3 + 8)" * (cast_expression "(long *)(lVar3 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 8)" ( (binary_expression "lVar3 + 8" identifier + number_literal) )))) * number_literal)) )))))) + (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar3 + 0x28) * 4)" ( (binary_expression "param_4 + *(long *)(lVar3 + 0x28) * 4" identifier + (binary_expression "*(long *)(lVar3 + 0x28) * 4" (pointer_expression "*(long *)(lVar3 + 0x28)" * (cast_expression "(long *)(lVar3 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x28)" ( (binary_expression "lVar3 + 0x28" identifier + number_literal) )))) * number_literal)) ))))))) )) (compound_statement "{\n          bVar2 = bVar6;\n        }" { (expression_statement "bVar2 = bVar6;" (assignment_expression "bVar2 = bVar6" identifier = identifier) ;) })) (expression_statement "bVar18 = bVar2 << (bVar17 & 0x1f) | *param_5;" (assignment_expression "bVar18 = bVar2 << (bVar17 & 0x1f) | *param_5" identifier = (binary_expression "bVar2 << (bVar17 & 0x1f) | *param_5" (binary_expression "bVar2 << (bVar17 & 0x1f)" identifier << (parenthesized_expression "(bVar17 & 0x1f)" ( (binary_expression "bVar17 & 0x1f" identifier & number_literal) ))) | (pointer_expression "*param_5" * identifier))) ;) (expression_statement "*param_5 = bVar18;" (assignment_expression "*param_5 = bVar18" (pointer_expression "*param_5" * identifier) = identifier) ;) (expression_statement "fVar37 = fVar36;" (assignment_expression "fVar37 = fVar36" identifier = identifier) ;) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }" if (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0)" ( (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44)" * (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x44)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x44" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }" { (expression_statement "fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);" (assignment_expression "fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" identifier = (pointer_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (binary_expression "param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" identifier + (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48)" * (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x48)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x48" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) })) (expression_statement "uVar28 = (uint)(!NAN(fVar37) && !NAN(_DAT_003fa400));" (assignment_expression "uVar28 = (uint)(!NAN(fVar37) && !NAN(_DAT_003fa400))" identifier = (call_expression "(uint)(!NAN(fVar37) && !NAN(_DAT_003fa400))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(!NAN(fVar37) && !NAN(_DAT_003fa400))" ( (binary_expression "!NAN(fVar37) && !NAN(_DAT_003fa400)" (unary_expression "!NAN(fVar37)" ! (call_expression "NAN(fVar37)" identifier (argument_list "(fVar37)" ( identifier )))) && (unary_expression "!NAN(_DAT_003fa400)" ! (call_expression "NAN(_DAT_003fa400)" identifier (argument_list "(_DAT_003fa400)" ( identifier ))))) )))) ;) (if_statement "if (fVar37 != _DAT_003fa400) {\n          uVar28 = 0;\n        }" if (parenthesized_expression "(fVar37 != _DAT_003fa400)" ( (binary_expression "fVar37 != _DAT_003fa400" identifier != identifier) )) (compound_statement "{\n          uVar28 = 0;\n        }" { (expression_statement "uVar28 = 0;" (assignment_expression "uVar28 = 0" identifier = number_literal) ;) })) (expression_statement "*param_5 = (byte)(uVar28 << (bVar17 - 1 & 0x1f)) | bVar18;" (assignment_expression "*param_5 = (byte)(uVar28 << (bVar17 - 1 & 0x1f)) | bVar18" (pointer_expression "*param_5" * identifier) = (binary_expression "(byte)(uVar28 << (bVar17 - 1 & 0x1f)) | bVar18" (call_expression "(byte)(uVar28 << (bVar17 - 1 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar28 << (bVar17 - 1 & 0x1f))" ( (binary_expression "uVar28 << (bVar17 - 1 & 0x1f)" identifier << (parenthesized_expression "(bVar17 - 1 & 0x1f)" ( (binary_expression "bVar17 - 1 & 0x1f" (binary_expression "bVar17 - 1" identifier - number_literal) & number_literal) ))) ))) | identifier)) ;) (expression_statement "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4" identifier = (binary_expression "param_4 + *(long *)(param_1 + 0x340) * 4" identifier + (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" * (cast_expression "(long *)(param_1 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "lVar32 = lVar32 + 2;" (assignment_expression "lVar32 = lVar32 + 2" identifier = (binary_expression "lVar32 + 2" identifier + number_literal)) ;) (expression_statement "bVar17 = bVar17 - 2;" (assignment_expression "bVar17 = bVar17 - 2" identifier = (binary_expression "bVar17 - 2" identifier - number_literal)) ;) }) while (parenthesized_expression "(lVar32 <= (long)(ulong)((uint)param_3 & 3))" ( (binary_expression "lVar32 <= (long)(ulong)((uint)param_3 & 3)" identifier <= (cast_expression "(long)(ulong)((uint)param_3 & 3)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (call_expression "(ulong)((uint)param_3 & 3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((uint)param_3 & 3)" ( (binary_expression "(uint)param_3 & 3" (cast_expression "(uint)param_3" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))))) )) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar34 == 4) {\n      pbVar1 = param_5 + param_3;\n      if ((long)param_3 < 1) {\n        return;\n      }\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar37 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar37)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if (0.0 < fVar37) {\n            dVar4 = (double)fVar37 / dVar11;\n            bVar17 = 0xff;\n            if (dVar4 < dVar12) {\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }\n          }\n        }\n        *param_5 = bVar17 & 0xf0;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        *param_5 = bVar17 & 0xf0 | (byte)(int)((double)fVar37 * dVar16 + dVar7) & 0xf;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + 1;\n      } while (param_5 != pbVar1);\n      return;\n    }" if (parenthesized_expression "(uVar34 == 4)" ( (binary_expression "uVar34 == 4" identifier == number_literal) )) (compound_statement "{\n      pbVar1 = param_5 + param_3;\n      if ((long)param_3 < 1) {\n        return;\n      }\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar37 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar37)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if (0.0 < fVar37) {\n            dVar4 = (double)fVar37 / dVar11;\n            bVar17 = 0xff;\n            if (dVar4 < dVar12) {\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }\n          }\n        }\n        *param_5 = bVar17 & 0xf0;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        *param_5 = bVar17 & 0xf0 | (byte)(int)((double)fVar37 * dVar16 + dVar7) & 0xf;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + 1;\n      } while (param_5 != pbVar1);\n      return;\n    }" { (expression_statement "pbVar1 = param_5 + param_3;" (assignment_expression "pbVar1 = param_5 + param_3" identifier = (binary_expression "param_5 + param_3" identifier + identifier)) ;) (if_statement "if ((long)param_3 < 1) {\n        return;\n      }" if (parenthesized_expression "((long)param_3 < 1)" ( (binary_expression "(long)param_3 < 1" (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (do_statement "do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar37 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar37)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if (0.0 < fVar37) {\n            dVar4 = (double)fVar37 / dVar11;\n            bVar17 = 0xff;\n            if (dVar4 < dVar12) {\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }\n          }\n        }\n        *param_5 = bVar17 & 0xf0;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        *param_5 = bVar17 & 0xf0 | (byte)(int)((double)fVar37 * dVar16 + dVar7) & 0xf;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + 1;\n      } while (param_5 != pbVar1);" do (compound_statement "{\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar37 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar37)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if (0.0 < fVar37) {\n            dVar4 = (double)fVar37 / dVar11;\n            bVar17 = 0xff;\n            if (dVar4 < dVar12) {\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }\n          }\n        }\n        *param_5 = bVar17 & 0xf0;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        *param_5 = bVar17 & 0xf0 | (byte)(int)((double)fVar37 * dVar16 + dVar7) & 0xf;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + 1;\n      }" { (expression_statement "lVar32 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar32 = *(long *)(param_1 + 0x360)" identifier = (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "fVar37 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);" (assignment_expression "fVar37 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" identifier = (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x18) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x18) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x18) * 4" (pointer_expression "*(long *)(lVar32 + 0x18)" * (cast_expression "(long *)(lVar32 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x18)" ( (binary_expression "lVar32 + 0x18" identifier + number_literal) )))) * number_literal)) ))))) + (binary_expression "fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 8) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 8) * 4" identifier + (binary_expression "*(long *)(lVar32 + 8) * 4" (pointer_expression "*(long *)(lVar32 + 8)" * (cast_expression "(long *)(lVar32 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 8)" ( (binary_expression "lVar32 + 8" identifier + number_literal) )))) * number_literal)) )))))) + (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x28) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x28) * 4" (pointer_expression "*(long *)(lVar32 + 0x28)" * (cast_expression "(long *)(lVar32 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x28)" ( (binary_expression "lVar32 + 0x28" identifier + number_literal) )))) * number_literal)) ))))))) ;) (if_statement "if (NAN(fVar37)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if (0.0 < fVar37) {\n            dVar4 = (double)fVar37 / dVar11;\n            bVar17 = 0xff;\n            if (dVar4 < dVar12) {\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }\n          }\n        }" if (parenthesized_expression "(NAN(fVar37))" ( (call_expression "NAN(fVar37)" identifier (argument_list "(fVar37)" ( identifier ))) )) (compound_statement "{\n          bVar17 = 0;\n        }" { (expression_statement "bVar17 = 0;" (assignment_expression "bVar17 = 0" identifier = number_literal) ;) }) (else_clause "else {\n          bVar17 = 0;\n          if (0.0 < fVar37) {\n            dVar4 = (double)fVar37 / dVar11;\n            bVar17 = 0xff;\n            if (dVar4 < dVar12) {\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }\n          }\n        }" else (compound_statement "{\n          bVar17 = 0;\n          if (0.0 < fVar37) {\n            dVar4 = (double)fVar37 / dVar11;\n            bVar17 = 0xff;\n            if (dVar4 < dVar12) {\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }\n          }\n        }" { (expression_statement "bVar17 = 0;" (assignment_expression "bVar17 = 0" identifier = number_literal) ;) (if_statement "if (0.0 < fVar37) {\n            dVar4 = (double)fVar37 / dVar11;\n            bVar17 = 0xff;\n            if (dVar4 < dVar12) {\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }\n          }" if (parenthesized_expression "(0.0 < fVar37)" ( (binary_expression "0.0 < fVar37" number_literal < identifier) )) (compound_statement "{\n            dVar4 = (double)fVar37 / dVar11;\n            bVar17 = 0xff;\n            if (dVar4 < dVar12) {\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }\n          }" { (expression_statement "dVar4 = (double)fVar37 / dVar11;" (assignment_expression "dVar4 = (double)fVar37 / dVar11" identifier = (binary_expression "(double)fVar37 / dVar11" (cast_expression "(double)fVar37" ( (type_descriptor "double" primitive_type) ) identifier) / identifier)) ;) (expression_statement "bVar17 = 0xff;" (assignment_expression "bVar17 = 0xff" identifier = number_literal) ;) (if_statement "if (dVar4 < dVar12) {\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }" if (parenthesized_expression "(dVar4 < dVar12)" ( (binary_expression "dVar4 < dVar12" identifier < identifier) )) (compound_statement "{\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }" { (expression_statement "bVar17 = (byte)(int)(dVar4 + dVar7);" (assignment_expression "bVar17 = (byte)(int)(dVar4 + dVar7)" identifier = (call_expression "(byte)(int)(dVar4 + dVar7)" (call_expression "(byte)(int)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(int)" ( identifier ))) (argument_list "(dVar4 + dVar7)" ( (binary_expression "dVar4 + dVar7" identifier + identifier) )))) ;) })) })) }))) (expression_statement "*param_5 = bVar17 & 0xf0;" (assignment_expression "*param_5 = bVar17 & 0xf0" (pointer_expression "*param_5" * identifier) = (binary_expression "bVar17 & 0xf0" identifier & number_literal)) ;) (expression_statement "fVar37 = fVar36;" (assignment_expression "fVar37 = fVar36" identifier = identifier) ;) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }" if (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0)" ( (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44)" * (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x44)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x44" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }" { (expression_statement "fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);" (assignment_expression "fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" identifier = (pointer_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (binary_expression "param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" identifier + (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48)" * (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x48)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x48" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) })) (expression_statement "*param_5 = bVar17 & 0xf0 | (byte)(int)((double)fVar37 * dVar16 + dVar7) & 0xf;" (assignment_expression "*param_5 = bVar17 & 0xf0 | (byte)(int)((double)fVar37 * dVar16 + dVar7) & 0xf" (pointer_expression "*param_5" * identifier) = (binary_expression "bVar17 & 0xf0 | (byte)(int)((double)fVar37 * dVar16 + dVar7) & 0xf" (binary_expression "bVar17 & 0xf0" identifier & number_literal) | (binary_expression "(byte)(int)((double)fVar37 * dVar16 + dVar7) & 0xf" (call_expression "(byte)(int)((double)fVar37 * dVar16 + dVar7)" (call_expression "(byte)(int)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(int)" ( identifier ))) (argument_list "((double)fVar37 * dVar16 + dVar7)" ( (binary_expression "(double)fVar37 * dVar16 + dVar7" (binary_expression "(double)fVar37 * dVar16" (cast_expression "(double)fVar37" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) + identifier) ))) & number_literal))) ;) (expression_statement "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4" identifier = (binary_expression "param_4 + *(long *)(param_1 + 0x340) * 4" identifier + (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" * (cast_expression "(long *)(param_1 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "param_5 = param_5 + 1;" (assignment_expression "param_5 = param_5 + 1" identifier = (binary_expression "param_5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_5 != pbVar1)" ( (binary_expression "param_5 != pbVar1" identifier != identifier) )) ;) (return_statement "return;" return ;) })) (labeled_statement "LAB_002734da:\n    uVar33 = 0;" statement_identifier : (expression_statement "uVar33 = 0;" (assignment_expression "uVar33 = 0" identifier = number_literal) ;)) (if_statement "if (uVar34 == 0) goto LAB_002734e9;" if (parenthesized_expression "(uVar34 == 0)" ( (binary_expression "uVar34 == 0" identifier == number_literal) )) (goto_statement "goto LAB_002734e9;" goto statement_identifier ;)) }) (else_clause "else {\n    if (uVar34 == 0x20) {\n      if ((int)param_2[2] == 1) {\n        if ((long)param_3 < 1) {\n          return;\n        }\n        uVar34 = 0;\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar37 = (float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3]);\n          bVar18 = (byte)((uint)fVar37 >> 8);\n          bVar27 = (byte)((uint)fVar37 >> 0x10);\n          bVar17 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = SUB41(fVar37,0);\n            param_5[1] = bVar18;\n            param_5[2] = bVar27;\n            param_5[3] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = bVar27;\n            param_5[2] = bVar18;\n            param_5[3] = SUB41(fVar37,0);\n          }\n          fVar37 = fVar36;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          fVar37 = (float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3]);\n          bVar17 = (byte)((uint)fVar37 >> 8);\n          bVar18 = (byte)((uint)fVar37 >> 0x10);\n          bVar27 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            param_5[4] = SUB41(fVar37,0);\n            param_5[5] = bVar17;\n            param_5[6] = bVar18;\n            param_5[7] = bVar27;\n          }\n          else {\n            param_5[4] = bVar27;\n            param_5[5] = bVar18;\n            param_5[6] = bVar17;\n            param_5[7] = SUB41(fVar37,0);\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 8;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      uVar34 = 0;\n      if ((long)param_3 < 1) {\n        return;\n      }\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar36)) {\n          uVar20 = 0;\n        }\n        else {\n          uVar20 = 0;\n          if ((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)) {\n            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = (byte)uVar20;\n          param_5[1] = bVar17;\n          param_5[2] = bVar18;\n          param_5[3] = bVar27;\n        }\n        else {\n          *param_5 = bVar27;\n          param_5[1] = bVar18;\n          param_5[2] = bVar17;\n          param_5[3] = (byte)uVar20;\n        }\n        uVar20 = 0xffffffff;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          if (NAN(fVar36)) {\n            uVar20 = 0;\n          }\n          else {\n            uVar20 = 0;\n            if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          param_5[4] = (byte)uVar20;\n          param_5[5] = bVar17;\n          param_5[6] = bVar18;\n          param_5[7] = bVar27;\n        }\n        else {\n          param_5[4] = bVar27;\n          param_5[5] = bVar18;\n          param_5[6] = bVar17;\n          param_5[7] = (byte)uVar20;\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 8;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }\n    if (uVar34 != 0x40) {\n      if (uVar34 == 0x10) {\n        if ((int)param_2[2] == 1) {\n          if ((long)param_3 < 1) {\n            return;\n          }\n          uVar34 = 0;\n          do {\n            lVar32 = *(long *)(param_1 + 0x360);\n            uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }\n            else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }\n            fVar36 = _DAT_003fa400;\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }\n            uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }\n            else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }\n            param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n            param_5 = param_5 + param_2[6] + 4;\n            uVar34 = uVar34 + 1;\n          } while (uVar34 != param_3);\n          return;\n        }\n        uVar34 = 0;\n        if ((long)param_3 < 1) {\n          return;\n        }\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n          if (NAN(fVar36)) {\n            uVar19 = 0;\n          }\n          else {\n            uVar19 = 0;\n            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = (byte)uVar19;\n            param_5[1] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = (byte)uVar19;\n          }\n          uVar19 = 0xffff;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            if (NAN(fVar36)) {\n              uVar19 = 0;\n            }\n            else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            param_5[2] = (byte)uVar19;\n            param_5[3] = bVar17;\n          }\n          else {\n            param_5[2] = bVar17;\n            param_5[3] = (byte)uVar19;\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 4;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      goto LAB_002734da;\n    }\n    if ((int)param_2[2] == 1) {\n      if ((long)param_3 < 1) {\n        return;\n      }\n      uVar34 = 0;\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        dVar4 = (double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                (double)param_2[0xd] + (double)param_2[3];\n        bVar18 = (byte)((ulong)dVar4 >> 8);\n        bVar23 = (byte)((ulong)dVar4 >> 0x10);\n        bVar24 = (byte)((ulong)dVar4 >> 0x18);\n        bVar25 = (byte)((ulong)dVar4 >> 0x20);\n        bVar26 = (byte)((ulong)dVar4 >> 0x28);\n        bVar27 = (byte)((ulong)dVar4 >> 0x30);\n        bVar17 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = SUB81(dVar4,0);\n          param_5[1] = bVar18;\n          param_5[2] = bVar23;\n          param_5[3] = bVar24;\n          param_5[4] = bVar25;\n          param_5[5] = bVar26;\n          param_5[6] = bVar27;\n          param_5[7] = bVar17;\n        }\n        else {\n          *param_5 = bVar17;\n          param_5[1] = bVar27;\n          param_5[2] = bVar26;\n          param_5[3] = bVar25;\n          param_5[4] = bVar24;\n          param_5[5] = bVar23;\n          param_5[6] = bVar18;\n          param_5[7] = SUB81(dVar4,0);\n        }\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        dVar4 = (double)fVar37 * (double)param_2[0xd] + (double)param_2[3];\n        bVar17 = (byte)((ulong)dVar4 >> 8);\n        bVar18 = (byte)((ulong)dVar4 >> 0x10);\n        bVar27 = (byte)((ulong)dVar4 >> 0x18);\n        bVar26 = (byte)((ulong)dVar4 >> 0x20);\n        bVar25 = (byte)((ulong)dVar4 >> 0x28);\n        bVar24 = (byte)((ulong)dVar4 >> 0x30);\n        bVar23 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          param_5[8] = SUB81(dVar4,0);\n          param_5[9] = bVar17;\n          param_5[10] = bVar18;\n          param_5[0xb] = bVar27;\n          param_5[0xc] = bVar26;\n          param_5[0xd] = bVar25;\n          param_5[0xe] = bVar24;\n          param_5[0xf] = bVar23;\n        }\n        else {\n          param_5[8] = bVar23;\n          param_5[9] = bVar24;\n          param_5[10] = bVar25;\n          param_5[0xb] = bVar26;\n          param_5[0xc] = bVar27;\n          param_5[0xd] = bVar18;\n          param_5[0xe] = bVar17;\n          param_5[0xf] = SUB81(dVar4,0);\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 0x10;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }\n  }" else (compound_statement "{\n    if (uVar34 == 0x20) {\n      if ((int)param_2[2] == 1) {\n        if ((long)param_3 < 1) {\n          return;\n        }\n        uVar34 = 0;\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar37 = (float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3]);\n          bVar18 = (byte)((uint)fVar37 >> 8);\n          bVar27 = (byte)((uint)fVar37 >> 0x10);\n          bVar17 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = SUB41(fVar37,0);\n            param_5[1] = bVar18;\n            param_5[2] = bVar27;\n            param_5[3] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = bVar27;\n            param_5[2] = bVar18;\n            param_5[3] = SUB41(fVar37,0);\n          }\n          fVar37 = fVar36;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          fVar37 = (float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3]);\n          bVar17 = (byte)((uint)fVar37 >> 8);\n          bVar18 = (byte)((uint)fVar37 >> 0x10);\n          bVar27 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            param_5[4] = SUB41(fVar37,0);\n            param_5[5] = bVar17;\n            param_5[6] = bVar18;\n            param_5[7] = bVar27;\n          }\n          else {\n            param_5[4] = bVar27;\n            param_5[5] = bVar18;\n            param_5[6] = bVar17;\n            param_5[7] = SUB41(fVar37,0);\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 8;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      uVar34 = 0;\n      if ((long)param_3 < 1) {\n        return;\n      }\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar36)) {\n          uVar20 = 0;\n        }\n        else {\n          uVar20 = 0;\n          if ((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)) {\n            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = (byte)uVar20;\n          param_5[1] = bVar17;\n          param_5[2] = bVar18;\n          param_5[3] = bVar27;\n        }\n        else {\n          *param_5 = bVar27;\n          param_5[1] = bVar18;\n          param_5[2] = bVar17;\n          param_5[3] = (byte)uVar20;\n        }\n        uVar20 = 0xffffffff;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          if (NAN(fVar36)) {\n            uVar20 = 0;\n          }\n          else {\n            uVar20 = 0;\n            if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          param_5[4] = (byte)uVar20;\n          param_5[5] = bVar17;\n          param_5[6] = bVar18;\n          param_5[7] = bVar27;\n        }\n        else {\n          param_5[4] = bVar27;\n          param_5[5] = bVar18;\n          param_5[6] = bVar17;\n          param_5[7] = (byte)uVar20;\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 8;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }\n    if (uVar34 != 0x40) {\n      if (uVar34 == 0x10) {\n        if ((int)param_2[2] == 1) {\n          if ((long)param_3 < 1) {\n            return;\n          }\n          uVar34 = 0;\n          do {\n            lVar32 = *(long *)(param_1 + 0x360);\n            uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }\n            else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }\n            fVar36 = _DAT_003fa400;\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }\n            uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }\n            else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }\n            param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n            param_5 = param_5 + param_2[6] + 4;\n            uVar34 = uVar34 + 1;\n          } while (uVar34 != param_3);\n          return;\n        }\n        uVar34 = 0;\n        if ((long)param_3 < 1) {\n          return;\n        }\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n          if (NAN(fVar36)) {\n            uVar19 = 0;\n          }\n          else {\n            uVar19 = 0;\n            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = (byte)uVar19;\n            param_5[1] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = (byte)uVar19;\n          }\n          uVar19 = 0xffff;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            if (NAN(fVar36)) {\n              uVar19 = 0;\n            }\n            else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            param_5[2] = (byte)uVar19;\n            param_5[3] = bVar17;\n          }\n          else {\n            param_5[2] = bVar17;\n            param_5[3] = (byte)uVar19;\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 4;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      goto LAB_002734da;\n    }\n    if ((int)param_2[2] == 1) {\n      if ((long)param_3 < 1) {\n        return;\n      }\n      uVar34 = 0;\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        dVar4 = (double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                (double)param_2[0xd] + (double)param_2[3];\n        bVar18 = (byte)((ulong)dVar4 >> 8);\n        bVar23 = (byte)((ulong)dVar4 >> 0x10);\n        bVar24 = (byte)((ulong)dVar4 >> 0x18);\n        bVar25 = (byte)((ulong)dVar4 >> 0x20);\n        bVar26 = (byte)((ulong)dVar4 >> 0x28);\n        bVar27 = (byte)((ulong)dVar4 >> 0x30);\n        bVar17 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = SUB81(dVar4,0);\n          param_5[1] = bVar18;\n          param_5[2] = bVar23;\n          param_5[3] = bVar24;\n          param_5[4] = bVar25;\n          param_5[5] = bVar26;\n          param_5[6] = bVar27;\n          param_5[7] = bVar17;\n        }\n        else {\n          *param_5 = bVar17;\n          param_5[1] = bVar27;\n          param_5[2] = bVar26;\n          param_5[3] = bVar25;\n          param_5[4] = bVar24;\n          param_5[5] = bVar23;\n          param_5[6] = bVar18;\n          param_5[7] = SUB81(dVar4,0);\n        }\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        dVar4 = (double)fVar37 * (double)param_2[0xd] + (double)param_2[3];\n        bVar17 = (byte)((ulong)dVar4 >> 8);\n        bVar18 = (byte)((ulong)dVar4 >> 0x10);\n        bVar27 = (byte)((ulong)dVar4 >> 0x18);\n        bVar26 = (byte)((ulong)dVar4 >> 0x20);\n        bVar25 = (byte)((ulong)dVar4 >> 0x28);\n        bVar24 = (byte)((ulong)dVar4 >> 0x30);\n        bVar23 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          param_5[8] = SUB81(dVar4,0);\n          param_5[9] = bVar17;\n          param_5[10] = bVar18;\n          param_5[0xb] = bVar27;\n          param_5[0xc] = bVar26;\n          param_5[0xd] = bVar25;\n          param_5[0xe] = bVar24;\n          param_5[0xf] = bVar23;\n        }\n        else {\n          param_5[8] = bVar23;\n          param_5[9] = bVar24;\n          param_5[10] = bVar25;\n          param_5[0xb] = bVar26;\n          param_5[0xc] = bVar27;\n          param_5[0xd] = bVar18;\n          param_5[0xe] = bVar17;\n          param_5[0xf] = SUB81(dVar4,0);\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 0x10;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }\n  }" { (if_statement "if (uVar34 == 0x20) {\n      if ((int)param_2[2] == 1) {\n        if ((long)param_3 < 1) {\n          return;\n        }\n        uVar34 = 0;\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar37 = (float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3]);\n          bVar18 = (byte)((uint)fVar37 >> 8);\n          bVar27 = (byte)((uint)fVar37 >> 0x10);\n          bVar17 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = SUB41(fVar37,0);\n            param_5[1] = bVar18;\n            param_5[2] = bVar27;\n            param_5[3] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = bVar27;\n            param_5[2] = bVar18;\n            param_5[3] = SUB41(fVar37,0);\n          }\n          fVar37 = fVar36;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          fVar37 = (float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3]);\n          bVar17 = (byte)((uint)fVar37 >> 8);\n          bVar18 = (byte)((uint)fVar37 >> 0x10);\n          bVar27 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            param_5[4] = SUB41(fVar37,0);\n            param_5[5] = bVar17;\n            param_5[6] = bVar18;\n            param_5[7] = bVar27;\n          }\n          else {\n            param_5[4] = bVar27;\n            param_5[5] = bVar18;\n            param_5[6] = bVar17;\n            param_5[7] = SUB41(fVar37,0);\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 8;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      uVar34 = 0;\n      if ((long)param_3 < 1) {\n        return;\n      }\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar36)) {\n          uVar20 = 0;\n        }\n        else {\n          uVar20 = 0;\n          if ((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)) {\n            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = (byte)uVar20;\n          param_5[1] = bVar17;\n          param_5[2] = bVar18;\n          param_5[3] = bVar27;\n        }\n        else {\n          *param_5 = bVar27;\n          param_5[1] = bVar18;\n          param_5[2] = bVar17;\n          param_5[3] = (byte)uVar20;\n        }\n        uVar20 = 0xffffffff;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          if (NAN(fVar36)) {\n            uVar20 = 0;\n          }\n          else {\n            uVar20 = 0;\n            if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          param_5[4] = (byte)uVar20;\n          param_5[5] = bVar17;\n          param_5[6] = bVar18;\n          param_5[7] = bVar27;\n        }\n        else {\n          param_5[4] = bVar27;\n          param_5[5] = bVar18;\n          param_5[6] = bVar17;\n          param_5[7] = (byte)uVar20;\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 8;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }" if (parenthesized_expression "(uVar34 == 0x20)" ( (binary_expression "uVar34 == 0x20" identifier == number_literal) )) (compound_statement "{\n      if ((int)param_2[2] == 1) {\n        if ((long)param_3 < 1) {\n          return;\n        }\n        uVar34 = 0;\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar37 = (float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3]);\n          bVar18 = (byte)((uint)fVar37 >> 8);\n          bVar27 = (byte)((uint)fVar37 >> 0x10);\n          bVar17 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = SUB41(fVar37,0);\n            param_5[1] = bVar18;\n            param_5[2] = bVar27;\n            param_5[3] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = bVar27;\n            param_5[2] = bVar18;\n            param_5[3] = SUB41(fVar37,0);\n          }\n          fVar37 = fVar36;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          fVar37 = (float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3]);\n          bVar17 = (byte)((uint)fVar37 >> 8);\n          bVar18 = (byte)((uint)fVar37 >> 0x10);\n          bVar27 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            param_5[4] = SUB41(fVar37,0);\n            param_5[5] = bVar17;\n            param_5[6] = bVar18;\n            param_5[7] = bVar27;\n          }\n          else {\n            param_5[4] = bVar27;\n            param_5[5] = bVar18;\n            param_5[6] = bVar17;\n            param_5[7] = SUB41(fVar37,0);\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 8;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      uVar34 = 0;\n      if ((long)param_3 < 1) {\n        return;\n      }\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar36)) {\n          uVar20 = 0;\n        }\n        else {\n          uVar20 = 0;\n          if ((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)) {\n            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = (byte)uVar20;\n          param_5[1] = bVar17;\n          param_5[2] = bVar18;\n          param_5[3] = bVar27;\n        }\n        else {\n          *param_5 = bVar27;\n          param_5[1] = bVar18;\n          param_5[2] = bVar17;\n          param_5[3] = (byte)uVar20;\n        }\n        uVar20 = 0xffffffff;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          if (NAN(fVar36)) {\n            uVar20 = 0;\n          }\n          else {\n            uVar20 = 0;\n            if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          param_5[4] = (byte)uVar20;\n          param_5[5] = bVar17;\n          param_5[6] = bVar18;\n          param_5[7] = bVar27;\n        }\n        else {\n          param_5[4] = bVar27;\n          param_5[5] = bVar18;\n          param_5[6] = bVar17;\n          param_5[7] = (byte)uVar20;\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 8;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }" { (if_statement "if ((int)param_2[2] == 1) {\n        if ((long)param_3 < 1) {\n          return;\n        }\n        uVar34 = 0;\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar37 = (float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3]);\n          bVar18 = (byte)((uint)fVar37 >> 8);\n          bVar27 = (byte)((uint)fVar37 >> 0x10);\n          bVar17 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = SUB41(fVar37,0);\n            param_5[1] = bVar18;\n            param_5[2] = bVar27;\n            param_5[3] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = bVar27;\n            param_5[2] = bVar18;\n            param_5[3] = SUB41(fVar37,0);\n          }\n          fVar37 = fVar36;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          fVar37 = (float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3]);\n          bVar17 = (byte)((uint)fVar37 >> 8);\n          bVar18 = (byte)((uint)fVar37 >> 0x10);\n          bVar27 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            param_5[4] = SUB41(fVar37,0);\n            param_5[5] = bVar17;\n            param_5[6] = bVar18;\n            param_5[7] = bVar27;\n          }\n          else {\n            param_5[4] = bVar27;\n            param_5[5] = bVar18;\n            param_5[6] = bVar17;\n            param_5[7] = SUB41(fVar37,0);\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 8;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }" if (parenthesized_expression "((int)param_2[2] == 1)" ( (binary_expression "(int)param_2[2] == 1" (cast_expression "(int)param_2[2]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n        if ((long)param_3 < 1) {\n          return;\n        }\n        uVar34 = 0;\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar37 = (float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3]);\n          bVar18 = (byte)((uint)fVar37 >> 8);\n          bVar27 = (byte)((uint)fVar37 >> 0x10);\n          bVar17 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = SUB41(fVar37,0);\n            param_5[1] = bVar18;\n            param_5[2] = bVar27;\n            param_5[3] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = bVar27;\n            param_5[2] = bVar18;\n            param_5[3] = SUB41(fVar37,0);\n          }\n          fVar37 = fVar36;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          fVar37 = (float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3]);\n          bVar17 = (byte)((uint)fVar37 >> 8);\n          bVar18 = (byte)((uint)fVar37 >> 0x10);\n          bVar27 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            param_5[4] = SUB41(fVar37,0);\n            param_5[5] = bVar17;\n            param_5[6] = bVar18;\n            param_5[7] = bVar27;\n          }\n          else {\n            param_5[4] = bVar27;\n            param_5[5] = bVar18;\n            param_5[6] = bVar17;\n            param_5[7] = SUB41(fVar37,0);\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 8;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }" { (if_statement "if ((long)param_3 < 1) {\n          return;\n        }" if (parenthesized_expression "((long)param_3 < 1)" ( (binary_expression "(long)param_3 < 1" (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "uVar34 = 0;" (assignment_expression "uVar34 = 0" identifier = number_literal) ;) (do_statement "do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar37 = (float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3]);\n          bVar18 = (byte)((uint)fVar37 >> 8);\n          bVar27 = (byte)((uint)fVar37 >> 0x10);\n          bVar17 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = SUB41(fVar37,0);\n            param_5[1] = bVar18;\n            param_5[2] = bVar27;\n            param_5[3] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = bVar27;\n            param_5[2] = bVar18;\n            param_5[3] = SUB41(fVar37,0);\n          }\n          fVar37 = fVar36;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          fVar37 = (float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3]);\n          bVar17 = (byte)((uint)fVar37 >> 8);\n          bVar18 = (byte)((uint)fVar37 >> 0x10);\n          bVar27 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            param_5[4] = SUB41(fVar37,0);\n            param_5[5] = bVar17;\n            param_5[6] = bVar18;\n            param_5[7] = bVar27;\n          }\n          else {\n            param_5[4] = bVar27;\n            param_5[5] = bVar18;\n            param_5[6] = bVar17;\n            param_5[7] = SUB41(fVar37,0);\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 8;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);" do (compound_statement "{\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar37 = (float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3]);\n          bVar18 = (byte)((uint)fVar37 >> 8);\n          bVar27 = (byte)((uint)fVar37 >> 0x10);\n          bVar17 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = SUB41(fVar37,0);\n            param_5[1] = bVar18;\n            param_5[2] = bVar27;\n            param_5[3] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = bVar27;\n            param_5[2] = bVar18;\n            param_5[3] = SUB41(fVar37,0);\n          }\n          fVar37 = fVar36;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          fVar37 = (float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3]);\n          bVar17 = (byte)((uint)fVar37 >> 8);\n          bVar18 = (byte)((uint)fVar37 >> 0x10);\n          bVar27 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            param_5[4] = SUB41(fVar37,0);\n            param_5[5] = bVar17;\n            param_5[6] = bVar18;\n            param_5[7] = bVar27;\n          }\n          else {\n            param_5[4] = bVar27;\n            param_5[5] = bVar18;\n            param_5[6] = bVar17;\n            param_5[7] = SUB41(fVar37,0);\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 8;\n          uVar34 = uVar34 + 1;\n        }" { (expression_statement "lVar32 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar32 = *(long *)(param_1 + 0x360)" identifier = (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "fVar37 = (float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3]);" (assignment_expression "fVar37 = (float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3])" identifier = (cast_expression "(float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3])" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3])" ( (binary_expression "(double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3]" (binary_expression "(double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd]" (cast_expression "(double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4))" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4))" ( (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x18) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x18) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x18) * 4" (pointer_expression "*(long *)(lVar32 + 0x18)" * (cast_expression "(long *)(lVar32 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x18)" ( (binary_expression "lVar32 + 0x18" identifier + number_literal) )))) * number_literal)) ))))) + (binary_expression "fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 8) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 8) * 4" identifier + (binary_expression "*(long *)(lVar32 + 8) * 4" (pointer_expression "*(long *)(lVar32 + 8)" * (cast_expression "(long *)(lVar32 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 8)" ( (binary_expression "lVar32 + 8" identifier + number_literal) )))) * number_literal)) )))))) + (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x28) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x28) * 4" (pointer_expression "*(long *)(lVar32 + 0x28)" * (cast_expression "(long *)(lVar32 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x28)" ( (binary_expression "lVar32 + 0x28" identifier + number_literal) )))) * number_literal)) )))))) ))) * (cast_expression "(double)param_2[0xd]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "param_2[0xd]" identifier [ number_literal ]))) + (cast_expression "(double)param_2[3]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )))) ;) (expression_statement "bVar18 = (byte)((uint)fVar37 >> 8);" (assignment_expression "bVar18 = (byte)((uint)fVar37 >> 8)" identifier = (call_expression "(byte)((uint)fVar37 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar37 >> 8)" ( (binary_expression "(uint)fVar37 >> 8" (cast_expression "(uint)fVar37" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar27 = (byte)((uint)fVar37 >> 0x10);" (assignment_expression "bVar27 = (byte)((uint)fVar37 >> 0x10)" identifier = (call_expression "(byte)((uint)fVar37 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar37 >> 0x10)" ( (binary_expression "(uint)fVar37 >> 0x10" (cast_expression "(uint)fVar37" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar17 = (byte)((uint)fVar37 >> 0x18);" (assignment_expression "bVar17 = (byte)((uint)fVar37 >> 0x18)" identifier = (call_expression "(byte)((uint)fVar37 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar37 >> 0x18)" ( (binary_expression "(uint)fVar37 >> 0x18" (cast_expression "(uint)fVar37" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if ((int)param_2[0xc] == 1) {\n            *param_5 = SUB41(fVar37,0);\n            param_5[1] = bVar18;\n            param_5[2] = bVar27;\n            param_5[3] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = bVar27;\n            param_5[2] = bVar18;\n            param_5[3] = SUB41(fVar37,0);\n          }" if (parenthesized_expression "((int)param_2[0xc] == 1)" ( (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[0xc]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n            *param_5 = SUB41(fVar37,0);\n            param_5[1] = bVar18;\n            param_5[2] = bVar27;\n            param_5[3] = bVar17;\n          }" { (expression_statement "*param_5 = SUB41(fVar37,0);" (assignment_expression "*param_5 = SUB41(fVar37,0)" (pointer_expression "*param_5" * identifier) = (call_expression "SUB41(fVar37,0)" identifier (argument_list "(fVar37,0)" ( identifier , number_literal )))) ;) (expression_statement "param_5[1] = bVar18;" (assignment_expression "param_5[1] = bVar18" (subscript_expression "param_5[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[2] = bVar27;" (assignment_expression "param_5[2] = bVar27" (subscript_expression "param_5[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[3] = bVar17;" (assignment_expression "param_5[3] = bVar17" (subscript_expression "param_5[3]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            *param_5 = bVar17;\n            param_5[1] = bVar27;\n            param_5[2] = bVar18;\n            param_5[3] = SUB41(fVar37,0);\n          }" else (compound_statement "{\n            *param_5 = bVar17;\n            param_5[1] = bVar27;\n            param_5[2] = bVar18;\n            param_5[3] = SUB41(fVar37,0);\n          }" { (expression_statement "*param_5 = bVar17;" (assignment_expression "*param_5 = bVar17" (pointer_expression "*param_5" * identifier) = identifier) ;) (expression_statement "param_5[1] = bVar27;" (assignment_expression "param_5[1] = bVar27" (subscript_expression "param_5[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[2] = bVar18;" (assignment_expression "param_5[2] = bVar18" (subscript_expression "param_5[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[3] = SUB41(fVar37,0);" (assignment_expression "param_5[3] = SUB41(fVar37,0)" (subscript_expression "param_5[3]" identifier [ number_literal ]) = (call_expression "SUB41(fVar37,0)" identifier (argument_list "(fVar37,0)" ( identifier , number_literal )))) ;) }))) (expression_statement "fVar37 = fVar36;" (assignment_expression "fVar37 = fVar36" identifier = identifier) ;) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }" if (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0)" ( (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44)" * (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x44)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x44" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n            fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }" { (expression_statement "fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);" (assignment_expression "fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" identifier = (pointer_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (binary_expression "param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" identifier + (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48)" * (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x48)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x48" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) })) (expression_statement "fVar37 = (float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3]);" (assignment_expression "fVar37 = (float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3])" identifier = (cast_expression "(float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3])" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((double)fVar37 * (double)param_2[0xd] + (double)param_2[3])" ( (binary_expression "(double)fVar37 * (double)param_2[0xd] + (double)param_2[3]" (binary_expression "(double)fVar37 * (double)param_2[0xd]" (cast_expression "(double)fVar37" ( (type_descriptor "double" primitive_type) ) identifier) * (cast_expression "(double)param_2[0xd]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "param_2[0xd]" identifier [ number_literal ]))) + (cast_expression "(double)param_2[3]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )))) ;) (expression_statement "bVar17 = (byte)((uint)fVar37 >> 8);" (assignment_expression "bVar17 = (byte)((uint)fVar37 >> 8)" identifier = (call_expression "(byte)((uint)fVar37 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar37 >> 8)" ( (binary_expression "(uint)fVar37 >> 8" (cast_expression "(uint)fVar37" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar18 = (byte)((uint)fVar37 >> 0x10);" (assignment_expression "bVar18 = (byte)((uint)fVar37 >> 0x10)" identifier = (call_expression "(byte)((uint)fVar37 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar37 >> 0x10)" ( (binary_expression "(uint)fVar37 >> 0x10" (cast_expression "(uint)fVar37" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar27 = (byte)((uint)fVar37 >> 0x18);" (assignment_expression "bVar27 = (byte)((uint)fVar37 >> 0x18)" identifier = (call_expression "(byte)((uint)fVar37 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar37 >> 0x18)" ( (binary_expression "(uint)fVar37 >> 0x18" (cast_expression "(uint)fVar37" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if ((int)param_2[0xc] == 1) {\n            param_5[4] = SUB41(fVar37,0);\n            param_5[5] = bVar17;\n            param_5[6] = bVar18;\n            param_5[7] = bVar27;\n          }\n          else {\n            param_5[4] = bVar27;\n            param_5[5] = bVar18;\n            param_5[6] = bVar17;\n            param_5[7] = SUB41(fVar37,0);\n          }" if (parenthesized_expression "((int)param_2[0xc] == 1)" ( (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[0xc]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n            param_5[4] = SUB41(fVar37,0);\n            param_5[5] = bVar17;\n            param_5[6] = bVar18;\n            param_5[7] = bVar27;\n          }" { (expression_statement "param_5[4] = SUB41(fVar37,0);" (assignment_expression "param_5[4] = SUB41(fVar37,0)" (subscript_expression "param_5[4]" identifier [ number_literal ]) = (call_expression "SUB41(fVar37,0)" identifier (argument_list "(fVar37,0)" ( identifier , number_literal )))) ;) (expression_statement "param_5[5] = bVar17;" (assignment_expression "param_5[5] = bVar17" (subscript_expression "param_5[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[6] = bVar18;" (assignment_expression "param_5[6] = bVar18" (subscript_expression "param_5[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[7] = bVar27;" (assignment_expression "param_5[7] = bVar27" (subscript_expression "param_5[7]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            param_5[4] = bVar27;\n            param_5[5] = bVar18;\n            param_5[6] = bVar17;\n            param_5[7] = SUB41(fVar37,0);\n          }" else (compound_statement "{\n            param_5[4] = bVar27;\n            param_5[5] = bVar18;\n            param_5[6] = bVar17;\n            param_5[7] = SUB41(fVar37,0);\n          }" { (expression_statement "param_5[4] = bVar27;" (assignment_expression "param_5[4] = bVar27" (subscript_expression "param_5[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[5] = bVar18;" (assignment_expression "param_5[5] = bVar18" (subscript_expression "param_5[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[6] = bVar17;" (assignment_expression "param_5[6] = bVar17" (subscript_expression "param_5[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[7] = SUB41(fVar37,0);" (assignment_expression "param_5[7] = SUB41(fVar37,0)" (subscript_expression "param_5[7]" identifier [ number_literal ]) = (call_expression "SUB41(fVar37,0)" identifier (argument_list "(fVar37,0)" ( identifier , number_literal )))) ;) }))) (expression_statement "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4" identifier = (binary_expression "param_4 + *(long *)(param_1 + 0x340) * 4" identifier + (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" * (cast_expression "(long *)(param_1 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "param_5 = param_5 + param_2[6] + 8;" (assignment_expression "param_5 = param_5 + param_2[6] + 8" identifier = (binary_expression "param_5 + param_2[6] + 8" (binary_expression "param_5 + param_2[6]" identifier + (subscript_expression "param_2[6]" identifier [ number_literal ])) + number_literal)) ;) (expression_statement "uVar34 = uVar34 + 1;" (assignment_expression "uVar34 = uVar34 + 1" identifier = (binary_expression "uVar34 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar34 != param_3)" ( (binary_expression "uVar34 != param_3" identifier != identifier) )) ;) (return_statement "return;" return ;) })) (expression_statement "uVar34 = 0;" (assignment_expression "uVar34 = 0" identifier = number_literal) ;) (if_statement "if ((long)param_3 < 1) {\n        return;\n      }" if (parenthesized_expression "((long)param_3 < 1)" ( (binary_expression "(long)param_3 < 1" (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (do_statement "do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar36)) {\n          uVar20 = 0;\n        }\n        else {\n          uVar20 = 0;\n          if ((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)) {\n            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = (byte)uVar20;\n          param_5[1] = bVar17;\n          param_5[2] = bVar18;\n          param_5[3] = bVar27;\n        }\n        else {\n          *param_5 = bVar27;\n          param_5[1] = bVar18;\n          param_5[2] = bVar17;\n          param_5[3] = (byte)uVar20;\n        }\n        uVar20 = 0xffffffff;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          if (NAN(fVar36)) {\n            uVar20 = 0;\n          }\n          else {\n            uVar20 = 0;\n            if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          param_5[4] = (byte)uVar20;\n          param_5[5] = bVar17;\n          param_5[6] = bVar18;\n          param_5[7] = bVar27;\n        }\n        else {\n          param_5[4] = bVar27;\n          param_5[5] = bVar18;\n          param_5[6] = bVar17;\n          param_5[7] = (byte)uVar20;\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 8;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);" do (compound_statement "{\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar36)) {\n          uVar20 = 0;\n        }\n        else {\n          uVar20 = 0;\n          if ((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)) {\n            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = (byte)uVar20;\n          param_5[1] = bVar17;\n          param_5[2] = bVar18;\n          param_5[3] = bVar27;\n        }\n        else {\n          *param_5 = bVar27;\n          param_5[1] = bVar18;\n          param_5[2] = bVar17;\n          param_5[3] = (byte)uVar20;\n        }\n        uVar20 = 0xffffffff;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          if (NAN(fVar36)) {\n            uVar20 = 0;\n          }\n          else {\n            uVar20 = 0;\n            if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          param_5[4] = (byte)uVar20;\n          param_5[5] = bVar17;\n          param_5[6] = bVar18;\n          param_5[7] = bVar27;\n        }\n        else {\n          param_5[4] = bVar27;\n          param_5[5] = bVar18;\n          param_5[6] = bVar17;\n          param_5[7] = (byte)uVar20;\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 8;\n        uVar34 = uVar34 + 1;\n      }" { (expression_statement "lVar32 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar32 = *(long *)(param_1 + 0x360)" identifier = (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);" (assignment_expression "fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" identifier = (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x18) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x18) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x18) * 4" (pointer_expression "*(long *)(lVar32 + 0x18)" * (cast_expression "(long *)(lVar32 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x18)" ( (binary_expression "lVar32 + 0x18" identifier + number_literal) )))) * number_literal)) ))))) + (binary_expression "fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 8) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 8) * 4" identifier + (binary_expression "*(long *)(lVar32 + 8) * 4" (pointer_expression "*(long *)(lVar32 + 8)" * (cast_expression "(long *)(lVar32 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 8)" ( (binary_expression "lVar32 + 8" identifier + number_literal) )))) * number_literal)) )))))) + (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x28) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x28) * 4" (pointer_expression "*(long *)(lVar32 + 0x28)" * (cast_expression "(long *)(lVar32 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x28)" ( (binary_expression "lVar32 + 0x28" identifier + number_literal) )))) * number_literal)) ))))))) ;) (if_statement "if (NAN(fVar36)) {\n          uVar20 = 0;\n        }\n        else {\n          uVar20 = 0;\n          if ((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)) {\n            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);\n          }\n        }" if (parenthesized_expression "(NAN(fVar36))" ( (call_expression "NAN(fVar36)" identifier (argument_list "(fVar36)" ( identifier ))) )) (compound_statement "{\n          uVar20 = 0;\n        }" { (expression_statement "uVar20 = 0;" (assignment_expression "uVar20 = 0" identifier = number_literal) ;) }) (else_clause "else {\n          uVar20 = 0;\n          if ((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)) {\n            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);\n          }\n        }" else (compound_statement "{\n          uVar20 = 0;\n          if ((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)) {\n            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);\n          }\n        }" { (expression_statement "uVar20 = 0;" (assignment_expression "uVar20 = 0" identifier = number_literal) ;) (if_statement "if ((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)) {\n            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);\n          }" if (parenthesized_expression "((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10))" ( (binary_expression "(0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)" (parenthesized_expression "(0.0 < fVar36)" ( (binary_expression "0.0 < fVar36" number_literal < identifier) )) && (parenthesized_expression "(uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)" ( (comma_expression "uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10" (assignment_expression "uVar20 = 0xffffffff" identifier = number_literal) , (binary_expression "(double)fVar36 * dVar5 < dVar10" (binary_expression "(double)fVar36 * dVar5" (cast_expression "(double)fVar36" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) < identifier)) ))) )) (compound_statement "{\n            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);\n          }" { (expression_statement "uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);" (assignment_expression "uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7)" identifier = (call_expression "(undefined4)(long)((double)fVar36 * dVar5 + dVar7)" (call_expression "(undefined4)(long)" (parenthesized_expression "(undefined4)" ( identifier )) (argument_list "(long)" ( identifier ))) (argument_list "((double)fVar36 * dVar5 + dVar7)" ( (binary_expression "(double)fVar36 * dVar5 + dVar7" (binary_expression "(double)fVar36 * dVar5" (cast_expression "(double)fVar36" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) + identifier) )))) ;) })) }))) (expression_statement "bVar17 = (byte)((uint)uVar20 >> 8);" (assignment_expression "bVar17 = (byte)((uint)uVar20 >> 8)" identifier = (call_expression "(byte)((uint)uVar20 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)uVar20 >> 8)" ( (binary_expression "(uint)uVar20 >> 8" (cast_expression "(uint)uVar20" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar18 = (byte)((uint)uVar20 >> 0x10);" (assignment_expression "bVar18 = (byte)((uint)uVar20 >> 0x10)" identifier = (call_expression "(byte)((uint)uVar20 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)uVar20 >> 0x10)" ( (binary_expression "(uint)uVar20 >> 0x10" (cast_expression "(uint)uVar20" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar27 = (byte)((uint)uVar20 >> 0x18);" (assignment_expression "bVar27 = (byte)((uint)uVar20 >> 0x18)" identifier = (call_expression "(byte)((uint)uVar20 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)uVar20 >> 0x18)" ( (binary_expression "(uint)uVar20 >> 0x18" (cast_expression "(uint)uVar20" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if ((int)param_2[0xc] == 1) {\n          *param_5 = (byte)uVar20;\n          param_5[1] = bVar17;\n          param_5[2] = bVar18;\n          param_5[3] = bVar27;\n        }\n        else {\n          *param_5 = bVar27;\n          param_5[1] = bVar18;\n          param_5[2] = bVar17;\n          param_5[3] = (byte)uVar20;\n        }" if (parenthesized_expression "((int)param_2[0xc] == 1)" ( (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[0xc]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n          *param_5 = (byte)uVar20;\n          param_5[1] = bVar17;\n          param_5[2] = bVar18;\n          param_5[3] = bVar27;\n        }" { (expression_statement "*param_5 = (byte)uVar20;" (assignment_expression "*param_5 = (byte)uVar20" (pointer_expression "*param_5" * identifier) = (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "param_5[1] = bVar17;" (assignment_expression "param_5[1] = bVar17" (subscript_expression "param_5[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[2] = bVar18;" (assignment_expression "param_5[2] = bVar18" (subscript_expression "param_5[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[3] = bVar27;" (assignment_expression "param_5[3] = bVar27" (subscript_expression "param_5[3]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n          *param_5 = bVar27;\n          param_5[1] = bVar18;\n          param_5[2] = bVar17;\n          param_5[3] = (byte)uVar20;\n        }" else (compound_statement "{\n          *param_5 = bVar27;\n          param_5[1] = bVar18;\n          param_5[2] = bVar17;\n          param_5[3] = (byte)uVar20;\n        }" { (expression_statement "*param_5 = bVar27;" (assignment_expression "*param_5 = bVar27" (pointer_expression "*param_5" * identifier) = identifier) ;) (expression_statement "param_5[1] = bVar18;" (assignment_expression "param_5[1] = bVar18" (subscript_expression "param_5[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[2] = bVar17;" (assignment_expression "param_5[2] = bVar17" (subscript_expression "param_5[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[3] = (byte)uVar20;" (assignment_expression "param_5[3] = (byte)uVar20" (subscript_expression "param_5[3]" identifier [ number_literal ]) = (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }))) (expression_statement "uVar20 = 0xffffffff;" (assignment_expression "uVar20 = 0xffffffff" identifier = number_literal) ;) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          if (NAN(fVar36)) {\n            uVar20 = 0;\n          }\n          else {\n            uVar20 = 0;\n            if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }" if (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0)" ( (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44)" * (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x44)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x44" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n          fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          if (NAN(fVar36)) {\n            uVar20 = 0;\n          }\n          else {\n            uVar20 = 0;\n            if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }" { (expression_statement "fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);" (assignment_expression "fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" identifier = (pointer_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (binary_expression "param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" identifier + (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48)" * (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x48)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x48" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (NAN(fVar36)) {\n            uVar20 = 0;\n          }\n          else {\n            uVar20 = 0;\n            if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }\n          }" if (parenthesized_expression "(NAN(fVar36))" ( (call_expression "NAN(fVar36)" identifier (argument_list "(fVar36)" ( identifier ))) )) (compound_statement "{\n            uVar20 = 0;\n          }" { (expression_statement "uVar20 = 0;" (assignment_expression "uVar20 = 0" identifier = number_literal) ;) }) (else_clause "else {\n            uVar20 = 0;\n            if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }\n          }" else (compound_statement "{\n            uVar20 = 0;\n            if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }\n          }" { (expression_statement "uVar20 = 0;" (assignment_expression "uVar20 = 0" identifier = number_literal) ;) (if_statement "if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }" if (parenthesized_expression "((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928))" ( (binary_expression "(0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)" (parenthesized_expression "(0.0 < fVar36)" ( (binary_expression "0.0 < fVar36" number_literal < identifier) )) && (parenthesized_expression "(uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)" ( (comma_expression "uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928" (assignment_expression "uVar20 = 0xffffffff" identifier = number_literal) , (binary_expression "(double)fVar36 * DAT_00404920 < DAT_00404928" (binary_expression "(double)fVar36 * DAT_00404920" (cast_expression "(double)fVar36" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) < identifier)) ))) )) (compound_statement "{\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }" { (expression_statement "uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);" (assignment_expression "uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28)" identifier = (cast_expression "(int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28)" ( (type_descriptor "int" primitive_type) ) (cast_expression "(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "((double)fVar36 * DAT_00404920 + DAT_003f9c28)" ( (binary_expression "(double)fVar36 * DAT_00404920 + DAT_003f9c28" (binary_expression "(double)fVar36 * DAT_00404920" (cast_expression "(double)fVar36" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) + identifier) ))))) ;) })) }))) })) (expression_statement "bVar17 = (byte)((uint)uVar20 >> 8);" (assignment_expression "bVar17 = (byte)((uint)uVar20 >> 8)" identifier = (call_expression "(byte)((uint)uVar20 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)uVar20 >> 8)" ( (binary_expression "(uint)uVar20 >> 8" (cast_expression "(uint)uVar20" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar18 = (byte)((uint)uVar20 >> 0x10);" (assignment_expression "bVar18 = (byte)((uint)uVar20 >> 0x10)" identifier = (call_expression "(byte)((uint)uVar20 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)uVar20 >> 0x10)" ( (binary_expression "(uint)uVar20 >> 0x10" (cast_expression "(uint)uVar20" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar27 = (byte)((uint)uVar20 >> 0x18);" (assignment_expression "bVar27 = (byte)((uint)uVar20 >> 0x18)" identifier = (call_expression "(byte)((uint)uVar20 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)uVar20 >> 0x18)" ( (binary_expression "(uint)uVar20 >> 0x18" (cast_expression "(uint)uVar20" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if ((int)param_2[0xc] == 1) {\n          param_5[4] = (byte)uVar20;\n          param_5[5] = bVar17;\n          param_5[6] = bVar18;\n          param_5[7] = bVar27;\n        }\n        else {\n          param_5[4] = bVar27;\n          param_5[5] = bVar18;\n          param_5[6] = bVar17;\n          param_5[7] = (byte)uVar20;\n        }" if (parenthesized_expression "((int)param_2[0xc] == 1)" ( (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[0xc]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n          param_5[4] = (byte)uVar20;\n          param_5[5] = bVar17;\n          param_5[6] = bVar18;\n          param_5[7] = bVar27;\n        }" { (expression_statement "param_5[4] = (byte)uVar20;" (assignment_expression "param_5[4] = (byte)uVar20" (subscript_expression "param_5[4]" identifier [ number_literal ]) = (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "param_5[5] = bVar17;" (assignment_expression "param_5[5] = bVar17" (subscript_expression "param_5[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[6] = bVar18;" (assignment_expression "param_5[6] = bVar18" (subscript_expression "param_5[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[7] = bVar27;" (assignment_expression "param_5[7] = bVar27" (subscript_expression "param_5[7]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n          param_5[4] = bVar27;\n          param_5[5] = bVar18;\n          param_5[6] = bVar17;\n          param_5[7] = (byte)uVar20;\n        }" else (compound_statement "{\n          param_5[4] = bVar27;\n          param_5[5] = bVar18;\n          param_5[6] = bVar17;\n          param_5[7] = (byte)uVar20;\n        }" { (expression_statement "param_5[4] = bVar27;" (assignment_expression "param_5[4] = bVar27" (subscript_expression "param_5[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[5] = bVar18;" (assignment_expression "param_5[5] = bVar18" (subscript_expression "param_5[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[6] = bVar17;" (assignment_expression "param_5[6] = bVar17" (subscript_expression "param_5[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[7] = (byte)uVar20;" (assignment_expression "param_5[7] = (byte)uVar20" (subscript_expression "param_5[7]" identifier [ number_literal ]) = (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }))) (expression_statement "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4" identifier = (binary_expression "param_4 + *(long *)(param_1 + 0x340) * 4" identifier + (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" * (cast_expression "(long *)(param_1 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "param_5 = param_5 + param_2[6] + 8;" (assignment_expression "param_5 = param_5 + param_2[6] + 8" identifier = (binary_expression "param_5 + param_2[6] + 8" (binary_expression "param_5 + param_2[6]" identifier + (subscript_expression "param_2[6]" identifier [ number_literal ])) + number_literal)) ;) (expression_statement "uVar34 = uVar34 + 1;" (assignment_expression "uVar34 = uVar34 + 1" identifier = (binary_expression "uVar34 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar34 != param_3)" ( (binary_expression "uVar34 != param_3" identifier != identifier) )) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar34 != 0x40) {\n      if (uVar34 == 0x10) {\n        if ((int)param_2[2] == 1) {\n          if ((long)param_3 < 1) {\n            return;\n          }\n          uVar34 = 0;\n          do {\n            lVar32 = *(long *)(param_1 + 0x360);\n            uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }\n            else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }\n            fVar36 = _DAT_003fa400;\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }\n            uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }\n            else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }\n            param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n            param_5 = param_5 + param_2[6] + 4;\n            uVar34 = uVar34 + 1;\n          } while (uVar34 != param_3);\n          return;\n        }\n        uVar34 = 0;\n        if ((long)param_3 < 1) {\n          return;\n        }\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n          if (NAN(fVar36)) {\n            uVar19 = 0;\n          }\n          else {\n            uVar19 = 0;\n            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = (byte)uVar19;\n            param_5[1] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = (byte)uVar19;\n          }\n          uVar19 = 0xffff;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            if (NAN(fVar36)) {\n              uVar19 = 0;\n            }\n            else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            param_5[2] = (byte)uVar19;\n            param_5[3] = bVar17;\n          }\n          else {\n            param_5[2] = bVar17;\n            param_5[3] = (byte)uVar19;\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 4;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      goto LAB_002734da;\n    }" if (parenthesized_expression "(uVar34 != 0x40)" ( (binary_expression "uVar34 != 0x40" identifier != number_literal) )) (compound_statement "{\n      if (uVar34 == 0x10) {\n        if ((int)param_2[2] == 1) {\n          if ((long)param_3 < 1) {\n            return;\n          }\n          uVar34 = 0;\n          do {\n            lVar32 = *(long *)(param_1 + 0x360);\n            uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }\n            else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }\n            fVar36 = _DAT_003fa400;\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }\n            uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }\n            else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }\n            param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n            param_5 = param_5 + param_2[6] + 4;\n            uVar34 = uVar34 + 1;\n          } while (uVar34 != param_3);\n          return;\n        }\n        uVar34 = 0;\n        if ((long)param_3 < 1) {\n          return;\n        }\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n          if (NAN(fVar36)) {\n            uVar19 = 0;\n          }\n          else {\n            uVar19 = 0;\n            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = (byte)uVar19;\n            param_5[1] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = (byte)uVar19;\n          }\n          uVar19 = 0xffff;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            if (NAN(fVar36)) {\n              uVar19 = 0;\n            }\n            else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            param_5[2] = (byte)uVar19;\n            param_5[3] = bVar17;\n          }\n          else {\n            param_5[2] = bVar17;\n            param_5[3] = (byte)uVar19;\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 4;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      goto LAB_002734da;\n    }" { (if_statement "if (uVar34 == 0x10) {\n        if ((int)param_2[2] == 1) {\n          if ((long)param_3 < 1) {\n            return;\n          }\n          uVar34 = 0;\n          do {\n            lVar32 = *(long *)(param_1 + 0x360);\n            uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }\n            else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }\n            fVar36 = _DAT_003fa400;\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }\n            uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }\n            else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }\n            param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n            param_5 = param_5 + param_2[6] + 4;\n            uVar34 = uVar34 + 1;\n          } while (uVar34 != param_3);\n          return;\n        }\n        uVar34 = 0;\n        if ((long)param_3 < 1) {\n          return;\n        }\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n          if (NAN(fVar36)) {\n            uVar19 = 0;\n          }\n          else {\n            uVar19 = 0;\n            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = (byte)uVar19;\n            param_5[1] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = (byte)uVar19;\n          }\n          uVar19 = 0xffff;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            if (NAN(fVar36)) {\n              uVar19 = 0;\n            }\n            else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            param_5[2] = (byte)uVar19;\n            param_5[3] = bVar17;\n          }\n          else {\n            param_5[2] = bVar17;\n            param_5[3] = (byte)uVar19;\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 4;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }" if (parenthesized_expression "(uVar34 == 0x10)" ( (binary_expression "uVar34 == 0x10" identifier == number_literal) )) (compound_statement "{\n        if ((int)param_2[2] == 1) {\n          if ((long)param_3 < 1) {\n            return;\n          }\n          uVar34 = 0;\n          do {\n            lVar32 = *(long *)(param_1 + 0x360);\n            uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }\n            else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }\n            fVar36 = _DAT_003fa400;\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }\n            uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }\n            else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }\n            param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n            param_5 = param_5 + param_2[6] + 4;\n            uVar34 = uVar34 + 1;\n          } while (uVar34 != param_3);\n          return;\n        }\n        uVar34 = 0;\n        if ((long)param_3 < 1) {\n          return;\n        }\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n          if (NAN(fVar36)) {\n            uVar19 = 0;\n          }\n          else {\n            uVar19 = 0;\n            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = (byte)uVar19;\n            param_5[1] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = (byte)uVar19;\n          }\n          uVar19 = 0xffff;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            if (NAN(fVar36)) {\n              uVar19 = 0;\n            }\n            else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            param_5[2] = (byte)uVar19;\n            param_5[3] = bVar17;\n          }\n          else {\n            param_5[2] = bVar17;\n            param_5[3] = (byte)uVar19;\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 4;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }" { (if_statement "if ((int)param_2[2] == 1) {\n          if ((long)param_3 < 1) {\n            return;\n          }\n          uVar34 = 0;\n          do {\n            lVar32 = *(long *)(param_1 + 0x360);\n            uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }\n            else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }\n            fVar36 = _DAT_003fa400;\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }\n            uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }\n            else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }\n            param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n            param_5 = param_5 + param_2[6] + 4;\n            uVar34 = uVar34 + 1;\n          } while (uVar34 != param_3);\n          return;\n        }" if (parenthesized_expression "((int)param_2[2] == 1)" ( (binary_expression "(int)param_2[2] == 1" (cast_expression "(int)param_2[2]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n          if ((long)param_3 < 1) {\n            return;\n          }\n          uVar34 = 0;\n          do {\n            lVar32 = *(long *)(param_1 + 0x360);\n            uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }\n            else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }\n            fVar36 = _DAT_003fa400;\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }\n            uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }\n            else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }\n            param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n            param_5 = param_5 + param_2[6] + 4;\n            uVar34 = uVar34 + 1;\n          } while (uVar34 != param_3);\n          return;\n        }" { (if_statement "if ((long)param_3 < 1) {\n            return;\n          }" if (parenthesized_expression "((long)param_3 < 1)" ( (binary_expression "(long)param_3 < 1" (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) (expression_statement "uVar34 = 0;" (assignment_expression "uVar34 = 0" identifier = number_literal) ;) (do_statement "do {\n            lVar32 = *(long *)(param_1 + 0x360);\n            uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }\n            else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }\n            fVar36 = _DAT_003fa400;\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }\n            uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }\n            else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }\n            param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n            param_5 = param_5 + param_2[6] + 4;\n            uVar34 = uVar34 + 1;\n          } while (uVar34 != param_3);" do (compound_statement "{\n            lVar32 = *(long *)(param_1 + 0x360);\n            uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }\n            else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }\n            fVar36 = _DAT_003fa400;\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }\n            uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }\n            else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }\n            param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n            param_5 = param_5 + param_2[6] + 4;\n            uVar34 = uVar34 + 1;\n          }" { (expression_statement "lVar32 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar32 = *(long *)(param_1 + 0x360)" identifier = (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60));" (assignment_expression "uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60))" identifier = (call_expression "FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60))" identifier (argument_list "((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60))" ( (cast_expression "(float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60)" ( (binary_expression "(double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60" (cast_expression "(double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  )" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  )" ( (binary_expression "DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (binary_expression "DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (binary_expression "DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             )" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             )" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             )" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             )" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x18) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x18) * 4" (pointer_expression "*(long *)(lVar32 + 0x18)" * (cast_expression "(long *)(lVar32 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x18)" ( (binary_expression "lVar32 + 0x18" identifier + number_literal) )))) * number_literal)) ))))) + (binary_expression "DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 8) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 8) * 4" identifier + (binary_expression "*(long *)(lVar32 + 8) * 4" (pointer_expression "*(long *)(lVar32 + 8)" * (cast_expression "(long *)(lVar32 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 8)" ( (binary_expression "lVar32 + 8" identifier + number_literal) )))) * number_literal)) )))))) + (binary_expression "DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x28) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x28) * 4" (pointer_expression "*(long *)(lVar32 + 0x28)" * (cast_expression "(long *)(lVar32 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x28)" ( (binary_expression "lVar32 + 0x28" identifier + number_literal) )))) * number_literal)) )))))) ))) * identifier) ))) )))) ;) (expression_statement "bVar17 = (byte)((ushort)uVar19 >> 8);" (assignment_expression "bVar17 = (byte)((ushort)uVar19 >> 8)" identifier = (call_expression "(byte)((ushort)uVar19 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ushort)uVar19 >> 8)" ( (binary_expression "(ushort)uVar19 >> 8" (cast_expression "(ushort)uVar19" ( (type_descriptor "ushort" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if ((int)param_2[0xc] == 1) {\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }\n            else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }" if (parenthesized_expression "((int)param_2[0xc] == 1)" ( (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[0xc]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }" { (expression_statement "*param_5 = (byte)uVar19;" (assignment_expression "*param_5 = (byte)uVar19" (pointer_expression "*param_5" * identifier) = (cast_expression "(byte)uVar19" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "param_5[1] = bVar17;" (assignment_expression "param_5[1] = bVar17" (subscript_expression "param_5[1]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }" else (compound_statement "{\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }" { (expression_statement "*param_5 = bVar17;" (assignment_expression "*param_5 = bVar17" (pointer_expression "*param_5" * identifier) = identifier) ;) (expression_statement "param_5[1] = (byte)uVar19;" (assignment_expression "param_5[1] = (byte)uVar19" (subscript_expression "param_5[1]" identifier [ number_literal ]) = (cast_expression "(byte)uVar19" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }))) (expression_statement "fVar36 = _DAT_003fa400;" (assignment_expression "fVar36 = _DAT_003fa400" identifier = identifier) ;) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }" if (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0)" ( (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44)" * (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x44)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x44" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }" { (expression_statement "fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);" (assignment_expression "fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" identifier = (pointer_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (binary_expression "param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" identifier + (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48)" * (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x48)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x48" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) })) (expression_statement "uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));" (assignment_expression "uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60))" identifier = (call_expression "FUN_00272577((float)((double)fVar36 * DAT_003f9c60))" identifier (argument_list "((float)((double)fVar36 * DAT_003f9c60))" ( (cast_expression "(float)((double)fVar36 * DAT_003f9c60)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((double)fVar36 * DAT_003f9c60)" ( (binary_expression "(double)fVar36 * DAT_003f9c60" (cast_expression "(double)fVar36" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) ))) )))) ;) (expression_statement "bVar17 = (byte)((ushort)uVar19 >> 8);" (assignment_expression "bVar17 = (byte)((ushort)uVar19 >> 8)" identifier = (call_expression "(byte)((ushort)uVar19 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ushort)uVar19 >> 8)" ( (binary_expression "(ushort)uVar19 >> 8" (cast_expression "(ushort)uVar19" ( (type_descriptor "ushort" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if ((int)param_2[0xc] == 1) {\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }\n            else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }" if (parenthesized_expression "((int)param_2[0xc] == 1)" ( (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[0xc]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }" { (expression_statement "param_5[2] = (byte)uVar19;" (assignment_expression "param_5[2] = (byte)uVar19" (subscript_expression "param_5[2]" identifier [ number_literal ]) = (cast_expression "(byte)uVar19" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "param_5[3] = bVar17;" (assignment_expression "param_5[3] = bVar17" (subscript_expression "param_5[3]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }" else (compound_statement "{\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }" { (expression_statement "param_5[2] = bVar17;" (assignment_expression "param_5[2] = bVar17" (subscript_expression "param_5[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[3] = (byte)uVar19;" (assignment_expression "param_5[3] = (byte)uVar19" (subscript_expression "param_5[3]" identifier [ number_literal ]) = (cast_expression "(byte)uVar19" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }))) (expression_statement "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4" identifier = (binary_expression "param_4 + *(long *)(param_1 + 0x340) * 4" identifier + (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" * (cast_expression "(long *)(param_1 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "param_5 = param_5 + param_2[6] + 4;" (assignment_expression "param_5 = param_5 + param_2[6] + 4" identifier = (binary_expression "param_5 + param_2[6] + 4" (binary_expression "param_5 + param_2[6]" identifier + (subscript_expression "param_2[6]" identifier [ number_literal ])) + number_literal)) ;) (expression_statement "uVar34 = uVar34 + 1;" (assignment_expression "uVar34 = uVar34 + 1" identifier = (binary_expression "uVar34 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar34 != param_3)" ( (binary_expression "uVar34 != param_3" identifier != identifier) )) ;) (return_statement "return;" return ;) })) (expression_statement "uVar34 = 0;" (assignment_expression "uVar34 = 0" identifier = number_literal) ;) (if_statement "if ((long)param_3 < 1) {\n          return;\n        }" if (parenthesized_expression "((long)param_3 < 1)" ( (binary_expression "(long)param_3 < 1" (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (do_statement "do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n          if (NAN(fVar36)) {\n            uVar19 = 0;\n          }\n          else {\n            uVar19 = 0;\n            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = (byte)uVar19;\n            param_5[1] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = (byte)uVar19;\n          }\n          uVar19 = 0xffff;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            if (NAN(fVar36)) {\n              uVar19 = 0;\n            }\n            else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            param_5[2] = (byte)uVar19;\n            param_5[3] = bVar17;\n          }\n          else {\n            param_5[2] = bVar17;\n            param_5[3] = (byte)uVar19;\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 4;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);" do (compound_statement "{\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n          if (NAN(fVar36)) {\n            uVar19 = 0;\n          }\n          else {\n            uVar19 = 0;\n            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = (byte)uVar19;\n            param_5[1] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = (byte)uVar19;\n          }\n          uVar19 = 0xffff;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            if (NAN(fVar36)) {\n              uVar19 = 0;\n            }\n            else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            param_5[2] = (byte)uVar19;\n            param_5[3] = bVar17;\n          }\n          else {\n            param_5[2] = bVar17;\n            param_5[3] = (byte)uVar19;\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 4;\n          uVar34 = uVar34 + 1;\n        }" { (expression_statement "lVar32 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar32 = *(long *)(param_1 + 0x360)" identifier = (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);" (assignment_expression "fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" identifier = (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x18) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x18) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x18) * 4" (pointer_expression "*(long *)(lVar32 + 0x18)" * (cast_expression "(long *)(lVar32 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x18)" ( (binary_expression "lVar32 + 0x18" identifier + number_literal) )))) * number_literal)) ))))) + (binary_expression "fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 8) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 8) * 4" identifier + (binary_expression "*(long *)(lVar32 + 8) * 4" (pointer_expression "*(long *)(lVar32 + 8)" * (cast_expression "(long *)(lVar32 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 8)" ( (binary_expression "lVar32 + 8" identifier + number_literal) )))) * number_literal)) )))))) + (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x28) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x28) * 4" (pointer_expression "*(long *)(lVar32 + 0x28)" * (cast_expression "(long *)(lVar32 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x28)" ( (binary_expression "lVar32 + 0x28" identifier + number_literal) )))) * number_literal)) ))))))) ;) (if_statement "if (NAN(fVar36)) {\n            uVar19 = 0;\n          }\n          else {\n            uVar19 = 0;\n            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }\n          }" if (parenthesized_expression "(NAN(fVar36))" ( (call_expression "NAN(fVar36)" identifier (argument_list "(fVar36)" ( identifier ))) )) (compound_statement "{\n            uVar19 = 0;\n          }" { (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) }) (else_clause "else {\n            uVar19 = 0;\n            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }\n          }" else (compound_statement "{\n            uVar19 = 0;\n            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }\n          }" { (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) (if_statement "if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }" if (parenthesized_expression "((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400))" ( (binary_expression "(0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)" (parenthesized_expression "(0.0 < fVar36)" ( (binary_expression "0.0 < fVar36" number_literal < identifier) )) && (parenthesized_expression "(uVar19 = 0xffff, fVar36 < _DAT_003fa400)" ( (comma_expression "uVar19 = 0xffff, fVar36 < _DAT_003fa400" (assignment_expression "uVar19 = 0xffff" identifier = number_literal) , (binary_expression "fVar36 < _DAT_003fa400" identifier < identifier)) ))) )) (compound_statement "{\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }" { (expression_statement "uVar19 = (undefined2)(int)((double)fVar36 + dVar7);" (assignment_expression "uVar19 = (undefined2)(int)((double)fVar36 + dVar7)" identifier = (call_expression "(undefined2)(int)((double)fVar36 + dVar7)" (call_expression "(undefined2)(int)" (parenthesized_expression "(undefined2)" ( identifier )) (argument_list "(int)" ( identifier ))) (argument_list "((double)fVar36 + dVar7)" ( (binary_expression "(double)fVar36 + dVar7" (cast_expression "(double)fVar36" ( (type_descriptor "double" primitive_type) ) identifier) + identifier) )))) ;) })) }))) (expression_statement "bVar17 = (byte)((ushort)uVar19 >> 8);" (assignment_expression "bVar17 = (byte)((ushort)uVar19 >> 8)" identifier = (call_expression "(byte)((ushort)uVar19 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ushort)uVar19 >> 8)" ( (binary_expression "(ushort)uVar19 >> 8" (cast_expression "(ushort)uVar19" ( (type_descriptor "ushort" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if ((int)param_2[0xc] == 1) {\n            *param_5 = (byte)uVar19;\n            param_5[1] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = (byte)uVar19;\n          }" if (parenthesized_expression "((int)param_2[0xc] == 1)" ( (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[0xc]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n            *param_5 = (byte)uVar19;\n            param_5[1] = bVar17;\n          }" { (expression_statement "*param_5 = (byte)uVar19;" (assignment_expression "*param_5 = (byte)uVar19" (pointer_expression "*param_5" * identifier) = (cast_expression "(byte)uVar19" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "param_5[1] = bVar17;" (assignment_expression "param_5[1] = bVar17" (subscript_expression "param_5[1]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            *param_5 = bVar17;\n            param_5[1] = (byte)uVar19;\n          }" else (compound_statement "{\n            *param_5 = bVar17;\n            param_5[1] = (byte)uVar19;\n          }" { (expression_statement "*param_5 = bVar17;" (assignment_expression "*param_5 = bVar17" (pointer_expression "*param_5" * identifier) = identifier) ;) (expression_statement "param_5[1] = (byte)uVar19;" (assignment_expression "param_5[1] = (byte)uVar19" (subscript_expression "param_5[1]" identifier [ number_literal ]) = (cast_expression "(byte)uVar19" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }))) (expression_statement "uVar19 = 0xffff;" (assignment_expression "uVar19 = 0xffff" identifier = number_literal) ;) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            if (NAN(fVar36)) {\n              uVar19 = 0;\n            }\n            else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }\n          }" if (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0)" ( (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44)" * (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x44)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x44" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            if (NAN(fVar36)) {\n              uVar19 = 0;\n            }\n            else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }\n          }" { (expression_statement "fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);" (assignment_expression "fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" identifier = (pointer_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (binary_expression "param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" identifier + (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48)" * (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x48)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x48" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (NAN(fVar36)) {\n              uVar19 = 0;\n            }\n            else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }" if (parenthesized_expression "(NAN(fVar36))" ( (call_expression "NAN(fVar36)" identifier (argument_list "(fVar36)" ( identifier ))) )) (compound_statement "{\n              uVar19 = 0;\n            }" { (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) }) (else_clause "else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }" else (compound_statement "{\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }" { (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) (if_statement "if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }" if (parenthesized_expression "((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400))" ( (binary_expression "(0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)" (parenthesized_expression "(0.0 < fVar36)" ( (binary_expression "0.0 < fVar36" number_literal < identifier) )) && (parenthesized_expression "(uVar19 = 0xffff, fVar36 < _DAT_003fa400)" ( (comma_expression "uVar19 = 0xffff, fVar36 < _DAT_003fa400" (assignment_expression "uVar19 = 0xffff" identifier = number_literal) , (binary_expression "fVar36 < _DAT_003fa400" identifier < identifier)) ))) )) (compound_statement "{\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }" { (expression_statement "uVar19 = (short)(int)((double)fVar36 + dVar7);" (assignment_expression "uVar19 = (short)(int)((double)fVar36 + dVar7)" identifier = (cast_expression "(short)(int)((double)fVar36 + dVar7)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (cast_expression "(int)((double)fVar36 + dVar7)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((double)fVar36 + dVar7)" ( (binary_expression "(double)fVar36 + dVar7" (cast_expression "(double)fVar36" ( (type_descriptor "double" primitive_type) ) identifier) + identifier) ))))) ;) })) }))) })) (expression_statement "bVar17 = (byte)((ushort)uVar19 >> 8);" (assignment_expression "bVar17 = (byte)((ushort)uVar19 >> 8)" identifier = (call_expression "(byte)((ushort)uVar19 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ushort)uVar19 >> 8)" ( (binary_expression "(ushort)uVar19 >> 8" (cast_expression "(ushort)uVar19" ( (type_descriptor "ushort" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if ((int)param_2[0xc] == 1) {\n            param_5[2] = (byte)uVar19;\n            param_5[3] = bVar17;\n          }\n          else {\n            param_5[2] = bVar17;\n            param_5[3] = (byte)uVar19;\n          }" if (parenthesized_expression "((int)param_2[0xc] == 1)" ( (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[0xc]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n            param_5[2] = (byte)uVar19;\n            param_5[3] = bVar17;\n          }" { (expression_statement "param_5[2] = (byte)uVar19;" (assignment_expression "param_5[2] = (byte)uVar19" (subscript_expression "param_5[2]" identifier [ number_literal ]) = (cast_expression "(byte)uVar19" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "param_5[3] = bVar17;" (assignment_expression "param_5[3] = bVar17" (subscript_expression "param_5[3]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            param_5[2] = bVar17;\n            param_5[3] = (byte)uVar19;\n          }" else (compound_statement "{\n            param_5[2] = bVar17;\n            param_5[3] = (byte)uVar19;\n          }" { (expression_statement "param_5[2] = bVar17;" (assignment_expression "param_5[2] = bVar17" (subscript_expression "param_5[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[3] = (byte)uVar19;" (assignment_expression "param_5[3] = (byte)uVar19" (subscript_expression "param_5[3]" identifier [ number_literal ]) = (cast_expression "(byte)uVar19" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }))) (expression_statement "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4" identifier = (binary_expression "param_4 + *(long *)(param_1 + 0x340) * 4" identifier + (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" * (cast_expression "(long *)(param_1 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "param_5 = param_5 + param_2[6] + 4;" (assignment_expression "param_5 = param_5 + param_2[6] + 4" identifier = (binary_expression "param_5 + param_2[6] + 4" (binary_expression "param_5 + param_2[6]" identifier + (subscript_expression "param_2[6]" identifier [ number_literal ])) + number_literal)) ;) (expression_statement "uVar34 = uVar34 + 1;" (assignment_expression "uVar34 = uVar34 + 1" identifier = (binary_expression "uVar34 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar34 != param_3)" ( (binary_expression "uVar34 != param_3" identifier != identifier) )) ;) (return_statement "return;" return ;) })) (goto_statement "goto LAB_002734da;" goto statement_identifier ;) })) (if_statement "if ((int)param_2[2] == 1) {\n      if ((long)param_3 < 1) {\n        return;\n      }\n      uVar34 = 0;\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        dVar4 = (double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                (double)param_2[0xd] + (double)param_2[3];\n        bVar18 = (byte)((ulong)dVar4 >> 8);\n        bVar23 = (byte)((ulong)dVar4 >> 0x10);\n        bVar24 = (byte)((ulong)dVar4 >> 0x18);\n        bVar25 = (byte)((ulong)dVar4 >> 0x20);\n        bVar26 = (byte)((ulong)dVar4 >> 0x28);\n        bVar27 = (byte)((ulong)dVar4 >> 0x30);\n        bVar17 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = SUB81(dVar4,0);\n          param_5[1] = bVar18;\n          param_5[2] = bVar23;\n          param_5[3] = bVar24;\n          param_5[4] = bVar25;\n          param_5[5] = bVar26;\n          param_5[6] = bVar27;\n          param_5[7] = bVar17;\n        }\n        else {\n          *param_5 = bVar17;\n          param_5[1] = bVar27;\n          param_5[2] = bVar26;\n          param_5[3] = bVar25;\n          param_5[4] = bVar24;\n          param_5[5] = bVar23;\n          param_5[6] = bVar18;\n          param_5[7] = SUB81(dVar4,0);\n        }\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        dVar4 = (double)fVar37 * (double)param_2[0xd] + (double)param_2[3];\n        bVar17 = (byte)((ulong)dVar4 >> 8);\n        bVar18 = (byte)((ulong)dVar4 >> 0x10);\n        bVar27 = (byte)((ulong)dVar4 >> 0x18);\n        bVar26 = (byte)((ulong)dVar4 >> 0x20);\n        bVar25 = (byte)((ulong)dVar4 >> 0x28);\n        bVar24 = (byte)((ulong)dVar4 >> 0x30);\n        bVar23 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          param_5[8] = SUB81(dVar4,0);\n          param_5[9] = bVar17;\n          param_5[10] = bVar18;\n          param_5[0xb] = bVar27;\n          param_5[0xc] = bVar26;\n          param_5[0xd] = bVar25;\n          param_5[0xe] = bVar24;\n          param_5[0xf] = bVar23;\n        }\n        else {\n          param_5[8] = bVar23;\n          param_5[9] = bVar24;\n          param_5[10] = bVar25;\n          param_5[0xb] = bVar26;\n          param_5[0xc] = bVar27;\n          param_5[0xd] = bVar18;\n          param_5[0xe] = bVar17;\n          param_5[0xf] = SUB81(dVar4,0);\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 0x10;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }" if (parenthesized_expression "((int)param_2[2] == 1)" ( (binary_expression "(int)param_2[2] == 1" (cast_expression "(int)param_2[2]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n      if ((long)param_3 < 1) {\n        return;\n      }\n      uVar34 = 0;\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        dVar4 = (double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                (double)param_2[0xd] + (double)param_2[3];\n        bVar18 = (byte)((ulong)dVar4 >> 8);\n        bVar23 = (byte)((ulong)dVar4 >> 0x10);\n        bVar24 = (byte)((ulong)dVar4 >> 0x18);\n        bVar25 = (byte)((ulong)dVar4 >> 0x20);\n        bVar26 = (byte)((ulong)dVar4 >> 0x28);\n        bVar27 = (byte)((ulong)dVar4 >> 0x30);\n        bVar17 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = SUB81(dVar4,0);\n          param_5[1] = bVar18;\n          param_5[2] = bVar23;\n          param_5[3] = bVar24;\n          param_5[4] = bVar25;\n          param_5[5] = bVar26;\n          param_5[6] = bVar27;\n          param_5[7] = bVar17;\n        }\n        else {\n          *param_5 = bVar17;\n          param_5[1] = bVar27;\n          param_5[2] = bVar26;\n          param_5[3] = bVar25;\n          param_5[4] = bVar24;\n          param_5[5] = bVar23;\n          param_5[6] = bVar18;\n          param_5[7] = SUB81(dVar4,0);\n        }\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        dVar4 = (double)fVar37 * (double)param_2[0xd] + (double)param_2[3];\n        bVar17 = (byte)((ulong)dVar4 >> 8);\n        bVar18 = (byte)((ulong)dVar4 >> 0x10);\n        bVar27 = (byte)((ulong)dVar4 >> 0x18);\n        bVar26 = (byte)((ulong)dVar4 >> 0x20);\n        bVar25 = (byte)((ulong)dVar4 >> 0x28);\n        bVar24 = (byte)((ulong)dVar4 >> 0x30);\n        bVar23 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          param_5[8] = SUB81(dVar4,0);\n          param_5[9] = bVar17;\n          param_5[10] = bVar18;\n          param_5[0xb] = bVar27;\n          param_5[0xc] = bVar26;\n          param_5[0xd] = bVar25;\n          param_5[0xe] = bVar24;\n          param_5[0xf] = bVar23;\n        }\n        else {\n          param_5[8] = bVar23;\n          param_5[9] = bVar24;\n          param_5[10] = bVar25;\n          param_5[0xb] = bVar26;\n          param_5[0xc] = bVar27;\n          param_5[0xd] = bVar18;\n          param_5[0xe] = bVar17;\n          param_5[0xf] = SUB81(dVar4,0);\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 0x10;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }" { (if_statement "if ((long)param_3 < 1) {\n        return;\n      }" if (parenthesized_expression "((long)param_3 < 1)" ( (binary_expression "(long)param_3 < 1" (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "uVar34 = 0;" (assignment_expression "uVar34 = 0" identifier = number_literal) ;) (do_statement "do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        dVar4 = (double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                (double)param_2[0xd] + (double)param_2[3];\n        bVar18 = (byte)((ulong)dVar4 >> 8);\n        bVar23 = (byte)((ulong)dVar4 >> 0x10);\n        bVar24 = (byte)((ulong)dVar4 >> 0x18);\n        bVar25 = (byte)((ulong)dVar4 >> 0x20);\n        bVar26 = (byte)((ulong)dVar4 >> 0x28);\n        bVar27 = (byte)((ulong)dVar4 >> 0x30);\n        bVar17 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = SUB81(dVar4,0);\n          param_5[1] = bVar18;\n          param_5[2] = bVar23;\n          param_5[3] = bVar24;\n          param_5[4] = bVar25;\n          param_5[5] = bVar26;\n          param_5[6] = bVar27;\n          param_5[7] = bVar17;\n        }\n        else {\n          *param_5 = bVar17;\n          param_5[1] = bVar27;\n          param_5[2] = bVar26;\n          param_5[3] = bVar25;\n          param_5[4] = bVar24;\n          param_5[5] = bVar23;\n          param_5[6] = bVar18;\n          param_5[7] = SUB81(dVar4,0);\n        }\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        dVar4 = (double)fVar37 * (double)param_2[0xd] + (double)param_2[3];\n        bVar17 = (byte)((ulong)dVar4 >> 8);\n        bVar18 = (byte)((ulong)dVar4 >> 0x10);\n        bVar27 = (byte)((ulong)dVar4 >> 0x18);\n        bVar26 = (byte)((ulong)dVar4 >> 0x20);\n        bVar25 = (byte)((ulong)dVar4 >> 0x28);\n        bVar24 = (byte)((ulong)dVar4 >> 0x30);\n        bVar23 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          param_5[8] = SUB81(dVar4,0);\n          param_5[9] = bVar17;\n          param_5[10] = bVar18;\n          param_5[0xb] = bVar27;\n          param_5[0xc] = bVar26;\n          param_5[0xd] = bVar25;\n          param_5[0xe] = bVar24;\n          param_5[0xf] = bVar23;\n        }\n        else {\n          param_5[8] = bVar23;\n          param_5[9] = bVar24;\n          param_5[10] = bVar25;\n          param_5[0xb] = bVar26;\n          param_5[0xc] = bVar27;\n          param_5[0xd] = bVar18;\n          param_5[0xe] = bVar17;\n          param_5[0xf] = SUB81(dVar4,0);\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 0x10;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);" do (compound_statement "{\n        lVar32 = *(long *)(param_1 + 0x360);\n        dVar4 = (double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                (double)param_2[0xd] + (double)param_2[3];\n        bVar18 = (byte)((ulong)dVar4 >> 8);\n        bVar23 = (byte)((ulong)dVar4 >> 0x10);\n        bVar24 = (byte)((ulong)dVar4 >> 0x18);\n        bVar25 = (byte)((ulong)dVar4 >> 0x20);\n        bVar26 = (byte)((ulong)dVar4 >> 0x28);\n        bVar27 = (byte)((ulong)dVar4 >> 0x30);\n        bVar17 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = SUB81(dVar4,0);\n          param_5[1] = bVar18;\n          param_5[2] = bVar23;\n          param_5[3] = bVar24;\n          param_5[4] = bVar25;\n          param_5[5] = bVar26;\n          param_5[6] = bVar27;\n          param_5[7] = bVar17;\n        }\n        else {\n          *param_5 = bVar17;\n          param_5[1] = bVar27;\n          param_5[2] = bVar26;\n          param_5[3] = bVar25;\n          param_5[4] = bVar24;\n          param_5[5] = bVar23;\n          param_5[6] = bVar18;\n          param_5[7] = SUB81(dVar4,0);\n        }\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        dVar4 = (double)fVar37 * (double)param_2[0xd] + (double)param_2[3];\n        bVar17 = (byte)((ulong)dVar4 >> 8);\n        bVar18 = (byte)((ulong)dVar4 >> 0x10);\n        bVar27 = (byte)((ulong)dVar4 >> 0x18);\n        bVar26 = (byte)((ulong)dVar4 >> 0x20);\n        bVar25 = (byte)((ulong)dVar4 >> 0x28);\n        bVar24 = (byte)((ulong)dVar4 >> 0x30);\n        bVar23 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          param_5[8] = SUB81(dVar4,0);\n          param_5[9] = bVar17;\n          param_5[10] = bVar18;\n          param_5[0xb] = bVar27;\n          param_5[0xc] = bVar26;\n          param_5[0xd] = bVar25;\n          param_5[0xe] = bVar24;\n          param_5[0xf] = bVar23;\n        }\n        else {\n          param_5[8] = bVar23;\n          param_5[9] = bVar24;\n          param_5[10] = bVar25;\n          param_5[0xb] = bVar26;\n          param_5[0xc] = bVar27;\n          param_5[0xd] = bVar18;\n          param_5[0xe] = bVar17;\n          param_5[0xf] = SUB81(dVar4,0);\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 0x10;\n        uVar34 = uVar34 + 1;\n      }" { (expression_statement "lVar32 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar32 = *(long *)(param_1 + 0x360)" identifier = (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "dVar4 = (double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                (double)param_2[0xd] + (double)param_2[3];" (assignment_expression "dVar4 = (double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                (double)param_2[0xd] + (double)param_2[3]" identifier = (binary_expression "(double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                (double)param_2[0xd] + (double)param_2[3]" (binary_expression "(double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                (double)param_2[0xd]" (cast_expression "(double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4))" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4))" ( (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x18) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x18) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x18) * 4" (pointer_expression "*(long *)(lVar32 + 0x18)" * (cast_expression "(long *)(lVar32 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x18)" ( (binary_expression "lVar32 + 0x18" identifier + number_literal) )))) * number_literal)) ))))) + (binary_expression "fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 8) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 8) * 4" identifier + (binary_expression "*(long *)(lVar32 + 8) * 4" (pointer_expression "*(long *)(lVar32 + 8)" * (cast_expression "(long *)(lVar32 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 8)" ( (binary_expression "lVar32 + 8" identifier + number_literal) )))) * number_literal)) )))))) + (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x28) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x28) * 4" (pointer_expression "*(long *)(lVar32 + 0x28)" * (cast_expression "(long *)(lVar32 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x28)" ( (binary_expression "lVar32 + 0x28" identifier + number_literal) )))) * number_literal)) )))))) ))) * (cast_expression "(double)param_2[0xd]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "param_2[0xd]" identifier [ number_literal ]))) + (cast_expression "(double)param_2[3]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "param_2[3]" identifier [ number_literal ])))) ;) (expression_statement "bVar18 = (byte)((ulong)dVar4 >> 8);" (assignment_expression "bVar18 = (byte)((ulong)dVar4 >> 8)" identifier = (call_expression "(byte)((ulong)dVar4 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulong)dVar4 >> 8)" ( (binary_expression "(ulong)dVar4 >> 8" (cast_expression "(ulong)dVar4" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar23 = (byte)((ulong)dVar4 >> 0x10);" (assignment_expression "bVar23 = (byte)((ulong)dVar4 >> 0x10)" identifier = (call_expression "(byte)((ulong)dVar4 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulong)dVar4 >> 0x10)" ( (binary_expression "(ulong)dVar4 >> 0x10" (cast_expression "(ulong)dVar4" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar24 = (byte)((ulong)dVar4 >> 0x18);" (assignment_expression "bVar24 = (byte)((ulong)dVar4 >> 0x18)" identifier = (call_expression "(byte)((ulong)dVar4 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulong)dVar4 >> 0x18)" ( (binary_expression "(ulong)dVar4 >> 0x18" (cast_expression "(ulong)dVar4" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar25 = (byte)((ulong)dVar4 >> 0x20);" (assignment_expression "bVar25 = (byte)((ulong)dVar4 >> 0x20)" identifier = (call_expression "(byte)((ulong)dVar4 >> 0x20)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulong)dVar4 >> 0x20)" ( (binary_expression "(ulong)dVar4 >> 0x20" (cast_expression "(ulong)dVar4" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar26 = (byte)((ulong)dVar4 >> 0x28);" (assignment_expression "bVar26 = (byte)((ulong)dVar4 >> 0x28)" identifier = (call_expression "(byte)((ulong)dVar4 >> 0x28)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulong)dVar4 >> 0x28)" ( (binary_expression "(ulong)dVar4 >> 0x28" (cast_expression "(ulong)dVar4" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar27 = (byte)((ulong)dVar4 >> 0x30);" (assignment_expression "bVar27 = (byte)((ulong)dVar4 >> 0x30)" identifier = (call_expression "(byte)((ulong)dVar4 >> 0x30)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulong)dVar4 >> 0x30)" ( (binary_expression "(ulong)dVar4 >> 0x30" (cast_expression "(ulong)dVar4" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar17 = (byte)((ulong)dVar4 >> 0x38);" (assignment_expression "bVar17 = (byte)((ulong)dVar4 >> 0x38)" identifier = (call_expression "(byte)((ulong)dVar4 >> 0x38)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulong)dVar4 >> 0x38)" ( (binary_expression "(ulong)dVar4 >> 0x38" (cast_expression "(ulong)dVar4" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if ((int)param_2[0xc] == 1) {\n          *param_5 = SUB81(dVar4,0);\n          param_5[1] = bVar18;\n          param_5[2] = bVar23;\n          param_5[3] = bVar24;\n          param_5[4] = bVar25;\n          param_5[5] = bVar26;\n          param_5[6] = bVar27;\n          param_5[7] = bVar17;\n        }\n        else {\n          *param_5 = bVar17;\n          param_5[1] = bVar27;\n          param_5[2] = bVar26;\n          param_5[3] = bVar25;\n          param_5[4] = bVar24;\n          param_5[5] = bVar23;\n          param_5[6] = bVar18;\n          param_5[7] = SUB81(dVar4,0);\n        }" if (parenthesized_expression "((int)param_2[0xc] == 1)" ( (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[0xc]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n          *param_5 = SUB81(dVar4,0);\n          param_5[1] = bVar18;\n          param_5[2] = bVar23;\n          param_5[3] = bVar24;\n          param_5[4] = bVar25;\n          param_5[5] = bVar26;\n          param_5[6] = bVar27;\n          param_5[7] = bVar17;\n        }" { (expression_statement "*param_5 = SUB81(dVar4,0);" (assignment_expression "*param_5 = SUB81(dVar4,0)" (pointer_expression "*param_5" * identifier) = (call_expression "SUB81(dVar4,0)" identifier (argument_list "(dVar4,0)" ( identifier , number_literal )))) ;) (expression_statement "param_5[1] = bVar18;" (assignment_expression "param_5[1] = bVar18" (subscript_expression "param_5[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[2] = bVar23;" (assignment_expression "param_5[2] = bVar23" (subscript_expression "param_5[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[3] = bVar24;" (assignment_expression "param_5[3] = bVar24" (subscript_expression "param_5[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[4] = bVar25;" (assignment_expression "param_5[4] = bVar25" (subscript_expression "param_5[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[5] = bVar26;" (assignment_expression "param_5[5] = bVar26" (subscript_expression "param_5[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[6] = bVar27;" (assignment_expression "param_5[6] = bVar27" (subscript_expression "param_5[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[7] = bVar17;" (assignment_expression "param_5[7] = bVar17" (subscript_expression "param_5[7]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n          *param_5 = bVar17;\n          param_5[1] = bVar27;\n          param_5[2] = bVar26;\n          param_5[3] = bVar25;\n          param_5[4] = bVar24;\n          param_5[5] = bVar23;\n          param_5[6] = bVar18;\n          param_5[7] = SUB81(dVar4,0);\n        }" else (compound_statement "{\n          *param_5 = bVar17;\n          param_5[1] = bVar27;\n          param_5[2] = bVar26;\n          param_5[3] = bVar25;\n          param_5[4] = bVar24;\n          param_5[5] = bVar23;\n          param_5[6] = bVar18;\n          param_5[7] = SUB81(dVar4,0);\n        }" { (expression_statement "*param_5 = bVar17;" (assignment_expression "*param_5 = bVar17" (pointer_expression "*param_5" * identifier) = identifier) ;) (expression_statement "param_5[1] = bVar27;" (assignment_expression "param_5[1] = bVar27" (subscript_expression "param_5[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[2] = bVar26;" (assignment_expression "param_5[2] = bVar26" (subscript_expression "param_5[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[3] = bVar25;" (assignment_expression "param_5[3] = bVar25" (subscript_expression "param_5[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[4] = bVar24;" (assignment_expression "param_5[4] = bVar24" (subscript_expression "param_5[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[5] = bVar23;" (assignment_expression "param_5[5] = bVar23" (subscript_expression "param_5[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[6] = bVar18;" (assignment_expression "param_5[6] = bVar18" (subscript_expression "param_5[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[7] = SUB81(dVar4,0);" (assignment_expression "param_5[7] = SUB81(dVar4,0)" (subscript_expression "param_5[7]" identifier [ number_literal ]) = (call_expression "SUB81(dVar4,0)" identifier (argument_list "(dVar4,0)" ( identifier , number_literal )))) ;) }))) (expression_statement "fVar37 = fVar36;" (assignment_expression "fVar37 = fVar36" identifier = identifier) ;) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }" if (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0)" ( (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44)" * (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x44)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x44" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }" { (expression_statement "fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);" (assignment_expression "fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" identifier = (pointer_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (binary_expression "param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" identifier + (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48)" * (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x48)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x48" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) })) (expression_statement "dVar4 = (double)fVar37 * (double)param_2[0xd] + (double)param_2[3];" (assignment_expression "dVar4 = (double)fVar37 * (double)param_2[0xd] + (double)param_2[3]" identifier = (binary_expression "(double)fVar37 * (double)param_2[0xd] + (double)param_2[3]" (binary_expression "(double)fVar37 * (double)param_2[0xd]" (cast_expression "(double)fVar37" ( (type_descriptor "double" primitive_type) ) identifier) * (cast_expression "(double)param_2[0xd]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "param_2[0xd]" identifier [ number_literal ]))) + (cast_expression "(double)param_2[3]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "param_2[3]" identifier [ number_literal ])))) ;) (expression_statement "bVar17 = (byte)((ulong)dVar4 >> 8);" (assignment_expression "bVar17 = (byte)((ulong)dVar4 >> 8)" identifier = (call_expression "(byte)((ulong)dVar4 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulong)dVar4 >> 8)" ( (binary_expression "(ulong)dVar4 >> 8" (cast_expression "(ulong)dVar4" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar18 = (byte)((ulong)dVar4 >> 0x10);" (assignment_expression "bVar18 = (byte)((ulong)dVar4 >> 0x10)" identifier = (call_expression "(byte)((ulong)dVar4 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulong)dVar4 >> 0x10)" ( (binary_expression "(ulong)dVar4 >> 0x10" (cast_expression "(ulong)dVar4" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar27 = (byte)((ulong)dVar4 >> 0x18);" (assignment_expression "bVar27 = (byte)((ulong)dVar4 >> 0x18)" identifier = (call_expression "(byte)((ulong)dVar4 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulong)dVar4 >> 0x18)" ( (binary_expression "(ulong)dVar4 >> 0x18" (cast_expression "(ulong)dVar4" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar26 = (byte)((ulong)dVar4 >> 0x20);" (assignment_expression "bVar26 = (byte)((ulong)dVar4 >> 0x20)" identifier = (call_expression "(byte)((ulong)dVar4 >> 0x20)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulong)dVar4 >> 0x20)" ( (binary_expression "(ulong)dVar4 >> 0x20" (cast_expression "(ulong)dVar4" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar25 = (byte)((ulong)dVar4 >> 0x28);" (assignment_expression "bVar25 = (byte)((ulong)dVar4 >> 0x28)" identifier = (call_expression "(byte)((ulong)dVar4 >> 0x28)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulong)dVar4 >> 0x28)" ( (binary_expression "(ulong)dVar4 >> 0x28" (cast_expression "(ulong)dVar4" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar24 = (byte)((ulong)dVar4 >> 0x30);" (assignment_expression "bVar24 = (byte)((ulong)dVar4 >> 0x30)" identifier = (call_expression "(byte)((ulong)dVar4 >> 0x30)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulong)dVar4 >> 0x30)" ( (binary_expression "(ulong)dVar4 >> 0x30" (cast_expression "(ulong)dVar4" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar23 = (byte)((ulong)dVar4 >> 0x38);" (assignment_expression "bVar23 = (byte)((ulong)dVar4 >> 0x38)" identifier = (call_expression "(byte)((ulong)dVar4 >> 0x38)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulong)dVar4 >> 0x38)" ( (binary_expression "(ulong)dVar4 >> 0x38" (cast_expression "(ulong)dVar4" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if ((int)param_2[0xc] == 1) {\n          param_5[8] = SUB81(dVar4,0);\n          param_5[9] = bVar17;\n          param_5[10] = bVar18;\n          param_5[0xb] = bVar27;\n          param_5[0xc] = bVar26;\n          param_5[0xd] = bVar25;\n          param_5[0xe] = bVar24;\n          param_5[0xf] = bVar23;\n        }\n        else {\n          param_5[8] = bVar23;\n          param_5[9] = bVar24;\n          param_5[10] = bVar25;\n          param_5[0xb] = bVar26;\n          param_5[0xc] = bVar27;\n          param_5[0xd] = bVar18;\n          param_5[0xe] = bVar17;\n          param_5[0xf] = SUB81(dVar4,0);\n        }" if (parenthesized_expression "((int)param_2[0xc] == 1)" ( (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[0xc]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n          param_5[8] = SUB81(dVar4,0);\n          param_5[9] = bVar17;\n          param_5[10] = bVar18;\n          param_5[0xb] = bVar27;\n          param_5[0xc] = bVar26;\n          param_5[0xd] = bVar25;\n          param_5[0xe] = bVar24;\n          param_5[0xf] = bVar23;\n        }" { (expression_statement "param_5[8] = SUB81(dVar4,0);" (assignment_expression "param_5[8] = SUB81(dVar4,0)" (subscript_expression "param_5[8]" identifier [ number_literal ]) = (call_expression "SUB81(dVar4,0)" identifier (argument_list "(dVar4,0)" ( identifier , number_literal )))) ;) (expression_statement "param_5[9] = bVar17;" (assignment_expression "param_5[9] = bVar17" (subscript_expression "param_5[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[10] = bVar18;" (assignment_expression "param_5[10] = bVar18" (subscript_expression "param_5[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[0xb] = bVar27;" (assignment_expression "param_5[0xb] = bVar27" (subscript_expression "param_5[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[0xc] = bVar26;" (assignment_expression "param_5[0xc] = bVar26" (subscript_expression "param_5[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[0xd] = bVar25;" (assignment_expression "param_5[0xd] = bVar25" (subscript_expression "param_5[0xd]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[0xe] = bVar24;" (assignment_expression "param_5[0xe] = bVar24" (subscript_expression "param_5[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[0xf] = bVar23;" (assignment_expression "param_5[0xf] = bVar23" (subscript_expression "param_5[0xf]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n          param_5[8] = bVar23;\n          param_5[9] = bVar24;\n          param_5[10] = bVar25;\n          param_5[0xb] = bVar26;\n          param_5[0xc] = bVar27;\n          param_5[0xd] = bVar18;\n          param_5[0xe] = bVar17;\n          param_5[0xf] = SUB81(dVar4,0);\n        }" else (compound_statement "{\n          param_5[8] = bVar23;\n          param_5[9] = bVar24;\n          param_5[10] = bVar25;\n          param_5[0xb] = bVar26;\n          param_5[0xc] = bVar27;\n          param_5[0xd] = bVar18;\n          param_5[0xe] = bVar17;\n          param_5[0xf] = SUB81(dVar4,0);\n        }" { (expression_statement "param_5[8] = bVar23;" (assignment_expression "param_5[8] = bVar23" (subscript_expression "param_5[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[9] = bVar24;" (assignment_expression "param_5[9] = bVar24" (subscript_expression "param_5[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[10] = bVar25;" (assignment_expression "param_5[10] = bVar25" (subscript_expression "param_5[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[0xb] = bVar26;" (assignment_expression "param_5[0xb] = bVar26" (subscript_expression "param_5[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[0xc] = bVar27;" (assignment_expression "param_5[0xc] = bVar27" (subscript_expression "param_5[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[0xd] = bVar18;" (assignment_expression "param_5[0xd] = bVar18" (subscript_expression "param_5[0xd]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[0xe] = bVar17;" (assignment_expression "param_5[0xe] = bVar17" (subscript_expression "param_5[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[0xf] = SUB81(dVar4,0);" (assignment_expression "param_5[0xf] = SUB81(dVar4,0)" (subscript_expression "param_5[0xf]" identifier [ number_literal ]) = (call_expression "SUB81(dVar4,0)" identifier (argument_list "(dVar4,0)" ( identifier , number_literal )))) ;) }))) (expression_statement "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4" identifier = (binary_expression "param_4 + *(long *)(param_1 + 0x340) * 4" identifier + (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" * (cast_expression "(long *)(param_1 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "param_5 = param_5 + param_2[6] + 0x10;" (assignment_expression "param_5 = param_5 + param_2[6] + 0x10" identifier = (binary_expression "param_5 + param_2[6] + 0x10" (binary_expression "param_5 + param_2[6]" identifier + (subscript_expression "param_2[6]" identifier [ number_literal ])) + number_literal)) ;) (expression_statement "uVar34 = uVar34 + 1;" (assignment_expression "uVar34 = uVar34 + 1" identifier = (binary_expression "uVar34 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar34 != param_3)" ( (binary_expression "uVar34 != param_3" identifier != identifier) )) ;) (return_statement "return;" return ;) })) }))) (if_statement "if (0x40 < uVar34) {\n    uVar34 = 0;\n  }" if (parenthesized_expression "(0x40 < uVar34)" ( (binary_expression "0x40 < uVar34" number_literal < identifier) )) (compound_statement "{\n    uVar34 = 0;\n  }" { (expression_statement "uVar34 = 0;" (assignment_expression "uVar34 = 0" identifier = number_literal) ;) })) (expression_statement "uVar33 = (2L << ((char)uVar34 - 1U & 0x3f)) - 1;" (assignment_expression "uVar33 = (2L << ((char)uVar34 - 1U & 0x3f)) - 1" identifier = (binary_expression "(2L << ((char)uVar34 - 1U & 0x3f)) - 1" (parenthesized_expression "(2L << ((char)uVar34 - 1U & 0x3f))" ( (binary_expression "2L << ((char)uVar34 - 1U & 0x3f)" number_literal << (parenthesized_expression "((char)uVar34 - 1U & 0x3f)" ( (binary_expression "(char)uVar34 - 1U & 0x3f" (binary_expression "(char)uVar34 - 1U" (cast_expression "(char)uVar34" ( (type_descriptor "char" primitive_type) ) identifier) - number_literal) & number_literal) ))) )) - number_literal)) ;) (labeled_statement "LAB_002734e9:\n  if (0 < (long)param_3) {\n    uVar34 = 0;\n    do {\n      lVar32 = *(long *)(param_1 + 0x360);\n      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n      if (NAN(fVar36)) {\n        uVar31 = 0;\n      }\n      else {\n        uVar31 = 0;\n        if (0.0 < fVar36) {\n          dVar5 = ((double)fVar36 * (double)uVar33) / dVar4;\n          uVar31 = 0xffffffffffffffff;\n          if (dVar5 < dVar9) {\n            dVar5 = dVar5 + dVar7;\n            if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }\n          }\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      fVar36 = _DAT_003fa400;\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) == 0) {\nLAB_002745f5:\n        dVar5 = ((double)fVar36 * (double)uVar33) / DAT_003f95f8;\n        uVar31 = 0xffffffffffffffff;\n        if (dVar5 < DAT_003fa3a0) {\n          dVar5 = dVar5 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar5) {\n            uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar31 = (ulong)dVar5;\n          }\n        }\n      }\n      else {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          uVar31 = 0;\n        }\n        else {\n          uVar31 = 0;\n          if (0.0 < fVar36) goto LAB_002745f5;\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n      param_5 = param_5 + param_2[6];\n      uVar34 = uVar34 + 1;\n    } while (param_3 != uVar34);\n  }" statement_identifier : (if_statement "if (0 < (long)param_3) {\n    uVar34 = 0;\n    do {\n      lVar32 = *(long *)(param_1 + 0x360);\n      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n      if (NAN(fVar36)) {\n        uVar31 = 0;\n      }\n      else {\n        uVar31 = 0;\n        if (0.0 < fVar36) {\n          dVar5 = ((double)fVar36 * (double)uVar33) / dVar4;\n          uVar31 = 0xffffffffffffffff;\n          if (dVar5 < dVar9) {\n            dVar5 = dVar5 + dVar7;\n            if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }\n          }\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      fVar36 = _DAT_003fa400;\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) == 0) {\nLAB_002745f5:\n        dVar5 = ((double)fVar36 * (double)uVar33) / DAT_003f95f8;\n        uVar31 = 0xffffffffffffffff;\n        if (dVar5 < DAT_003fa3a0) {\n          dVar5 = dVar5 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar5) {\n            uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar31 = (ulong)dVar5;\n          }\n        }\n      }\n      else {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          uVar31 = 0;\n        }\n        else {\n          uVar31 = 0;\n          if (0.0 < fVar36) goto LAB_002745f5;\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n      param_5 = param_5 + param_2[6];\n      uVar34 = uVar34 + 1;\n    } while (param_3 != uVar34);\n  }" if (parenthesized_expression "(0 < (long)param_3)" ( (binary_expression "0 < (long)param_3" number_literal < (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n    uVar34 = 0;\n    do {\n      lVar32 = *(long *)(param_1 + 0x360);\n      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n      if (NAN(fVar36)) {\n        uVar31 = 0;\n      }\n      else {\n        uVar31 = 0;\n        if (0.0 < fVar36) {\n          dVar5 = ((double)fVar36 * (double)uVar33) / dVar4;\n          uVar31 = 0xffffffffffffffff;\n          if (dVar5 < dVar9) {\n            dVar5 = dVar5 + dVar7;\n            if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }\n          }\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      fVar36 = _DAT_003fa400;\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) == 0) {\nLAB_002745f5:\n        dVar5 = ((double)fVar36 * (double)uVar33) / DAT_003f95f8;\n        uVar31 = 0xffffffffffffffff;\n        if (dVar5 < DAT_003fa3a0) {\n          dVar5 = dVar5 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar5) {\n            uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar31 = (ulong)dVar5;\n          }\n        }\n      }\n      else {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          uVar31 = 0;\n        }\n        else {\n          uVar31 = 0;\n          if (0.0 < fVar36) goto LAB_002745f5;\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n      param_5 = param_5 + param_2[6];\n      uVar34 = uVar34 + 1;\n    } while (param_3 != uVar34);\n  }" { (expression_statement "uVar34 = 0;" (assignment_expression "uVar34 = 0" identifier = number_literal) ;) (do_statement "do {\n      lVar32 = *(long *)(param_1 + 0x360);\n      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n      if (NAN(fVar36)) {\n        uVar31 = 0;\n      }\n      else {\n        uVar31 = 0;\n        if (0.0 < fVar36) {\n          dVar5 = ((double)fVar36 * (double)uVar33) / dVar4;\n          uVar31 = 0xffffffffffffffff;\n          if (dVar5 < dVar9) {\n            dVar5 = dVar5 + dVar7;\n            if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }\n          }\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      fVar36 = _DAT_003fa400;\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) == 0) {\nLAB_002745f5:\n        dVar5 = ((double)fVar36 * (double)uVar33) / DAT_003f95f8;\n        uVar31 = 0xffffffffffffffff;\n        if (dVar5 < DAT_003fa3a0) {\n          dVar5 = dVar5 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar5) {\n            uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar31 = (ulong)dVar5;\n          }\n        }\n      }\n      else {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          uVar31 = 0;\n        }\n        else {\n          uVar31 = 0;\n          if (0.0 < fVar36) goto LAB_002745f5;\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n      param_5 = param_5 + param_2[6];\n      uVar34 = uVar34 + 1;\n    } while (param_3 != uVar34);" do (compound_statement "{\n      lVar32 = *(long *)(param_1 + 0x360);\n      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n      if (NAN(fVar36)) {\n        uVar31 = 0;\n      }\n      else {\n        uVar31 = 0;\n        if (0.0 < fVar36) {\n          dVar5 = ((double)fVar36 * (double)uVar33) / dVar4;\n          uVar31 = 0xffffffffffffffff;\n          if (dVar5 < dVar9) {\n            dVar5 = dVar5 + dVar7;\n            if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }\n          }\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      fVar36 = _DAT_003fa400;\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) == 0) {\nLAB_002745f5:\n        dVar5 = ((double)fVar36 * (double)uVar33) / DAT_003f95f8;\n        uVar31 = 0xffffffffffffffff;\n        if (dVar5 < DAT_003fa3a0) {\n          dVar5 = dVar5 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar5) {\n            uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar31 = (ulong)dVar5;\n          }\n        }\n      }\n      else {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          uVar31 = 0;\n        }\n        else {\n          uVar31 = 0;\n          if (0.0 < fVar36) goto LAB_002745f5;\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n      param_5 = param_5 + param_2[6];\n      uVar34 = uVar34 + 1;\n    }" { (expression_statement "lVar32 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar32 = *(long *)(param_1 + 0x360)" identifier = (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);" (assignment_expression "fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" identifier = (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x18) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x18) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x18) * 4" (pointer_expression "*(long *)(lVar32 + 0x18)" * (cast_expression "(long *)(lVar32 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x18)" ( (binary_expression "lVar32 + 0x18" identifier + number_literal) )))) * number_literal)) ))))) + (binary_expression "fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 8) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 8) * 4" identifier + (binary_expression "*(long *)(lVar32 + 8) * 4" (pointer_expression "*(long *)(lVar32 + 8)" * (cast_expression "(long *)(lVar32 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 8)" ( (binary_expression "lVar32 + 8" identifier + number_literal) )))) * number_literal)) )))))) + (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x28) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x28) * 4" (pointer_expression "*(long *)(lVar32 + 0x28)" * (cast_expression "(long *)(lVar32 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x28)" ( (binary_expression "lVar32 + 0x28" identifier + number_literal) )))) * number_literal)) ))))))) ;) (if_statement "if (NAN(fVar36)) {\n        uVar31 = 0;\n      }\n      else {\n        uVar31 = 0;\n        if (0.0 < fVar36) {\n          dVar5 = ((double)fVar36 * (double)uVar33) / dVar4;\n          uVar31 = 0xffffffffffffffff;\n          if (dVar5 < dVar9) {\n            dVar5 = dVar5 + dVar7;\n            if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }\n          }\n        }\n      }" if (parenthesized_expression "(NAN(fVar36))" ( (call_expression "NAN(fVar36)" identifier (argument_list "(fVar36)" ( identifier ))) )) (compound_statement "{\n        uVar31 = 0;\n      }" { (expression_statement "uVar31 = 0;" (assignment_expression "uVar31 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        uVar31 = 0;\n        if (0.0 < fVar36) {\n          dVar5 = ((double)fVar36 * (double)uVar33) / dVar4;\n          uVar31 = 0xffffffffffffffff;\n          if (dVar5 < dVar9) {\n            dVar5 = dVar5 + dVar7;\n            if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }\n          }\n        }\n      }" else (compound_statement "{\n        uVar31 = 0;\n        if (0.0 < fVar36) {\n          dVar5 = ((double)fVar36 * (double)uVar33) / dVar4;\n          uVar31 = 0xffffffffffffffff;\n          if (dVar5 < dVar9) {\n            dVar5 = dVar5 + dVar7;\n            if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }\n          }\n        }\n      }" { (expression_statement "uVar31 = 0;" (assignment_expression "uVar31 = 0" identifier = number_literal) ;) (if_statement "if (0.0 < fVar36) {\n          dVar5 = ((double)fVar36 * (double)uVar33) / dVar4;\n          uVar31 = 0xffffffffffffffff;\n          if (dVar5 < dVar9) {\n            dVar5 = dVar5 + dVar7;\n            if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }\n          }\n        }" if (parenthesized_expression "(0.0 < fVar36)" ( (binary_expression "0.0 < fVar36" number_literal < identifier) )) (compound_statement "{\n          dVar5 = ((double)fVar36 * (double)uVar33) / dVar4;\n          uVar31 = 0xffffffffffffffff;\n          if (dVar5 < dVar9) {\n            dVar5 = dVar5 + dVar7;\n            if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }\n          }\n        }" { (expression_statement "dVar5 = ((double)fVar36 * (double)uVar33) / dVar4;" (assignment_expression "dVar5 = ((double)fVar36 * (double)uVar33) / dVar4" identifier = (binary_expression "((double)fVar36 * (double)uVar33) / dVar4" (parenthesized_expression "((double)fVar36 * (double)uVar33)" ( (binary_expression "(double)fVar36 * (double)uVar33" (cast_expression "(double)fVar36" ( (type_descriptor "double" primitive_type) ) identifier) * (cast_expression "(double)uVar33" ( (type_descriptor "double" primitive_type) ) identifier)) )) / identifier)) ;) (expression_statement "uVar31 = 0xffffffffffffffff;" (assignment_expression "uVar31 = 0xffffffffffffffff" identifier = number_literal) ;) (if_statement "if (dVar5 < dVar9) {\n            dVar5 = dVar5 + dVar7;\n            if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }\n          }" if (parenthesized_expression "(dVar5 < dVar9)" ( (binary_expression "dVar5 < dVar9" identifier < identifier) )) (compound_statement "{\n            dVar5 = dVar5 + dVar7;\n            if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }\n          }" { (expression_statement "dVar5 = dVar5 + dVar7;" (assignment_expression "dVar5 = dVar5 + dVar7" identifier = (binary_expression "dVar5 + dVar7" identifier + identifier)) ;) (if_statement "if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }" if (parenthesized_expression "(dVar8 <= dVar5)" ( (binary_expression "dVar8 <= dVar5" identifier <= identifier) )) (compound_statement "{\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }" { (expression_statement "uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;" (assignment_expression "uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000" identifier = (binary_expression "(long)(dVar5 - dVar8) ^ 0x8000000000000000" (cast_expression "(long)(dVar5 - dVar8)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(dVar5 - dVar8)" ( (binary_expression "dVar5 - dVar8" identifier - identifier) ))) ^ number_literal)) ;) }) (else_clause "else {\n              uVar31 = (ulong)dVar5;\n            }" else (compound_statement "{\n              uVar31 = (ulong)dVar5;\n            }" { (expression_statement "uVar31 = (ulong)dVar5;" (assignment_expression "uVar31 = (ulong)dVar5" identifier = (cast_expression "(ulong)dVar5" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) }))) })) })) }))) (if_statement "if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }" if (parenthesized_expression "(param_2[0xf] == 0)" ( (binary_expression "param_2[0xf] == 0" (subscript_expression "param_2[0xf]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        param_2[0xf] = 8;\n      }" { (expression_statement "param_2[0xf] = 8;" (assignment_expression "param_2[0xf] = 8" (subscript_expression "param_2[0xf]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "uVar29 = *param_2;" (assignment_expression "uVar29 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }" if (parenthesized_expression "(0 < (long)uVar29)" ( (binary_expression "0 < (long)uVar29" number_literal < (cast_expression "(long)uVar29" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }" { (expression_statement "uVar22 = param_2[0xf];" (assignment_expression "uVar22 = param_2[0xf]" identifier = (subscript_expression "param_2[0xf]" identifier [ number_literal ])) ;) (do_statement "do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);" do (compound_statement "{\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        }" { (expression_statement "uVar21 = uVar29;" (assignment_expression "uVar21 = uVar29" identifier = identifier) ;) (if_statement "if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }" if (parenthesized_expression "(uVar22 <= uVar29)" ( (binary_expression "uVar22 <= uVar29" identifier <= identifier) )) (compound_statement "{\n            uVar21 = uVar22;\n          }" { (expression_statement "uVar21 = uVar22;" (assignment_expression "uVar21 = uVar22" identifier = identifier) ;) })) (expression_statement "uVar30 = uVar29 - uVar21;" (assignment_expression "uVar30 = uVar29 - uVar21" identifier = (binary_expression "uVar29 - uVar21" identifier - identifier)) ;) (expression_statement "uVar29 = 0;" (assignment_expression "uVar29 = 0" identifier = number_literal) ;) (if_statement "if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }" if (parenthesized_expression "(-1 < (long)uVar30)" ( (binary_expression "-1 < (long)uVar30" number_literal < (cast_expression "(long)uVar30" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n            uVar29 = uVar30;\n          }" { (expression_statement "uVar29 = uVar30;" (assignment_expression "uVar29 = uVar30" identifier = identifier) ;) })) (if_statement "if (uVar22 == 8) {\n            *param_5 = 0;\n          }" if (parenthesized_expression "(uVar22 == 8)" ( (binary_expression "uVar22 == 8" identifier == number_literal) )) (compound_statement "{\n            *param_5 = 0;\n          }" { (expression_statement "*param_5 = 0;" (assignment_expression "*param_5 = 0" (pointer_expression "*param_5" * identifier) = number_literal) ;) })) (expression_statement "uVar22 = uVar22 - uVar21;" (assignment_expression "uVar22 = uVar22 - uVar21" identifier = (binary_expression "uVar22 - uVar21" identifier - identifier)) ;) (expression_statement "*param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));" (assignment_expression "*param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f))" (pointer_expression "*param_5" * identifier) = (binary_expression "*param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f))" (pointer_expression "*param_5" * identifier) | (call_expression "(byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f))" ( (binary_expression "(~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f)" (parenthesized_expression "(~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f))" ( (binary_expression "~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)" (unary_expression "~(-1L << ((byte)uVar21 & 0x3f))" ~ (parenthesized_expression "(-1L << ((byte)uVar21 & 0x3f))" ( (binary_expression "-1L << ((byte)uVar21 & 0x3f)" number_literal << (parenthesized_expression "((byte)uVar21 & 0x3f)" ( (binary_expression "(byte)uVar21 & 0x3f" (cast_expression "(byte)uVar21" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & (binary_expression "uVar31 >> ((byte)uVar29 & 0x3f)" identifier >> (parenthesized_expression "((byte)uVar29 & 0x3f)" ( (binary_expression "(byte)uVar29 & 0x3f" (cast_expression "(byte)uVar29" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) )) << (parenthesized_expression "((byte)uVar22 & 0x3f)" ( (binary_expression "(byte)uVar22 & 0x3f" (cast_expression "(byte)uVar22" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))))) ;) (if_statement "if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }" if (parenthesized_expression "(uVar22 == 0)" ( (binary_expression "uVar22 == 0" identifier == number_literal) )) (compound_statement "{\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }" { (expression_statement "param_5 = param_5 + 1;" (assignment_expression "param_5 = param_5 + 1" identifier = (binary_expression "param_5 + 1" identifier + number_literal)) ;) (expression_statement "uVar22 = 8;" (assignment_expression "uVar22 = 8" identifier = number_literal) ;) })) }) while (parenthesized_expression "(0 < (long)uVar30)" ( (binary_expression "0 < (long)uVar30" number_literal < (cast_expression "(long)uVar30" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) ;) (expression_statement "param_2[0xf] = uVar22;" (assignment_expression "param_2[0xf] = uVar22" (subscript_expression "param_2[0xf]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "fVar36 = _DAT_003fa400;" (assignment_expression "fVar36 = _DAT_003fa400" identifier = identifier) ;) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) == 0) {\nLAB_002745f5:\n        dVar5 = ((double)fVar36 * (double)uVar33) / DAT_003f95f8;\n        uVar31 = 0xffffffffffffffff;\n        if (dVar5 < DAT_003fa3a0) {\n          dVar5 = dVar5 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar5) {\n            uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar31 = (ulong)dVar5;\n          }\n        }\n      }\n      else {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          uVar31 = 0;\n        }\n        else {\n          uVar31 = 0;\n          if (0.0 < fVar36) goto LAB_002745f5;\n        }\n      }" if (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x44) == 0)" ( (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44) == 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44)" * (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x44)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x44" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) == number_literal) )) (compound_statement "{\nLAB_002745f5:\n        dVar5 = ((double)fVar36 * (double)uVar33) / DAT_003f95f8;\n        uVar31 = 0xffffffffffffffff;\n        if (dVar5 < DAT_003fa3a0) {\n          dVar5 = dVar5 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar5) {\n            uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar31 = (ulong)dVar5;\n          }\n        }\n      }" { (labeled_statement "LAB_002745f5:\n        dVar5 = ((double)fVar36 * (double)uVar33) / DAT_003f95f8;" statement_identifier : (expression_statement "dVar5 = ((double)fVar36 * (double)uVar33) / DAT_003f95f8;" (assignment_expression "dVar5 = ((double)fVar36 * (double)uVar33) / DAT_003f95f8" identifier = (binary_expression "((double)fVar36 * (double)uVar33) / DAT_003f95f8" (parenthesized_expression "((double)fVar36 * (double)uVar33)" ( (binary_expression "(double)fVar36 * (double)uVar33" (cast_expression "(double)fVar36" ( (type_descriptor "double" primitive_type) ) identifier) * (cast_expression "(double)uVar33" ( (type_descriptor "double" primitive_type) ) identifier)) )) / identifier)) ;)) (expression_statement "uVar31 = 0xffffffffffffffff;" (assignment_expression "uVar31 = 0xffffffffffffffff" identifier = number_literal) ;) (if_statement "if (dVar5 < DAT_003fa3a0) {\n          dVar5 = dVar5 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar5) {\n            uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar31 = (ulong)dVar5;\n          }\n        }" if (parenthesized_expression "(dVar5 < DAT_003fa3a0)" ( (binary_expression "dVar5 < DAT_003fa3a0" identifier < identifier) )) (compound_statement "{\n          dVar5 = dVar5 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar5) {\n            uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar31 = (ulong)dVar5;\n          }\n        }" { (expression_statement "dVar5 = dVar5 + DAT_003f9c28;" (assignment_expression "dVar5 = dVar5 + DAT_003f9c28" identifier = (binary_expression "dVar5 + DAT_003f9c28" identifier + identifier)) ;) (if_statement "if (DAT_003f9c40 <= dVar5) {\n            uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar31 = (ulong)dVar5;\n          }" if (parenthesized_expression "(DAT_003f9c40 <= dVar5)" ( (binary_expression "DAT_003f9c40 <= dVar5" identifier <= identifier) )) (compound_statement "{\n            uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;\n          }" { (expression_statement "uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;" (assignment_expression "uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000" identifier = (binary_expression "(long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000" (cast_expression "(long)(dVar5 - DAT_003f9c40)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(dVar5 - DAT_003f9c40)" ( (binary_expression "dVar5 - DAT_003f9c40" identifier - identifier) ))) ^ number_literal)) ;) }) (else_clause "else {\n            uVar31 = (ulong)dVar5;\n          }" else (compound_statement "{\n            uVar31 = (ulong)dVar5;\n          }" { (expression_statement "uVar31 = (ulong)dVar5;" (assignment_expression "uVar31 = (ulong)dVar5" identifier = (cast_expression "(ulong)dVar5" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) }))) })) }) (else_clause "else {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          uVar31 = 0;\n        }\n        else {\n          uVar31 = 0;\n          if (0.0 < fVar36) goto LAB_002745f5;\n        }\n      }" else (compound_statement "{\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          uVar31 = 0;\n        }\n        else {\n          uVar31 = 0;\n          if (0.0 < fVar36) goto LAB_002745f5;\n        }\n      }" { (expression_statement "fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);" (assignment_expression "fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" identifier = (pointer_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (binary_expression "param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" identifier + (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48)" * (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x48)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x48" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (NAN(fVar36)) {\n          uVar31 = 0;\n        }\n        else {\n          uVar31 = 0;\n          if (0.0 < fVar36) goto LAB_002745f5;\n        }" if (parenthesized_expression "(NAN(fVar36))" ( (call_expression "NAN(fVar36)" identifier (argument_list "(fVar36)" ( identifier ))) )) (compound_statement "{\n          uVar31 = 0;\n        }" { (expression_statement "uVar31 = 0;" (assignment_expression "uVar31 = 0" identifier = number_literal) ;) }) (else_clause "else {\n          uVar31 = 0;\n          if (0.0 < fVar36) goto LAB_002745f5;\n        }" else (compound_statement "{\n          uVar31 = 0;\n          if (0.0 < fVar36) goto LAB_002745f5;\n        }" { (expression_statement "uVar31 = 0;" (assignment_expression "uVar31 = 0" identifier = number_literal) ;) (if_statement "if (0.0 < fVar36) goto LAB_002745f5;" if (parenthesized_expression "(0.0 < fVar36)" ( (binary_expression "0.0 < fVar36" number_literal < identifier) )) (goto_statement "goto LAB_002745f5;" goto statement_identifier ;)) }))) }))) (if_statement "if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }" if (parenthesized_expression "(param_2[0xf] == 0)" ( (binary_expression "param_2[0xf] == 0" (subscript_expression "param_2[0xf]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        param_2[0xf] = 8;\n      }" { (expression_statement "param_2[0xf] = 8;" (assignment_expression "param_2[0xf] = 8" (subscript_expression "param_2[0xf]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "uVar29 = *param_2;" (assignment_expression "uVar29 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }" if (parenthesized_expression "(0 < (long)uVar29)" ( (binary_expression "0 < (long)uVar29" number_literal < (cast_expression "(long)uVar29" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }" { (expression_statement "uVar22 = param_2[0xf];" (assignment_expression "uVar22 = param_2[0xf]" identifier = (subscript_expression "param_2[0xf]" identifier [ number_literal ])) ;) (do_statement "do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);" do (compound_statement "{\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        }" { (expression_statement "uVar21 = uVar29;" (assignment_expression "uVar21 = uVar29" identifier = identifier) ;) (if_statement "if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }" if (parenthesized_expression "(uVar22 <= uVar29)" ( (binary_expression "uVar22 <= uVar29" identifier <= identifier) )) (compound_statement "{\n            uVar21 = uVar22;\n          }" { (expression_statement "uVar21 = uVar22;" (assignment_expression "uVar21 = uVar22" identifier = identifier) ;) })) (expression_statement "uVar30 = uVar29 - uVar21;" (assignment_expression "uVar30 = uVar29 - uVar21" identifier = (binary_expression "uVar29 - uVar21" identifier - identifier)) ;) (expression_statement "uVar29 = 0;" (assignment_expression "uVar29 = 0" identifier = number_literal) ;) (if_statement "if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }" if (parenthesized_expression "(-1 < (long)uVar30)" ( (binary_expression "-1 < (long)uVar30" number_literal < (cast_expression "(long)uVar30" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n            uVar29 = uVar30;\n          }" { (expression_statement "uVar29 = uVar30;" (assignment_expression "uVar29 = uVar30" identifier = identifier) ;) })) (if_statement "if (uVar22 == 8) {\n            *param_5 = 0;\n          }" if (parenthesized_expression "(uVar22 == 8)" ( (binary_expression "uVar22 == 8" identifier == number_literal) )) (compound_statement "{\n            *param_5 = 0;\n          }" { (expression_statement "*param_5 = 0;" (assignment_expression "*param_5 = 0" (pointer_expression "*param_5" * identifier) = number_literal) ;) })) (expression_statement "uVar22 = uVar22 - uVar21;" (assignment_expression "uVar22 = uVar22 - uVar21" identifier = (binary_expression "uVar22 - uVar21" identifier - identifier)) ;) (expression_statement "*param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));" (assignment_expression "*param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f))" (pointer_expression "*param_5" * identifier) = (binary_expression "*param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f))" (pointer_expression "*param_5" * identifier) | (call_expression "(byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f))" ( (binary_expression "(~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f)" (parenthesized_expression "(~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f))" ( (binary_expression "~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)" (unary_expression "~(-1L << ((byte)uVar21 & 0x3f))" ~ (parenthesized_expression "(-1L << ((byte)uVar21 & 0x3f))" ( (binary_expression "-1L << ((byte)uVar21 & 0x3f)" number_literal << (parenthesized_expression "((byte)uVar21 & 0x3f)" ( (binary_expression "(byte)uVar21 & 0x3f" (cast_expression "(byte)uVar21" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & (binary_expression "uVar31 >> ((byte)uVar29 & 0x3f)" identifier >> (parenthesized_expression "((byte)uVar29 & 0x3f)" ( (binary_expression "(byte)uVar29 & 0x3f" (cast_expression "(byte)uVar29" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) )) << (parenthesized_expression "((byte)uVar22 & 0x3f)" ( (binary_expression "(byte)uVar22 & 0x3f" (cast_expression "(byte)uVar22" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))))) ;) (if_statement "if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }" if (parenthesized_expression "(uVar22 == 0)" ( (binary_expression "uVar22 == 0" identifier == number_literal) )) (compound_statement "{\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }" { (expression_statement "param_5 = param_5 + 1;" (assignment_expression "param_5 = param_5 + 1" identifier = (binary_expression "param_5 + 1" identifier + number_literal)) ;) (expression_statement "uVar22 = 8;" (assignment_expression "uVar22 = 8" identifier = number_literal) ;) })) }) while (parenthesized_expression "(0 < (long)uVar30)" ( (binary_expression "0 < (long)uVar30" number_literal < (cast_expression "(long)uVar30" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) ;) (expression_statement "param_2[0xf] = uVar22;" (assignment_expression "param_2[0xf] = uVar22" (subscript_expression "param_2[0xf]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4" identifier = (binary_expression "param_4 + *(long *)(param_1 + 0x340) * 4" identifier + (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" * (cast_expression "(long *)(param_1 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "param_5 = param_5 + param_2[6];" (assignment_expression "param_5 = param_5 + param_2[6]" identifier = (binary_expression "param_5 + param_2[6]" identifier + (subscript_expression "param_2[6]" identifier [ number_literal ]))) ;) (expression_statement "uVar34 = uVar34 + 1;" (assignment_expression "uVar34 = uVar34 + 1" identifier = (binary_expression "uVar34 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_3 != uVar34)" ( (binary_expression "param_3 != uVar34" identifier != identifier) )) ;) }))) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */\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/* WARNING: Enum "ExceptionType": Some values do not have unique names */\n\nvoid ExportGrayAlphaQuantum\n               (Image *image,QuantumInfo *quantum_info,MagickSizeType number_pixels,Quantum *p,\n               uchar *q,ExceptionInfo *exception)\n\n{\n  byte *pbVar1;\n  bool bVar2;\n  size_t sVar3;\n  size_t sVar4;\n  PixelChannelMap *pPVar5;\n  double dVar6;\n  double dVar7;\n  bool bVar8;\n  double dVar9;\n  double dVar10;\n  double dVar11;\n  double dVar12;\n  double dVar13;\n  double dVar14;\n  float fVar15;\n  float fVar16;\n  float fVar17;\n  double dVar18;\n  byte bVar19;\n  byte bVar20;\n  uchar uVar21;\n  ushort uVar22;\n  undefined2 uVar23;\n  uchar uVar25;\n  undefined4 uVar24;\n  ulong uVar26;\n  ulong uVar27;\n  uchar uVar28;\n  uint uVar33;\n  size_t sVar34;\n  ulong uVar35;\n  ulong uVar36;\n  long lVar37;\n  ulong uVar38;\n  MagickSizeType MVar39;\n  bool bVar40;\n  Quantum QVar41;\n  float fVar42;\n  float fVar43;\n  uchar uVar29;\n  uchar uVar30;\n  uchar uVar31;\n  uchar uVar32;\n  \n  dVar18 = DAT_0042f2e8;\n  fVar17 = DAT_0041abe0;\n  fVar16 = DAT_0041abdc;\n  fVar15 = DAT_0041abd8;\n  dVar14 = DAT_00404938;\n  dVar13 = DAT_00404930;\n  dVar12 = DAT_00404928;\n  dVar7 = DAT_00404920;\n  fVar42 = _DAT_003fa400;\n  dVar11 = DAT_003fa3a0;\n  dVar10 = DAT_003f9c40;\n  dVar9 = DAT_003f9c28;\n  dVar6 = DAT_003f95f8;\n  if (exception == (ExceptionInfo *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x89f,\n                  "ExportGrayAlphaQuantum");\n  }\n  if (exception->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x8a0,\n                  "ExportGrayAlphaQuantum");\n  }\n  uVar36 = quantum_info->depth;\n  if (uVar36 == 8) {\n    MVar39 = 0;\n    if ((long)number_pixels < 1) {\n      return;\n    }\n    do {\n      pPVar5 = image->channel_map;\n      fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n               fVar17 * p[pPVar5[2].offset];\n      if (NAN(fVar42)) {\n        uVar21 = '\0';\n      }\n      else {\n        uVar21 = '\0';\n        if ((0.0 < fVar42) && (dVar6 = (double)fVar42 / dVar13, uVar21 = 0xff, dVar6 < dVar14)) {\n          uVar21 = (uchar)(int)(dVar6 + dVar9);\n        }\n      }\n      *q = uVar21;\n      uVar21 = 0xff;\n      if (image->channel_map[4].traits != UndefinedPixelTrait) {\n        fVar42 = p[image->channel_map[4].offset];\n        if (NAN(fVar42)) {\n          uVar21 = '\0';\n        }\n        else {\n          uVar21 = '\0';\n          if ((0.0 < fVar42) && (uVar21 = 0xff, (double)fVar42 / DAT_00404930 < DAT_00404938)) {\n            uVar21 = (uchar)(int)((double)fVar42 / DAT_00404930 + DAT_003f9c28);\n          }\n        }\n      }\n      q[1] = uVar21;\n      p = p + image->number_channels;\n      q = q + quantum_info->pad + 2;\n      MVar39 = MVar39 + 1;\n    } while (MVar39 != number_pixels);\n    return;\n  }\n  if (uVar36 < 9) {\n    if (uVar36 == 1) {\n      bVar40 = quantum_info->min_is_white == MagickFalse;\n      bVar8 = !bVar40;\n      if (number_pixels != 3 && -1 < (long)(number_pixels - 3)) {\n        pbVar1 = q + (number_pixels - 4 >> 2) + 1;\n        do {\n          *q = 0;\n          pPVar5 = image->channel_map;\n          uVar33 = (uint)bVar40;\n          if (DAT_003fc580 <\n              fVar17 * p[pPVar5[2].offset] +\n              fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset]) {\n            uVar33 = (uint)bVar8;\n          }\n          bVar20 = (byte)(uVar33 << 7);\n          *q = bVar20;\n          bVar19 = 0x40;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            if (p[image->channel_map[4].offset] == _DAT_003fa400) {\n              bVar19 = 0x40;\n            }\n            else {\n              bVar19 = 0;\n            }\n          }\n          bVar19 = bVar19 | bVar20;\n          *q = bVar19;\n          sVar34 = image->number_channels;\n          pPVar5 = image->channel_map;\n          uVar33 = (uint)bVar40;\n          if (DAT_003fc580 <\n              fVar17 * p[sVar34 + pPVar5[2].offset] +\n              fVar15 * p[sVar34 + pPVar5->offset] + fVar16 * p[sVar34 + pPVar5[1].offset]) {\n            uVar33 = (uint)bVar8;\n          }\n          bVar19 = bVar19 | (byte)(uVar33 << 5);\n          *q = bVar19;\n          bVar20 = 0x10;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            if (p[sVar34 + image->channel_map[4].offset] == _DAT_003fa400) {\n              bVar20 = 0x10;\n            }\n            else {\n              bVar20 = 0;\n            }\n          }\n          bVar19 = bVar19 | bVar20;\n          *q = bVar19;\n          sVar4 = image->number_channels;\n          pPVar5 = image->channel_map;\n          bVar2 = bVar40;\n          if (DAT_003fc580 <\n              fVar17 * p[sVar34 + sVar4 + pPVar5[2].offset] +\n              fVar15 * p[sVar34 + sVar4 + pPVar5->offset] +\n              fVar16 * p[sVar34 + sVar4 + pPVar5[1].offset]) {\n            bVar2 = bVar8;\n          }\n          bVar19 = bVar19 | bVar2 * '\b';\n          *q = bVar19;\n          bVar20 = 4;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            if (p[sVar34 + sVar4 + image->channel_map[4].offset] == _DAT_003fa400) {\n              bVar20 = 4;\n            }\n            else {\n              bVar20 = 0;\n            }\n          }\n          bVar19 = bVar19 | bVar20;\n          *q = bVar19;\n          sVar3 = image->number_channels;\n          pPVar5 = image->channel_map;\n          bVar2 = bVar8;\n          if (DAT_0041abe0 * p[sVar34 + sVar4 + sVar3 + pPVar5[2].offset] +\n              DAT_0041abd8 * p[sVar34 + sVar4 + sVar3 + pPVar5->offset] +\n              DAT_0041abdc * p[sVar34 + sVar4 + sVar3 + pPVar5[1].offset] <= DAT_003fc580) {\n            bVar2 = bVar40;\n          }\n          bVar19 = bVar19 | bVar2 * '\x02';\n          *q = bVar19;\n          QVar41 = _DAT_003fa400;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            QVar41 = p[sVar34 + sVar4 + sVar3 + image->channel_map[4].offset];\n          }\n          *q = bVar19 | QVar41 == _DAT_003fa400;\n          p = p + sVar34 + sVar4 + sVar3 + image->number_channels;\n          q = q + 1;\n        } while (q != pbVar1);\n      }\n      if ((number_pixels & 3) == 0) {\n        return;\n      }\n      *q = 0;\n      fVar17 = DAT_0041abe0;\n      fVar16 = DAT_0041abdc;\n      fVar15 = DAT_0041abd8;\n      fVar42 = _DAT_003fa400;\n      bVar19 = 7;\n      lVar37 = 0;\n      do {\n        pPVar5 = image->channel_map;\n        bVar2 = bVar40;\n        if (DAT_003fc580 <\n            fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] + fVar17 * p[pPVar5[2].offset]\n           ) {\n          bVar2 = bVar8;\n        }\n        bVar20 = bVar2 << (bVar19 & 0x1f) | *q;\n        *q = bVar20;\n        QVar41 = fVar42;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          QVar41 = p[image->channel_map[4].offset];\n        }\n        uVar33 = (uint)(!NAN(QVar41) && !NAN(_DAT_003fa400));\n        if (QVar41 != _DAT_003fa400) {\n          uVar33 = 0;\n        }\n        *q = (byte)(uVar33 << (bVar19 - 1 & 0x1f)) | bVar20;\n        p = p + image->number_channels;\n        lVar37 = lVar37 + 2;\n        bVar19 = bVar19 - 2;\n      } while (lVar37 <= (long)(ulong)((uint)number_pixels & 3));\n      return;\n    }\n    if (uVar36 == 4) {\n      pbVar1 = q + number_pixels;\n      if ((long)number_pixels < 1) {\n        return;\n      }\n      do {\n        pPVar5 = image->channel_map;\n        fVar43 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                 fVar17 * p[pPVar5[2].offset];\n        if (NAN(fVar43)) {\n          bVar19 = 0;\n        }\n        else {\n          bVar19 = 0;\n          if (0.0 < fVar43) {\n            dVar6 = (double)fVar43 / dVar13;\n            bVar19 = 0xff;\n            if (dVar6 < dVar14) {\n              bVar19 = (byte)(int)(dVar6 + dVar9);\n            }\n          }\n        }\n        *q = bVar19 & 0xf0;\n        QVar41 = fVar42;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          QVar41 = p[image->channel_map[4].offset];\n        }\n        *q = bVar19 & 0xf0 | (byte)(int)((double)QVar41 * dVar18 + dVar9) & 0xf;\n        p = p + image->number_channels;\n        q = q + 1;\n      } while (q != pbVar1);\n      return;\n    }\nLAB_002734da:\n    uVar38 = 0;\n    if (uVar36 == 0) goto LAB_002734e9;\n  }\n  else {\n    if (uVar36 == 0x20) {\n      if (quantum_info->format == FloatingPointQuantumFormat) {\n        if ((long)number_pixels < 1) {\n          return;\n        }\n        MVar39 = 0;\n        do {\n          pPVar5 = image->channel_map;\n          fVar43 = (float)((double)(fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                                   fVar17 * p[pPVar5[2].offset]) *\n                           (quantum_info->state).inverse_scale + quantum_info->minimum);\n          uVar25 = (uchar)((uint)fVar43 >> 8);\n          uVar31 = (uchar)((uint)fVar43 >> 0x10);\n          uVar21 = (uchar)((uint)fVar43 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            *q = SUB41(fVar43,0);\n            q[1] = uVar25;\n            q[2] = uVar31;\n            q[3] = uVar21;\n          }\n          else {\n            *q = uVar21;\n            q[1] = uVar31;\n            q[2] = uVar25;\n            q[3] = SUB41(fVar43,0);\n          }\n          QVar41 = fVar42;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            QVar41 = p[image->channel_map[4].offset];\n          }\n          fVar43 = (float)((double)QVar41 * (quantum_info->state).inverse_scale +\n                          quantum_info->minimum);\n          uVar21 = (uchar)((uint)fVar43 >> 8);\n          uVar25 = (uchar)((uint)fVar43 >> 0x10);\n          uVar31 = (uchar)((uint)fVar43 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            q[4] = SUB41(fVar43,0);\n            q[5] = uVar21;\n            q[6] = uVar25;\n            q[7] = uVar31;\n          }\n          else {\n            q[4] = uVar31;\n            q[5] = uVar25;\n            q[6] = uVar21;\n            q[7] = SUB41(fVar43,0);\n          }\n          p = p + image->number_channels;\n          q = q + quantum_info->pad + 8;\n          MVar39 = MVar39 + 1;\n        } while (MVar39 != number_pixels);\n        return;\n      }\n      MVar39 = 0;\n      if ((long)number_pixels < 1) {\n        return;\n      }\n      do {\n        pPVar5 = image->channel_map;\n        fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                 fVar17 * p[pPVar5[2].offset];\n        if (NAN(fVar42)) {\n          uVar24 = 0;\n        }\n        else {\n          uVar24 = 0;\n          if ((0.0 < fVar42) && (uVar24 = 0xffffffff, (double)fVar42 * dVar7 < dVar12)) {\n            uVar24 = (undefined4)(long)((double)fVar42 * dVar7 + dVar9);\n          }\n        }\n        uVar21 = (uchar)((uint)uVar24 >> 8);\n        uVar25 = (uchar)((uint)uVar24 >> 0x10);\n        uVar31 = (uchar)((uint)uVar24 >> 0x18);\n        if (quantum_info->endian == LSBEndian) {\n          *q = (uchar)uVar24;\n          q[1] = uVar21;\n          q[2] = uVar25;\n          q[3] = uVar31;\n        }\n        else {\n          *q = uVar31;\n          q[1] = uVar25;\n          q[2] = uVar21;\n          q[3] = (uchar)uVar24;\n        }\n        uVar24 = 0xffffffff;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          fVar42 = p[image->channel_map[4].offset];\n          if (NAN(fVar42)) {\n            uVar24 = 0;\n          }\n          else {\n            uVar24 = 0;\n            if ((0.0 < fVar42) &&\n               (uVar24 = 0xffffffff, (double)fVar42 * DAT_00404920 < DAT_00404928)) {\n              uVar24 = (int)(long)((double)fVar42 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }\n        uVar21 = (uchar)((uint)uVar24 >> 8);\n        uVar25 = (uchar)((uint)uVar24 >> 0x10);\n        uVar31 = (uchar)((uint)uVar24 >> 0x18);\n        if (quantum_info->endian == LSBEndian) {\n          q[4] = (uchar)uVar24;\n          q[5] = uVar21;\n          q[6] = uVar25;\n          q[7] = uVar31;\n        }\n        else {\n          q[4] = uVar31;\n          q[5] = uVar25;\n          q[6] = uVar21;\n          q[7] = (uchar)uVar24;\n        }\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 8;\n        MVar39 = MVar39 + 1;\n      } while (MVar39 != number_pixels);\n      return;\n    }\n    if (uVar36 != 0x40) {\n      if (uVar36 == 0x10) {\n        if (quantum_info->format == FloatingPointQuantumFormat) {\n          if ((long)number_pixels < 1) {\n            return;\n          }\n          MVar39 = 0;\n          do {\n            pPVar5 = image->channel_map;\n            uVar22 = SinglePrecisionToHalf\n                               ((float)((double)(DAT_0041abdc * p[pPVar5[1].offset] +\n                                                 DAT_0041abd8 * p[pPVar5->offset] +\n                                                DAT_0041abe0 * p[pPVar5[2].offset]) * DAT_003f9c60))\n            ;\n            uVar21 = (uchar)(uVar22 >> 8);\n            if (quantum_info->endian == LSBEndian) {\n              *q = (uchar)uVar22;\n              q[1] = uVar21;\n            }\n            else {\n              *q = uVar21;\n              q[1] = (uchar)uVar22;\n            }\n            QVar41 = _DAT_003fa400;\n            if (image->channel_map[4].traits != UndefinedPixelTrait) {\n              QVar41 = p[image->channel_map[4].offset];\n            }\n            uVar22 = SinglePrecisionToHalf((float)((double)QVar41 * DAT_003f9c60));\n            uVar21 = (uchar)(uVar22 >> 8);\n            if (quantum_info->endian == LSBEndian) {\n              q[2] = (uchar)uVar22;\n              q[3] = uVar21;\n            }\n            else {\n              q[2] = uVar21;\n              q[3] = (uchar)uVar22;\n            }\n            p = p + image->number_channels;\n            q = q + quantum_info->pad + 4;\n            MVar39 = MVar39 + 1;\n          } while (MVar39 != number_pixels);\n          return;\n        }\n        MVar39 = 0;\n        if ((long)number_pixels < 1) {\n          return;\n        }\n        do {\n          pPVar5 = image->channel_map;\n          fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                   fVar17 * p[pPVar5[2].offset];\n          if (NAN(fVar42)) {\n            uVar23 = 0;\n          }\n          else {\n            uVar23 = 0;\n            if ((0.0 < fVar42) && (uVar23 = 0xffff, fVar42 < _DAT_003fa400)) {\n              uVar23 = (undefined2)(int)((double)fVar42 + dVar9);\n            }\n          }\n          uVar21 = (uchar)((ushort)uVar23 >> 8);\n          if (quantum_info->endian == LSBEndian) {\n            *q = (uchar)uVar23;\n            q[1] = uVar21;\n          }\n          else {\n            *q = uVar21;\n            q[1] = (uchar)uVar23;\n          }\n          uVar23 = 0xffff;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            fVar42 = p[image->channel_map[4].offset];\n            if (NAN(fVar42)) {\n              uVar23 = 0;\n            }\n            else {\n              uVar23 = 0;\n              if ((0.0 < fVar42) && (uVar23 = 0xffff, fVar42 < _DAT_003fa400)) {\n                uVar23 = (short)(int)((double)fVar42 + dVar9);\n              }\n            }\n          }\n          uVar21 = (uchar)((ushort)uVar23 >> 8);\n          if (quantum_info->endian == LSBEndian) {\n            q[2] = (uchar)uVar23;\n            q[3] = uVar21;\n          }\n          else {\n            q[2] = uVar21;\n            q[3] = (uchar)uVar23;\n          }\n          p = p + image->number_channels;\n          q = q + quantum_info->pad + 4;\n          MVar39 = MVar39 + 1;\n        } while (MVar39 != number_pixels);\n        return;\n      }\n      goto LAB_002734da;\n    }\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if ((long)number_pixels < 1) {\n        return;\n      }\n      MVar39 = 0;\n      do {\n        pPVar5 = image->channel_map;\n        dVar6 = (double)(fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                        fVar17 * p[pPVar5[2].offset]) * (quantum_info->state).inverse_scale +\n                quantum_info->minimum;\n        uVar25 = (uchar)((ulong)dVar6 >> 8);\n        uVar28 = (uchar)((ulong)dVar6 >> 0x10);\n        uVar29 = (uchar)((ulong)dVar6 >> 0x18);\n        uVar30 = (uchar)((ulong)dVar6 >> 0x20);\n        uVar31 = (uchar)((ulong)dVar6 >> 0x28);\n        uVar32 = (uchar)((ulong)dVar6 >> 0x30);\n        uVar21 = (uchar)((ulong)dVar6 >> 0x38);\n        if (quantum_info->endian == LSBEndian) {\n          *q = SUB81(dVar6,0);\n          q[1] = uVar25;\n          q[2] = uVar28;\n          q[3] = uVar29;\n          q[4] = uVar30;\n          q[5] = uVar31;\n          q[6] = uVar32;\n          q[7] = uVar21;\n        }\n        else {\n          *q = uVar21;\n          q[1] = uVar32;\n          q[2] = uVar31;\n          q[3] = uVar30;\n          q[4] = uVar29;\n          q[5] = uVar28;\n          q[6] = uVar25;\n          q[7] = SUB81(dVar6,0);\n        }\n        QVar41 = fVar42;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          QVar41 = p[image->channel_map[4].offset];\n        }\n        dVar6 = (double)QVar41 * (quantum_info->state).inverse_scale + quantum_info->minimum;\n        uVar21 = (uchar)((ulong)dVar6 >> 8);\n        uVar25 = (uchar)((ulong)dVar6 >> 0x10);\n        uVar31 = (uchar)((ulong)dVar6 >> 0x18);\n        uVar32 = (uchar)((ulong)dVar6 >> 0x20);\n        uVar30 = (uchar)((ulong)dVar6 >> 0x28);\n        uVar29 = (uchar)((ulong)dVar6 >> 0x30);\n        uVar28 = (uchar)((ulong)dVar6 >> 0x38);\n        if (quantum_info->endian == LSBEndian) {\n          q[8] = SUB81(dVar6,0);\n          q[9] = uVar21;\n          q[10] = uVar25;\n          q[0xb] = uVar31;\n          q[0xc] = uVar32;\n          q[0xd] = uVar30;\n          q[0xe] = uVar29;\n          q[0xf] = uVar28;\n        }\n        else {\n          q[8] = uVar28;\n          q[9] = uVar29;\n          q[10] = uVar30;\n          q[0xb] = uVar32;\n          q[0xc] = uVar31;\n          q[0xd] = uVar25;\n          q[0xe] = uVar21;\n          q[0xf] = SUB81(dVar6,0);\n        }\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 0x10;\n        MVar39 = MVar39 + 1;\n      } while (MVar39 != number_pixels);\n      return;\n    }\n  }\n  if (0x40 < uVar36) {\n    uVar36 = 0;\n  }\n  uVar38 = (2L << ((char)uVar36 - 1U & 0x3f)) - 1;\nLAB_002734e9:\n  if (0 < (long)number_pixels) {\n    MVar39 = 0;\n    do {\n      pPVar5 = image->channel_map;\n      fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n               fVar17 * p[pPVar5[2].offset];\n      if (NAN(fVar42)) {\n        uVar36 = 0;\n      }\n      else {\n        uVar36 = 0;\n        if (0.0 < fVar42) {\n          dVar7 = ((double)fVar42 * (double)uVar38) / dVar6;\n          uVar36 = 0xffffffffffffffff;\n          if (dVar7 < dVar11) {\n            dVar7 = dVar7 + dVar9;\n            if (dVar10 <= dVar7) {\n              uVar36 = (long)(dVar7 - dVar10) ^ 0x8000000000000000;\n            }\n            else {\n              uVar36 = (ulong)dVar7;\n            }\n          }\n        }\n      }\n      if ((quantum_info->state).bits == 0) {\n        (quantum_info->state).bits = 8;\n      }\n      sVar34 = quantum_info->depth;\n      if (0 < (long)sVar34) {\n        uVar27 = (quantum_info->state).bits;\n        do {\n          uVar26 = sVar34;\n          if (uVar27 <= sVar34) {\n            uVar26 = uVar27;\n          }\n          uVar35 = sVar34 - uVar26;\n          sVar34 = 0;\n          if (-1 < (long)uVar35) {\n            sVar34 = uVar35;\n          }\n          if (uVar27 == 8) {\n            *q = 0;\n          }\n          uVar27 = uVar27 - uVar26;\n          *q = *q | (byte)((~(-1L << ((byte)uVar26 & 0x3f)) & uVar36 >> ((byte)sVar34 & 0x3f)) <<\n                          ((byte)uVar27 & 0x3f));\n          if (uVar27 == 0) {\n            q = q + 1;\n            uVar27 = 8;\n          }\n        } while (0 < (long)uVar35);\n        (quantum_info->state).bits = uVar27;\n      }\n      fVar42 = _DAT_003fa400;\n      if (image->channel_map[4].traits == UndefinedPixelTrait) {\nLAB_002745f5:\n        dVar7 = ((double)fVar42 * (double)uVar38) / DAT_003f95f8;\n        uVar36 = 0xffffffffffffffff;\n        if (dVar7 < DAT_003fa3a0) {\n          dVar7 = dVar7 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar7) {\n            uVar36 = (long)(dVar7 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar36 = (ulong)dVar7;\n          }\n        }\n      }\n      else {\n        fVar42 = p[image->channel_map[4].offset];\n        if (NAN(fVar42)) {\n          uVar36 = 0;\n        }\n        else {\n          uVar36 = 0;\n          if (0.0 < fVar42) goto LAB_002745f5;\n        }\n      }\n      if ((quantum_info->state).bits == 0) {\n        (quantum_info->state).bits = 8;\n      }\n      sVar34 = quantum_info->depth;\n      if (0 < (long)sVar34) {\n        uVar27 = (quantum_info->state).bits;\n        do {\n          uVar26 = sVar34;\n          if (uVar27 <= sVar34) {\n            uVar26 = uVar27;\n          }\n          uVar35 = sVar34 - uVar26;\n          sVar34 = 0;\n          if (-1 < (long)uVar35) {\n            sVar34 = uVar35;\n          }\n          if (uVar27 == 8) {\n            *q = 0;\n          }\n          uVar27 = uVar27 - uVar26;\n          *q = *q | (byte)((~(-1L << ((byte)uVar26 & 0x3f)) & uVar36 >> ((byte)sVar34 & 0x3f)) <<\n                          ((byte)uVar27 & 0x3f));\n          if (uVar27 == 0) {\n            q = q + 1;\n            uVar27 = 8;\n          }\n        } while (0 < (long)uVar35);\n        (quantum_info->state).bits = uVar27;\n      }\n      p = p + image->number_channels;\n      q = q + quantum_info->pad;\n      MVar39 = MVar39 + 1;\n    } while (number_pixels != MVar39);\n  }\n  return;\n}\n\n" comment comment comment comment comment comment (function_definition "void ExportGrayAlphaQuantum\n               (Image *image,QuantumInfo *quantum_info,MagickSizeType number_pixels,Quantum *p,\n               uchar *q,ExceptionInfo *exception)\n\n{\n  byte *pbVar1;\n  bool bVar2;\n  size_t sVar3;\n  size_t sVar4;\n  PixelChannelMap *pPVar5;\n  double dVar6;\n  double dVar7;\n  bool bVar8;\n  double dVar9;\n  double dVar10;\n  double dVar11;\n  double dVar12;\n  double dVar13;\n  double dVar14;\n  float fVar15;\n  float fVar16;\n  float fVar17;\n  double dVar18;\n  byte bVar19;\n  byte bVar20;\n  uchar uVar21;\n  ushort uVar22;\n  undefined2 uVar23;\n  uchar uVar25;\n  undefined4 uVar24;\n  ulong uVar26;\n  ulong uVar27;\n  uchar uVar28;\n  uint uVar33;\n  size_t sVar34;\n  ulong uVar35;\n  ulong uVar36;\n  long lVar37;\n  ulong uVar38;\n  MagickSizeType MVar39;\n  bool bVar40;\n  Quantum QVar41;\n  float fVar42;\n  float fVar43;\n  uchar uVar29;\n  uchar uVar30;\n  uchar uVar31;\n  uchar uVar32;\n  \n  dVar18 = DAT_0042f2e8;\n  fVar17 = DAT_0041abe0;\n  fVar16 = DAT_0041abdc;\n  fVar15 = DAT_0041abd8;\n  dVar14 = DAT_00404938;\n  dVar13 = DAT_00404930;\n  dVar12 = DAT_00404928;\n  dVar7 = DAT_00404920;\n  fVar42 = _DAT_003fa400;\n  dVar11 = DAT_003fa3a0;\n  dVar10 = DAT_003f9c40;\n  dVar9 = DAT_003f9c28;\n  dVar6 = DAT_003f95f8;\n  if (exception == (ExceptionInfo *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x89f,\n                  "ExportGrayAlphaQuantum");\n  }\n  if (exception->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x8a0,\n                  "ExportGrayAlphaQuantum");\n  }\n  uVar36 = quantum_info->depth;\n  if (uVar36 == 8) {\n    MVar39 = 0;\n    if ((long)number_pixels < 1) {\n      return;\n    }\n    do {\n      pPVar5 = image->channel_map;\n      fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n               fVar17 * p[pPVar5[2].offset];\n      if (NAN(fVar42)) {\n        uVar21 = '\0';\n      }\n      else {\n        uVar21 = '\0';\n        if ((0.0 < fVar42) && (dVar6 = (double)fVar42 / dVar13, uVar21 = 0xff, dVar6 < dVar14)) {\n          uVar21 = (uchar)(int)(dVar6 + dVar9);\n        }\n      }\n      *q = uVar21;\n      uVar21 = 0xff;\n      if (image->channel_map[4].traits != UndefinedPixelTrait) {\n        fVar42 = p[image->channel_map[4].offset];\n        if (NAN(fVar42)) {\n          uVar21 = '\0';\n        }\n        else {\n          uVar21 = '\0';\n          if ((0.0 < fVar42) && (uVar21 = 0xff, (double)fVar42 / DAT_00404930 < DAT_00404938)) {\n            uVar21 = (uchar)(int)((double)fVar42 / DAT_00404930 + DAT_003f9c28);\n          }\n        }\n      }\n      q[1] = uVar21;\n      p = p + image->number_channels;\n      q = q + quantum_info->pad + 2;\n      MVar39 = MVar39 + 1;\n    } while (MVar39 != number_pixels);\n    return;\n  }\n  if (uVar36 < 9) {\n    if (uVar36 == 1) {\n      bVar40 = quantum_info->min_is_white == MagickFalse;\n      bVar8 = !bVar40;\n      if (number_pixels != 3 && -1 < (long)(number_pixels - 3)) {\n        pbVar1 = q + (number_pixels - 4 >> 2) + 1;\n        do {\n          *q = 0;\n          pPVar5 = image->channel_map;\n          uVar33 = (uint)bVar40;\n          if (DAT_003fc580 <\n              fVar17 * p[pPVar5[2].offset] +\n              fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset]) {\n            uVar33 = (uint)bVar8;\n          }\n          bVar20 = (byte)(uVar33 << 7);\n          *q = bVar20;\n          bVar19 = 0x40;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            if (p[image->channel_map[4].offset] == _DAT_003fa400) {\n              bVar19 = 0x40;\n            }\n            else {\n              bVar19 = 0;\n            }\n          }\n          bVar19 = bVar19 | bVar20;\n          *q = bVar19;\n          sVar34 = image->number_channels;\n          pPVar5 = image->channel_map;\n          uVar33 = (uint)bVar40;\n          if (DAT_003fc580 <\n              fVar17 * p[sVar34 + pPVar5[2].offset] +\n              fVar15 * p[sVar34 + pPVar5->offset] + fVar16 * p[sVar34 + pPVar5[1].offset]) {\n            uVar33 = (uint)bVar8;\n          }\n          bVar19 = bVar19 | (byte)(uVar33 << 5);\n          *q = bVar19;\n          bVar20 = 0x10;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            if (p[sVar34 + image->channel_map[4].offset] == _DAT_003fa400) {\n              bVar20 = 0x10;\n            }\n            else {\n              bVar20 = 0;\n            }\n          }\n          bVar19 = bVar19 | bVar20;\n          *q = bVar19;\n          sVar4 = image->number_channels;\n          pPVar5 = image->channel_map;\n          bVar2 = bVar40;\n          if (DAT_003fc580 <\n              fVar17 * p[sVar34 + sVar4 + pPVar5[2].offset] +\n              fVar15 * p[sVar34 + sVar4 + pPVar5->offset] +\n              fVar16 * p[sVar34 + sVar4 + pPVar5[1].offset]) {\n            bVar2 = bVar8;\n          }\n          bVar19 = bVar19 | bVar2 * '\b';\n          *q = bVar19;\n          bVar20 = 4;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            if (p[sVar34 + sVar4 + image->channel_map[4].offset] == _DAT_003fa400) {\n              bVar20 = 4;\n            }\n            else {\n              bVar20 = 0;\n            }\n          }\n          bVar19 = bVar19 | bVar20;\n          *q = bVar19;\n          sVar3 = image->number_channels;\n          pPVar5 = image->channel_map;\n          bVar2 = bVar8;\n          if (DAT_0041abe0 * p[sVar34 + sVar4 + sVar3 + pPVar5[2].offset] +\n              DAT_0041abd8 * p[sVar34 + sVar4 + sVar3 + pPVar5->offset] +\n              DAT_0041abdc * p[sVar34 + sVar4 + sVar3 + pPVar5[1].offset] <= DAT_003fc580) {\n            bVar2 = bVar40;\n          }\n          bVar19 = bVar19 | bVar2 * '\x02';\n          *q = bVar19;\n          QVar41 = _DAT_003fa400;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            QVar41 = p[sVar34 + sVar4 + sVar3 + image->channel_map[4].offset];\n          }\n          *q = bVar19 | QVar41 == _DAT_003fa400;\n          p = p + sVar34 + sVar4 + sVar3 + image->number_channels;\n          q = q + 1;\n        } while (q != pbVar1);\n      }\n      if ((number_pixels & 3) == 0) {\n        return;\n      }\n      *q = 0;\n      fVar17 = DAT_0041abe0;\n      fVar16 = DAT_0041abdc;\n      fVar15 = DAT_0041abd8;\n      fVar42 = _DAT_003fa400;\n      bVar19 = 7;\n      lVar37 = 0;\n      do {\n        pPVar5 = image->channel_map;\n        bVar2 = bVar40;\n        if (DAT_003fc580 <\n            fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] + fVar17 * p[pPVar5[2].offset]\n           ) {\n          bVar2 = bVar8;\n        }\n        bVar20 = bVar2 << (bVar19 & 0x1f) | *q;\n        *q = bVar20;\n        QVar41 = fVar42;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          QVar41 = p[image->channel_map[4].offset];\n        }\n        uVar33 = (uint)(!NAN(QVar41) && !NAN(_DAT_003fa400));\n        if (QVar41 != _DAT_003fa400) {\n          uVar33 = 0;\n        }\n        *q = (byte)(uVar33 << (bVar19 - 1 & 0x1f)) | bVar20;\n        p = p + image->number_channels;\n        lVar37 = lVar37 + 2;\n        bVar19 = bVar19 - 2;\n      } while (lVar37 <= (long)(ulong)((uint)number_pixels & 3));\n      return;\n    }\n    if (uVar36 == 4) {\n      pbVar1 = q + number_pixels;\n      if ((long)number_pixels < 1) {\n        return;\n      }\n      do {\n        pPVar5 = image->channel_map;\n        fVar43 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                 fVar17 * p[pPVar5[2].offset];\n        if (NAN(fVar43)) {\n          bVar19 = 0;\n        }\n        else {\n          bVar19 = 0;\n          if (0.0 < fVar43) {\n            dVar6 = (double)fVar43 / dVar13;\n            bVar19 = 0xff;\n            if (dVar6 < dVar14) {\n              bVar19 = (byte)(int)(dVar6 + dVar9);\n            }\n          }\n        }\n        *q = bVar19 & 0xf0;\n        QVar41 = fVar42;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          QVar41 = p[image->channel_map[4].offset];\n        }\n        *q = bVar19 & 0xf0 | (byte)(int)((double)QVar41 * dVar18 + dVar9) & 0xf;\n        p = p + image->number_channels;\n        q = q + 1;\n      } while (q != pbVar1);\n      return;\n    }\nLAB_002734da:\n    uVar38 = 0;\n    if (uVar36 == 0) goto LAB_002734e9;\n  }\n  else {\n    if (uVar36 == 0x20) {\n      if (quantum_info->format == FloatingPointQuantumFormat) {\n        if ((long)number_pixels < 1) {\n          return;\n        }\n        MVar39 = 0;\n        do {\n          pPVar5 = image->channel_map;\n          fVar43 = (float)((double)(fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                                   fVar17 * p[pPVar5[2].offset]) *\n                           (quantum_info->state).inverse_scale + quantum_info->minimum);\n          uVar25 = (uchar)((uint)fVar43 >> 8);\n          uVar31 = (uchar)((uint)fVar43 >> 0x10);\n          uVar21 = (uchar)((uint)fVar43 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            *q = SUB41(fVar43,0);\n            q[1] = uVar25;\n            q[2] = uVar31;\n            q[3] = uVar21;\n          }\n          else {\n            *q = uVar21;\n            q[1] = uVar31;\n            q[2] = uVar25;\n            q[3] = SUB41(fVar43,0);\n          }\n          QVar41 = fVar42;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            QVar41 = p[image->channel_map[4].offset];\n          }\n          fVar43 = (float)((double)QVar41 * (quantum_info->state).inverse_scale +\n                          quantum_info->minimum);\n          uVar21 = (uchar)((uint)fVar43 >> 8);\n          uVar25 = (uchar)((uint)fVar43 >> 0x10);\n          uVar31 = (uchar)((uint)fVar43 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            q[4] = SUB41(fVar43,0);\n            q[5] = uVar21;\n            q[6] = uVar25;\n            q[7] = uVar31;\n          }\n          else {\n            q[4] = uVar31;\n            q[5] = uVar25;\n            q[6] = uVar21;\n            q[7] = SUB41(fVar43,0);\n          }\n          p = p + image->number_channels;\n          q = q + quantum_info->pad + 8;\n          MVar39 = MVar39 + 1;\n        } while (MVar39 != number_pixels);\n        return;\n      }\n      MVar39 = 0;\n      if ((long)number_pixels < 1) {\n        return;\n      }\n      do {\n        pPVar5 = image->channel_map;\n        fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                 fVar17 * p[pPVar5[2].offset];\n        if (NAN(fVar42)) {\n          uVar24 = 0;\n        }\n        else {\n          uVar24 = 0;\n          if ((0.0 < fVar42) && (uVar24 = 0xffffffff, (double)fVar42 * dVar7 < dVar12)) {\n            uVar24 = (undefined4)(long)((double)fVar42 * dVar7 + dVar9);\n          }\n        }\n        uVar21 = (uchar)((uint)uVar24 >> 8);\n        uVar25 = (uchar)((uint)uVar24 >> 0x10);\n        uVar31 = (uchar)((uint)uVar24 >> 0x18);\n        if (quantum_info->endian == LSBEndian) {\n          *q = (uchar)uVar24;\n          q[1] = uVar21;\n          q[2] = uVar25;\n          q[3] = uVar31;\n        }\n        else {\n          *q = uVar31;\n          q[1] = uVar25;\n          q[2] = uVar21;\n          q[3] = (uchar)uVar24;\n        }\n        uVar24 = 0xffffffff;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          fVar42 = p[image->channel_map[4].offset];\n          if (NAN(fVar42)) {\n            uVar24 = 0;\n          }\n          else {\n            uVar24 = 0;\n            if ((0.0 < fVar42) &&\n               (uVar24 = 0xffffffff, (double)fVar42 * DAT_00404920 < DAT_00404928)) {\n              uVar24 = (int)(long)((double)fVar42 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }\n        uVar21 = (uchar)((uint)uVar24 >> 8);\n        uVar25 = (uchar)((uint)uVar24 >> 0x10);\n        uVar31 = (uchar)((uint)uVar24 >> 0x18);\n        if (quantum_info->endian == LSBEndian) {\n          q[4] = (uchar)uVar24;\n          q[5] = uVar21;\n          q[6] = uVar25;\n          q[7] = uVar31;\n        }\n        else {\n          q[4] = uVar31;\n          q[5] = uVar25;\n          q[6] = uVar21;\n          q[7] = (uchar)uVar24;\n        }\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 8;\n        MVar39 = MVar39 + 1;\n      } while (MVar39 != number_pixels);\n      return;\n    }\n    if (uVar36 != 0x40) {\n      if (uVar36 == 0x10) {\n        if (quantum_info->format == FloatingPointQuantumFormat) {\n          if ((long)number_pixels < 1) {\n            return;\n          }\n          MVar39 = 0;\n          do {\n            pPVar5 = image->channel_map;\n            uVar22 = SinglePrecisionToHalf\n                               ((float)((double)(DAT_0041abdc * p[pPVar5[1].offset] +\n                                                 DAT_0041abd8 * p[pPVar5->offset] +\n                                                DAT_0041abe0 * p[pPVar5[2].offset]) * DAT_003f9c60))\n            ;\n            uVar21 = (uchar)(uVar22 >> 8);\n            if (quantum_info->endian == LSBEndian) {\n              *q = (uchar)uVar22;\n              q[1] = uVar21;\n            }\n            else {\n              *q = uVar21;\n              q[1] = (uchar)uVar22;\n            }\n            QVar41 = _DAT_003fa400;\n            if (image->channel_map[4].traits != UndefinedPixelTrait) {\n              QVar41 = p[image->channel_map[4].offset];\n            }\n            uVar22 = SinglePrecisionToHalf((float)((double)QVar41 * DAT_003f9c60));\n            uVar21 = (uchar)(uVar22 >> 8);\n            if (quantum_info->endian == LSBEndian) {\n              q[2] = (uchar)uVar22;\n              q[3] = uVar21;\n            }\n            else {\n              q[2] = uVar21;\n              q[3] = (uchar)uVar22;\n            }\n            p = p + image->number_channels;\n            q = q + quantum_info->pad + 4;\n            MVar39 = MVar39 + 1;\n          } while (MVar39 != number_pixels);\n          return;\n        }\n        MVar39 = 0;\n        if ((long)number_pixels < 1) {\n          return;\n        }\n        do {\n          pPVar5 = image->channel_map;\n          fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                   fVar17 * p[pPVar5[2].offset];\n          if (NAN(fVar42)) {\n            uVar23 = 0;\n          }\n          else {\n            uVar23 = 0;\n            if ((0.0 < fVar42) && (uVar23 = 0xffff, fVar42 < _DAT_003fa400)) {\n              uVar23 = (undefined2)(int)((double)fVar42 + dVar9);\n            }\n          }\n          uVar21 = (uchar)((ushort)uVar23 >> 8);\n          if (quantum_info->endian == LSBEndian) {\n            *q = (uchar)uVar23;\n            q[1] = uVar21;\n          }\n          else {\n            *q = uVar21;\n            q[1] = (uchar)uVar23;\n          }\n          uVar23 = 0xffff;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            fVar42 = p[image->channel_map[4].offset];\n            if (NAN(fVar42)) {\n              uVar23 = 0;\n            }\n            else {\n              uVar23 = 0;\n              if ((0.0 < fVar42) && (uVar23 = 0xffff, fVar42 < _DAT_003fa400)) {\n                uVar23 = (short)(int)((double)fVar42 + dVar9);\n              }\n            }\n          }\n          uVar21 = (uchar)((ushort)uVar23 >> 8);\n          if (quantum_info->endian == LSBEndian) {\n            q[2] = (uchar)uVar23;\n            q[3] = uVar21;\n          }\n          else {\n            q[2] = uVar21;\n            q[3] = (uchar)uVar23;\n          }\n          p = p + image->number_channels;\n          q = q + quantum_info->pad + 4;\n          MVar39 = MVar39 + 1;\n        } while (MVar39 != number_pixels);\n        return;\n      }\n      goto LAB_002734da;\n    }\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if ((long)number_pixels < 1) {\n        return;\n      }\n      MVar39 = 0;\n      do {\n        pPVar5 = image->channel_map;\n        dVar6 = (double)(fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                        fVar17 * p[pPVar5[2].offset]) * (quantum_info->state).inverse_scale +\n                quantum_info->minimum;\n        uVar25 = (uchar)((ulong)dVar6 >> 8);\n        uVar28 = (uchar)((ulong)dVar6 >> 0x10);\n        uVar29 = (uchar)((ulong)dVar6 >> 0x18);\n        uVar30 = (uchar)((ulong)dVar6 >> 0x20);\n        uVar31 = (uchar)((ulong)dVar6 >> 0x28);\n        uVar32 = (uchar)((ulong)dVar6 >> 0x30);\n        uVar21 = (uchar)((ulong)dVar6 >> 0x38);\n        if (quantum_info->endian == LSBEndian) {\n          *q = SUB81(dVar6,0);\n          q[1] = uVar25;\n          q[2] = uVar28;\n          q[3] = uVar29;\n          q[4] = uVar30;\n          q[5] = uVar31;\n          q[6] = uVar32;\n          q[7] = uVar21;\n        }\n        else {\n          *q = uVar21;\n          q[1] = uVar32;\n          q[2] = uVar31;\n          q[3] = uVar30;\n          q[4] = uVar29;\n          q[5] = uVar28;\n          q[6] = uVar25;\n          q[7] = SUB81(dVar6,0);\n        }\n        QVar41 = fVar42;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          QVar41 = p[image->channel_map[4].offset];\n        }\n        dVar6 = (double)QVar41 * (quantum_info->state).inverse_scale + quantum_info->minimum;\n        uVar21 = (uchar)((ulong)dVar6 >> 8);\n        uVar25 = (uchar)((ulong)dVar6 >> 0x10);\n        uVar31 = (uchar)((ulong)dVar6 >> 0x18);\n        uVar32 = (uchar)((ulong)dVar6 >> 0x20);\n        uVar30 = (uchar)((ulong)dVar6 >> 0x28);\n        uVar29 = (uchar)((ulong)dVar6 >> 0x30);\n        uVar28 = (uchar)((ulong)dVar6 >> 0x38);\n        if (quantum_info->endian == LSBEndian) {\n          q[8] = SUB81(dVar6,0);\n          q[9] = uVar21;\n          q[10] = uVar25;\n          q[0xb] = uVar31;\n          q[0xc] = uVar32;\n          q[0xd] = uVar30;\n          q[0xe] = uVar29;\n          q[0xf] = uVar28;\n        }\n        else {\n          q[8] = uVar28;\n          q[9] = uVar29;\n          q[10] = uVar30;\n          q[0xb] = uVar32;\n          q[0xc] = uVar31;\n          q[0xd] = uVar25;\n          q[0xe] = uVar21;\n          q[0xf] = SUB81(dVar6,0);\n        }\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 0x10;\n        MVar39 = MVar39 + 1;\n      } while (MVar39 != number_pixels);\n      return;\n    }\n  }\n  if (0x40 < uVar36) {\n    uVar36 = 0;\n  }\n  uVar38 = (2L << ((char)uVar36 - 1U & 0x3f)) - 1;\nLAB_002734e9:\n  if (0 < (long)number_pixels) {\n    MVar39 = 0;\n    do {\n      pPVar5 = image->channel_map;\n      fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n               fVar17 * p[pPVar5[2].offset];\n      if (NAN(fVar42)) {\n        uVar36 = 0;\n      }\n      else {\n        uVar36 = 0;\n        if (0.0 < fVar42) {\n          dVar7 = ((double)fVar42 * (double)uVar38) / dVar6;\n          uVar36 = 0xffffffffffffffff;\n          if (dVar7 < dVar11) {\n            dVar7 = dVar7 + dVar9;\n            if (dVar10 <= dVar7) {\n              uVar36 = (long)(dVar7 - dVar10) ^ 0x8000000000000000;\n            }\n            else {\n              uVar36 = (ulong)dVar7;\n            }\n          }\n        }\n      }\n      if ((quantum_info->state).bits == 0) {\n        (quantum_info->state).bits = 8;\n      }\n      sVar34 = quantum_info->depth;\n      if (0 < (long)sVar34) {\n        uVar27 = (quantum_info->state).bits;\n        do {\n          uVar26 = sVar34;\n          if (uVar27 <= sVar34) {\n            uVar26 = uVar27;\n          }\n          uVar35 = sVar34 - uVar26;\n          sVar34 = 0;\n          if (-1 < (long)uVar35) {\n            sVar34 = uVar35;\n          }\n          if (uVar27 == 8) {\n            *q = 0;\n          }\n          uVar27 = uVar27 - uVar26;\n          *q = *q | (byte)((~(-1L << ((byte)uVar26 & 0x3f)) & uVar36 >> ((byte)sVar34 & 0x3f)) <<\n                          ((byte)uVar27 & 0x3f));\n          if (uVar27 == 0) {\n            q = q + 1;\n            uVar27 = 8;\n          }\n        } while (0 < (long)uVar35);\n        (quantum_info->state).bits = uVar27;\n      }\n      fVar42 = _DAT_003fa400;\n      if (image->channel_map[4].traits == UndefinedPixelTrait) {\nLAB_002745f5:\n        dVar7 = ((double)fVar42 * (double)uVar38) / DAT_003f95f8;\n        uVar36 = 0xffffffffffffffff;\n        if (dVar7 < DAT_003fa3a0) {\n          dVar7 = dVar7 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar7) {\n            uVar36 = (long)(dVar7 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar36 = (ulong)dVar7;\n          }\n        }\n      }\n      else {\n        fVar42 = p[image->channel_map[4].offset];\n        if (NAN(fVar42)) {\n          uVar36 = 0;\n        }\n        else {\n          uVar36 = 0;\n          if (0.0 < fVar42) goto LAB_002745f5;\n        }\n      }\n      if ((quantum_info->state).bits == 0) {\n        (quantum_info->state).bits = 8;\n      }\n      sVar34 = quantum_info->depth;\n      if (0 < (long)sVar34) {\n        uVar27 = (quantum_info->state).bits;\n        do {\n          uVar26 = sVar34;\n          if (uVar27 <= sVar34) {\n            uVar26 = uVar27;\n          }\n          uVar35 = sVar34 - uVar26;\n          sVar34 = 0;\n          if (-1 < (long)uVar35) {\n            sVar34 = uVar35;\n          }\n          if (uVar27 == 8) {\n            *q = 0;\n          }\n          uVar27 = uVar27 - uVar26;\n          *q = *q | (byte)((~(-1L << ((byte)uVar26 & 0x3f)) & uVar36 >> ((byte)sVar34 & 0x3f)) <<\n                          ((byte)uVar27 & 0x3f));\n          if (uVar27 == 0) {\n            q = q + 1;\n            uVar27 = 8;\n          }\n        } while (0 < (long)uVar35);\n        (quantum_info->state).bits = uVar27;\n      }\n      p = p + image->number_channels;\n      q = q + quantum_info->pad;\n      MVar39 = MVar39 + 1;\n    } while (number_pixels != MVar39);\n  }\n  return;\n}" primitive_type (function_declarator "ExportGrayAlphaQuantum\n               (Image *image,QuantumInfo *quantum_info,MagickSizeType number_pixels,Quantum *p,\n               uchar *q,ExceptionInfo *exception)" identifier (parameter_list "(Image *image,QuantumInfo *quantum_info,MagickSizeType number_pixels,Quantum *p,\n               uchar *q,ExceptionInfo *exception)" ( (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 "Quantum *p" type_identifier (pointer_declarator "*p" * identifier)) , (parameter_declaration "uchar *q" type_identifier (pointer_declarator "*q" * identifier)) , (parameter_declaration "ExceptionInfo *exception" type_identifier (pointer_declarator "*exception" * identifier)) ))) (compound_statement "{\n  byte *pbVar1;\n  bool bVar2;\n  size_t sVar3;\n  size_t sVar4;\n  PixelChannelMap *pPVar5;\n  double dVar6;\n  double dVar7;\n  bool bVar8;\n  double dVar9;\n  double dVar10;\n  double dVar11;\n  double dVar12;\n  double dVar13;\n  double dVar14;\n  float fVar15;\n  float fVar16;\n  float fVar17;\n  double dVar18;\n  byte bVar19;\n  byte bVar20;\n  uchar uVar21;\n  ushort uVar22;\n  undefined2 uVar23;\n  uchar uVar25;\n  undefined4 uVar24;\n  ulong uVar26;\n  ulong uVar27;\n  uchar uVar28;\n  uint uVar33;\n  size_t sVar34;\n  ulong uVar35;\n  ulong uVar36;\n  long lVar37;\n  ulong uVar38;\n  MagickSizeType MVar39;\n  bool bVar40;\n  Quantum QVar41;\n  float fVar42;\n  float fVar43;\n  uchar uVar29;\n  uchar uVar30;\n  uchar uVar31;\n  uchar uVar32;\n  \n  dVar18 = DAT_0042f2e8;\n  fVar17 = DAT_0041abe0;\n  fVar16 = DAT_0041abdc;\n  fVar15 = DAT_0041abd8;\n  dVar14 = DAT_00404938;\n  dVar13 = DAT_00404930;\n  dVar12 = DAT_00404928;\n  dVar7 = DAT_00404920;\n  fVar42 = _DAT_003fa400;\n  dVar11 = DAT_003fa3a0;\n  dVar10 = DAT_003f9c40;\n  dVar9 = DAT_003f9c28;\n  dVar6 = DAT_003f95f8;\n  if (exception == (ExceptionInfo *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x89f,\n                  "ExportGrayAlphaQuantum");\n  }\n  if (exception->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x8a0,\n                  "ExportGrayAlphaQuantum");\n  }\n  uVar36 = quantum_info->depth;\n  if (uVar36 == 8) {\n    MVar39 = 0;\n    if ((long)number_pixels < 1) {\n      return;\n    }\n    do {\n      pPVar5 = image->channel_map;\n      fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n               fVar17 * p[pPVar5[2].offset];\n      if (NAN(fVar42)) {\n        uVar21 = '\0';\n      }\n      else {\n        uVar21 = '\0';\n        if ((0.0 < fVar42) && (dVar6 = (double)fVar42 / dVar13, uVar21 = 0xff, dVar6 < dVar14)) {\n          uVar21 = (uchar)(int)(dVar6 + dVar9);\n        }\n      }\n      *q = uVar21;\n      uVar21 = 0xff;\n      if (image->channel_map[4].traits != UndefinedPixelTrait) {\n        fVar42 = p[image->channel_map[4].offset];\n        if (NAN(fVar42)) {\n          uVar21 = '\0';\n        }\n        else {\n          uVar21 = '\0';\n          if ((0.0 < fVar42) && (uVar21 = 0xff, (double)fVar42 / DAT_00404930 < DAT_00404938)) {\n            uVar21 = (uchar)(int)((double)fVar42 / DAT_00404930 + DAT_003f9c28);\n          }\n        }\n      }\n      q[1] = uVar21;\n      p = p + image->number_channels;\n      q = q + quantum_info->pad + 2;\n      MVar39 = MVar39 + 1;\n    } while (MVar39 != number_pixels);\n    return;\n  }\n  if (uVar36 < 9) {\n    if (uVar36 == 1) {\n      bVar40 = quantum_info->min_is_white == MagickFalse;\n      bVar8 = !bVar40;\n      if (number_pixels != 3 && -1 < (long)(number_pixels - 3)) {\n        pbVar1 = q + (number_pixels - 4 >> 2) + 1;\n        do {\n          *q = 0;\n          pPVar5 = image->channel_map;\n          uVar33 = (uint)bVar40;\n          if (DAT_003fc580 <\n              fVar17 * p[pPVar5[2].offset] +\n              fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset]) {\n            uVar33 = (uint)bVar8;\n          }\n          bVar20 = (byte)(uVar33 << 7);\n          *q = bVar20;\n          bVar19 = 0x40;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            if (p[image->channel_map[4].offset] == _DAT_003fa400) {\n              bVar19 = 0x40;\n            }\n            else {\n              bVar19 = 0;\n            }\n          }\n          bVar19 = bVar19 | bVar20;\n          *q = bVar19;\n          sVar34 = image->number_channels;\n          pPVar5 = image->channel_map;\n          uVar33 = (uint)bVar40;\n          if (DAT_003fc580 <\n              fVar17 * p[sVar34 + pPVar5[2].offset] +\n              fVar15 * p[sVar34 + pPVar5->offset] + fVar16 * p[sVar34 + pPVar5[1].offset]) {\n            uVar33 = (uint)bVar8;\n          }\n          bVar19 = bVar19 | (byte)(uVar33 << 5);\n          *q = bVar19;\n          bVar20 = 0x10;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            if (p[sVar34 + image->channel_map[4].offset] == _DAT_003fa400) {\n              bVar20 = 0x10;\n            }\n            else {\n              bVar20 = 0;\n            }\n          }\n          bVar19 = bVar19 | bVar20;\n          *q = bVar19;\n          sVar4 = image->number_channels;\n          pPVar5 = image->channel_map;\n          bVar2 = bVar40;\n          if (DAT_003fc580 <\n              fVar17 * p[sVar34 + sVar4 + pPVar5[2].offset] +\n              fVar15 * p[sVar34 + sVar4 + pPVar5->offset] +\n              fVar16 * p[sVar34 + sVar4 + pPVar5[1].offset]) {\n            bVar2 = bVar8;\n          }\n          bVar19 = bVar19 | bVar2 * '\b';\n          *q = bVar19;\n          bVar20 = 4;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            if (p[sVar34 + sVar4 + image->channel_map[4].offset] == _DAT_003fa400) {\n              bVar20 = 4;\n            }\n            else {\n              bVar20 = 0;\n            }\n          }\n          bVar19 = bVar19 | bVar20;\n          *q = bVar19;\n          sVar3 = image->number_channels;\n          pPVar5 = image->channel_map;\n          bVar2 = bVar8;\n          if (DAT_0041abe0 * p[sVar34 + sVar4 + sVar3 + pPVar5[2].offset] +\n              DAT_0041abd8 * p[sVar34 + sVar4 + sVar3 + pPVar5->offset] +\n              DAT_0041abdc * p[sVar34 + sVar4 + sVar3 + pPVar5[1].offset] <= DAT_003fc580) {\n            bVar2 = bVar40;\n          }\n          bVar19 = bVar19 | bVar2 * '\x02';\n          *q = bVar19;\n          QVar41 = _DAT_003fa400;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            QVar41 = p[sVar34 + sVar4 + sVar3 + image->channel_map[4].offset];\n          }\n          *q = bVar19 | QVar41 == _DAT_003fa400;\n          p = p + sVar34 + sVar4 + sVar3 + image->number_channels;\n          q = q + 1;\n        } while (q != pbVar1);\n      }\n      if ((number_pixels & 3) == 0) {\n        return;\n      }\n      *q = 0;\n      fVar17 = DAT_0041abe0;\n      fVar16 = DAT_0041abdc;\n      fVar15 = DAT_0041abd8;\n      fVar42 = _DAT_003fa400;\n      bVar19 = 7;\n      lVar37 = 0;\n      do {\n        pPVar5 = image->channel_map;\n        bVar2 = bVar40;\n        if (DAT_003fc580 <\n            fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] + fVar17 * p[pPVar5[2].offset]\n           ) {\n          bVar2 = bVar8;\n        }\n        bVar20 = bVar2 << (bVar19 & 0x1f) | *q;\n        *q = bVar20;\n        QVar41 = fVar42;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          QVar41 = p[image->channel_map[4].offset];\n        }\n        uVar33 = (uint)(!NAN(QVar41) && !NAN(_DAT_003fa400));\n        if (QVar41 != _DAT_003fa400) {\n          uVar33 = 0;\n        }\n        *q = (byte)(uVar33 << (bVar19 - 1 & 0x1f)) | bVar20;\n        p = p + image->number_channels;\n        lVar37 = lVar37 + 2;\n        bVar19 = bVar19 - 2;\n      } while (lVar37 <= (long)(ulong)((uint)number_pixels & 3));\n      return;\n    }\n    if (uVar36 == 4) {\n      pbVar1 = q + number_pixels;\n      if ((long)number_pixels < 1) {\n        return;\n      }\n      do {\n        pPVar5 = image->channel_map;\n        fVar43 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                 fVar17 * p[pPVar5[2].offset];\n        if (NAN(fVar43)) {\n          bVar19 = 0;\n        }\n        else {\n          bVar19 = 0;\n          if (0.0 < fVar43) {\n            dVar6 = (double)fVar43 / dVar13;\n            bVar19 = 0xff;\n            if (dVar6 < dVar14) {\n              bVar19 = (byte)(int)(dVar6 + dVar9);\n            }\n          }\n        }\n        *q = bVar19 & 0xf0;\n        QVar41 = fVar42;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          QVar41 = p[image->channel_map[4].offset];\n        }\n        *q = bVar19 & 0xf0 | (byte)(int)((double)QVar41 * dVar18 + dVar9) & 0xf;\n        p = p + image->number_channels;\n        q = q + 1;\n      } while (q != pbVar1);\n      return;\n    }\nLAB_002734da:\n    uVar38 = 0;\n    if (uVar36 == 0) goto LAB_002734e9;\n  }\n  else {\n    if (uVar36 == 0x20) {\n      if (quantum_info->format == FloatingPointQuantumFormat) {\n        if ((long)number_pixels < 1) {\n          return;\n        }\n        MVar39 = 0;\n        do {\n          pPVar5 = image->channel_map;\n          fVar43 = (float)((double)(fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                                   fVar17 * p[pPVar5[2].offset]) *\n                           (quantum_info->state).inverse_scale + quantum_info->minimum);\n          uVar25 = (uchar)((uint)fVar43 >> 8);\n          uVar31 = (uchar)((uint)fVar43 >> 0x10);\n          uVar21 = (uchar)((uint)fVar43 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            *q = SUB41(fVar43,0);\n            q[1] = uVar25;\n            q[2] = uVar31;\n            q[3] = uVar21;\n          }\n          else {\n            *q = uVar21;\n            q[1] = uVar31;\n            q[2] = uVar25;\n            q[3] = SUB41(fVar43,0);\n          }\n          QVar41 = fVar42;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            QVar41 = p[image->channel_map[4].offset];\n          }\n          fVar43 = (float)((double)QVar41 * (quantum_info->state).inverse_scale +\n                          quantum_info->minimum);\n          uVar21 = (uchar)((uint)fVar43 >> 8);\n          uVar25 = (uchar)((uint)fVar43 >> 0x10);\n          uVar31 = (uchar)((uint)fVar43 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            q[4] = SUB41(fVar43,0);\n            q[5] = uVar21;\n            q[6] = uVar25;\n            q[7] = uVar31;\n          }\n          else {\n            q[4] = uVar31;\n            q[5] = uVar25;\n            q[6] = uVar21;\n            q[7] = SUB41(fVar43,0);\n          }\n          p = p + image->number_channels;\n          q = q + quantum_info->pad + 8;\n          MVar39 = MVar39 + 1;\n        } while (MVar39 != number_pixels);\n        return;\n      }\n      MVar39 = 0;\n      if ((long)number_pixels < 1) {\n        return;\n      }\n      do {\n        pPVar5 = image->channel_map;\n        fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                 fVar17 * p[pPVar5[2].offset];\n        if (NAN(fVar42)) {\n          uVar24 = 0;\n        }\n        else {\n          uVar24 = 0;\n          if ((0.0 < fVar42) && (uVar24 = 0xffffffff, (double)fVar42 * dVar7 < dVar12)) {\n            uVar24 = (undefined4)(long)((double)fVar42 * dVar7 + dVar9);\n          }\n        }\n        uVar21 = (uchar)((uint)uVar24 >> 8);\n        uVar25 = (uchar)((uint)uVar24 >> 0x10);\n        uVar31 = (uchar)((uint)uVar24 >> 0x18);\n        if (quantum_info->endian == LSBEndian) {\n          *q = (uchar)uVar24;\n          q[1] = uVar21;\n          q[2] = uVar25;\n          q[3] = uVar31;\n        }\n        else {\n          *q = uVar31;\n          q[1] = uVar25;\n          q[2] = uVar21;\n          q[3] = (uchar)uVar24;\n        }\n        uVar24 = 0xffffffff;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          fVar42 = p[image->channel_map[4].offset];\n          if (NAN(fVar42)) {\n            uVar24 = 0;\n          }\n          else {\n            uVar24 = 0;\n            if ((0.0 < fVar42) &&\n               (uVar24 = 0xffffffff, (double)fVar42 * DAT_00404920 < DAT_00404928)) {\n              uVar24 = (int)(long)((double)fVar42 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }\n        uVar21 = (uchar)((uint)uVar24 >> 8);\n        uVar25 = (uchar)((uint)uVar24 >> 0x10);\n        uVar31 = (uchar)((uint)uVar24 >> 0x18);\n        if (quantum_info->endian == LSBEndian) {\n          q[4] = (uchar)uVar24;\n          q[5] = uVar21;\n          q[6] = uVar25;\n          q[7] = uVar31;\n        }\n        else {\n          q[4] = uVar31;\n          q[5] = uVar25;\n          q[6] = uVar21;\n          q[7] = (uchar)uVar24;\n        }\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 8;\n        MVar39 = MVar39 + 1;\n      } while (MVar39 != number_pixels);\n      return;\n    }\n    if (uVar36 != 0x40) {\n      if (uVar36 == 0x10) {\n        if (quantum_info->format == FloatingPointQuantumFormat) {\n          if ((long)number_pixels < 1) {\n            return;\n          }\n          MVar39 = 0;\n          do {\n            pPVar5 = image->channel_map;\n            uVar22 = SinglePrecisionToHalf\n                               ((float)((double)(DAT_0041abdc * p[pPVar5[1].offset] +\n                                                 DAT_0041abd8 * p[pPVar5->offset] +\n                                                DAT_0041abe0 * p[pPVar5[2].offset]) * DAT_003f9c60))\n            ;\n            uVar21 = (uchar)(uVar22 >> 8);\n            if (quantum_info->endian == LSBEndian) {\n              *q = (uchar)uVar22;\n              q[1] = uVar21;\n            }\n            else {\n              *q = uVar21;\n              q[1] = (uchar)uVar22;\n            }\n            QVar41 = _DAT_003fa400;\n            if (image->channel_map[4].traits != UndefinedPixelTrait) {\n              QVar41 = p[image->channel_map[4].offset];\n            }\n            uVar22 = SinglePrecisionToHalf((float)((double)QVar41 * DAT_003f9c60));\n            uVar21 = (uchar)(uVar22 >> 8);\n            if (quantum_info->endian == LSBEndian) {\n              q[2] = (uchar)uVar22;\n              q[3] = uVar21;\n            }\n            else {\n              q[2] = uVar21;\n              q[3] = (uchar)uVar22;\n            }\n            p = p + image->number_channels;\n            q = q + quantum_info->pad + 4;\n            MVar39 = MVar39 + 1;\n          } while (MVar39 != number_pixels);\n          return;\n        }\n        MVar39 = 0;\n        if ((long)number_pixels < 1) {\n          return;\n        }\n        do {\n          pPVar5 = image->channel_map;\n          fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                   fVar17 * p[pPVar5[2].offset];\n          if (NAN(fVar42)) {\n            uVar23 = 0;\n          }\n          else {\n            uVar23 = 0;\n            if ((0.0 < fVar42) && (uVar23 = 0xffff, fVar42 < _DAT_003fa400)) {\n              uVar23 = (undefined2)(int)((double)fVar42 + dVar9);\n            }\n          }\n          uVar21 = (uchar)((ushort)uVar23 >> 8);\n          if (quantum_info->endian == LSBEndian) {\n            *q = (uchar)uVar23;\n            q[1] = uVar21;\n          }\n          else {\n            *q = uVar21;\n            q[1] = (uchar)uVar23;\n          }\n          uVar23 = 0xffff;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            fVar42 = p[image->channel_map[4].offset];\n            if (NAN(fVar42)) {\n              uVar23 = 0;\n            }\n            else {\n              uVar23 = 0;\n              if ((0.0 < fVar42) && (uVar23 = 0xffff, fVar42 < _DAT_003fa400)) {\n                uVar23 = (short)(int)((double)fVar42 + dVar9);\n              }\n            }\n          }\n          uVar21 = (uchar)((ushort)uVar23 >> 8);\n          if (quantum_info->endian == LSBEndian) {\n            q[2] = (uchar)uVar23;\n            q[3] = uVar21;\n          }\n          else {\n            q[2] = uVar21;\n            q[3] = (uchar)uVar23;\n          }\n          p = p + image->number_channels;\n          q = q + quantum_info->pad + 4;\n          MVar39 = MVar39 + 1;\n        } while (MVar39 != number_pixels);\n        return;\n      }\n      goto LAB_002734da;\n    }\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if ((long)number_pixels < 1) {\n        return;\n      }\n      MVar39 = 0;\n      do {\n        pPVar5 = image->channel_map;\n        dVar6 = (double)(fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                        fVar17 * p[pPVar5[2].offset]) * (quantum_info->state).inverse_scale +\n                quantum_info->minimum;\n        uVar25 = (uchar)((ulong)dVar6 >> 8);\n        uVar28 = (uchar)((ulong)dVar6 >> 0x10);\n        uVar29 = (uchar)((ulong)dVar6 >> 0x18);\n        uVar30 = (uchar)((ulong)dVar6 >> 0x20);\n        uVar31 = (uchar)((ulong)dVar6 >> 0x28);\n        uVar32 = (uchar)((ulong)dVar6 >> 0x30);\n        uVar21 = (uchar)((ulong)dVar6 >> 0x38);\n        if (quantum_info->endian == LSBEndian) {\n          *q = SUB81(dVar6,0);\n          q[1] = uVar25;\n          q[2] = uVar28;\n          q[3] = uVar29;\n          q[4] = uVar30;\n          q[5] = uVar31;\n          q[6] = uVar32;\n          q[7] = uVar21;\n        }\n        else {\n          *q = uVar21;\n          q[1] = uVar32;\n          q[2] = uVar31;\n          q[3] = uVar30;\n          q[4] = uVar29;\n          q[5] = uVar28;\n          q[6] = uVar25;\n          q[7] = SUB81(dVar6,0);\n        }\n        QVar41 = fVar42;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          QVar41 = p[image->channel_map[4].offset];\n        }\n        dVar6 = (double)QVar41 * (quantum_info->state).inverse_scale + quantum_info->minimum;\n        uVar21 = (uchar)((ulong)dVar6 >> 8);\n        uVar25 = (uchar)((ulong)dVar6 >> 0x10);\n        uVar31 = (uchar)((ulong)dVar6 >> 0x18);\n        uVar32 = (uchar)((ulong)dVar6 >> 0x20);\n        uVar30 = (uchar)((ulong)dVar6 >> 0x28);\n        uVar29 = (uchar)((ulong)dVar6 >> 0x30);\n        uVar28 = (uchar)((ulong)dVar6 >> 0x38);\n        if (quantum_info->endian == LSBEndian) {\n          q[8] = SUB81(dVar6,0);\n          q[9] = uVar21;\n          q[10] = uVar25;\n          q[0xb] = uVar31;\n          q[0xc] = uVar32;\n          q[0xd] = uVar30;\n          q[0xe] = uVar29;\n          q[0xf] = uVar28;\n        }\n        else {\n          q[8] = uVar28;\n          q[9] = uVar29;\n          q[10] = uVar30;\n          q[0xb] = uVar32;\n          q[0xc] = uVar31;\n          q[0xd] = uVar25;\n          q[0xe] = uVar21;\n          q[0xf] = SUB81(dVar6,0);\n        }\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 0x10;\n        MVar39 = MVar39 + 1;\n      } while (MVar39 != number_pixels);\n      return;\n    }\n  }\n  if (0x40 < uVar36) {\n    uVar36 = 0;\n  }\n  uVar38 = (2L << ((char)uVar36 - 1U & 0x3f)) - 1;\nLAB_002734e9:\n  if (0 < (long)number_pixels) {\n    MVar39 = 0;\n    do {\n      pPVar5 = image->channel_map;\n      fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n               fVar17 * p[pPVar5[2].offset];\n      if (NAN(fVar42)) {\n        uVar36 = 0;\n      }\n      else {\n        uVar36 = 0;\n        if (0.0 < fVar42) {\n          dVar7 = ((double)fVar42 * (double)uVar38) / dVar6;\n          uVar36 = 0xffffffffffffffff;\n          if (dVar7 < dVar11) {\n            dVar7 = dVar7 + dVar9;\n            if (dVar10 <= dVar7) {\n              uVar36 = (long)(dVar7 - dVar10) ^ 0x8000000000000000;\n            }\n            else {\n              uVar36 = (ulong)dVar7;\n            }\n          }\n        }\n      }\n      if ((quantum_info->state).bits == 0) {\n        (quantum_info->state).bits = 8;\n      }\n      sVar34 = quantum_info->depth;\n      if (0 < (long)sVar34) {\n        uVar27 = (quantum_info->state).bits;\n        do {\n          uVar26 = sVar34;\n          if (uVar27 <= sVar34) {\n            uVar26 = uVar27;\n          }\n          uVar35 = sVar34 - uVar26;\n          sVar34 = 0;\n          if (-1 < (long)uVar35) {\n            sVar34 = uVar35;\n          }\n          if (uVar27 == 8) {\n            *q = 0;\n          }\n          uVar27 = uVar27 - uVar26;\n          *q = *q | (byte)((~(-1L << ((byte)uVar26 & 0x3f)) & uVar36 >> ((byte)sVar34 & 0x3f)) <<\n                          ((byte)uVar27 & 0x3f));\n          if (uVar27 == 0) {\n            q = q + 1;\n            uVar27 = 8;\n          }\n        } while (0 < (long)uVar35);\n        (quantum_info->state).bits = uVar27;\n      }\n      fVar42 = _DAT_003fa400;\n      if (image->channel_map[4].traits == UndefinedPixelTrait) {\nLAB_002745f5:\n        dVar7 = ((double)fVar42 * (double)uVar38) / DAT_003f95f8;\n        uVar36 = 0xffffffffffffffff;\n        if (dVar7 < DAT_003fa3a0) {\n          dVar7 = dVar7 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar7) {\n            uVar36 = (long)(dVar7 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar36 = (ulong)dVar7;\n          }\n        }\n      }\n      else {\n        fVar42 = p[image->channel_map[4].offset];\n        if (NAN(fVar42)) {\n          uVar36 = 0;\n        }\n        else {\n          uVar36 = 0;\n          if (0.0 < fVar42) goto LAB_002745f5;\n        }\n      }\n      if ((quantum_info->state).bits == 0) {\n        (quantum_info->state).bits = 8;\n      }\n      sVar34 = quantum_info->depth;\n      if (0 < (long)sVar34) {\n        uVar27 = (quantum_info->state).bits;\n        do {\n          uVar26 = sVar34;\n          if (uVar27 <= sVar34) {\n            uVar26 = uVar27;\n          }\n          uVar35 = sVar34 - uVar26;\n          sVar34 = 0;\n          if (-1 < (long)uVar35) {\n            sVar34 = uVar35;\n          }\n          if (uVar27 == 8) {\n            *q = 0;\n          }\n          uVar27 = uVar27 - uVar26;\n          *q = *q | (byte)((~(-1L << ((byte)uVar26 & 0x3f)) & uVar36 >> ((byte)sVar34 & 0x3f)) <<\n                          ((byte)uVar27 & 0x3f));\n          if (uVar27 == 0) {\n            q = q + 1;\n            uVar27 = 8;\n          }\n        } while (0 < (long)uVar35);\n        (quantum_info->state).bits = uVar27;\n      }\n      p = p + image->number_channels;\n      q = q + quantum_info->pad;\n      MVar39 = MVar39 + 1;\n    } while (number_pixels != MVar39);\n  }\n  return;\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "size_t sVar3;" primitive_type identifier ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "PixelChannelMap *pPVar5;" type_identifier (pointer_declarator "*pPVar5" * identifier) ;) (declaration "double dVar6;" primitive_type identifier ;) (declaration "double dVar7;" primitive_type identifier ;) (declaration "bool bVar8;" primitive_type identifier ;) (declaration "double dVar9;" primitive_type identifier ;) (declaration "double dVar10;" primitive_type identifier ;) (declaration "double dVar11;" primitive_type identifier ;) (declaration "double dVar12;" primitive_type identifier ;) (declaration "double dVar13;" primitive_type identifier ;) (declaration "double dVar14;" primitive_type identifier ;) (declaration "float fVar15;" primitive_type identifier ;) (declaration "float fVar16;" primitive_type identifier ;) (declaration "float fVar17;" primitive_type identifier ;) (declaration "double dVar18;" primitive_type identifier ;) (declaration "byte bVar19;" type_identifier identifier ;) (declaration "byte bVar20;" type_identifier identifier ;) (declaration "uchar uVar21;" type_identifier identifier ;) (declaration "ushort uVar22;" type_identifier identifier ;) (declaration "undefined2 uVar23;" type_identifier identifier ;) (declaration "uchar uVar25;" type_identifier identifier ;) (declaration "undefined4 uVar24;" type_identifier identifier ;) (declaration "ulong uVar26;" type_identifier identifier ;) (declaration "ulong uVar27;" type_identifier identifier ;) (declaration "uchar uVar28;" type_identifier identifier ;) (declaration "uint uVar33;" type_identifier identifier ;) (declaration "size_t sVar34;" primitive_type identifier ;) (declaration "ulong uVar35;" type_identifier identifier ;) (declaration "ulong uVar36;" type_identifier identifier ;) (declaration "long lVar37;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar38;" type_identifier identifier ;) (declaration "MagickSizeType MVar39;" type_identifier identifier ;) (declaration "bool bVar40;" primitive_type identifier ;) (declaration "Quantum QVar41;" type_identifier identifier ;) (declaration "float fVar42;" primitive_type identifier ;) (declaration "float fVar43;" primitive_type identifier ;) (declaration "uchar uVar29;" type_identifier identifier ;) (declaration "uchar uVar30;" type_identifier identifier ;) (declaration "uchar uVar31;" type_identifier identifier ;) (declaration "uchar uVar32;" type_identifier identifier ;) (expression_statement "dVar18 = DAT_0042f2e8;" (assignment_expression "dVar18 = DAT_0042f2e8" identifier = identifier) ;) (expression_statement "fVar17 = DAT_0041abe0;" (assignment_expression "fVar17 = DAT_0041abe0" identifier = identifier) ;) (expression_statement "fVar16 = DAT_0041abdc;" (assignment_expression "fVar16 = DAT_0041abdc" identifier = identifier) ;) (expression_statement "fVar15 = DAT_0041abd8;" (assignment_expression "fVar15 = DAT_0041abd8" identifier = identifier) ;) (expression_statement "dVar14 = DAT_00404938;" (assignment_expression "dVar14 = DAT_00404938" identifier = identifier) ;) (expression_statement "dVar13 = DAT_00404930;" (assignment_expression "dVar13 = DAT_00404930" identifier = identifier) ;) (expression_statement "dVar12 = DAT_00404928;" (assignment_expression "dVar12 = DAT_00404928" identifier = identifier) ;) (expression_statement "dVar7 = DAT_00404920;" (assignment_expression "dVar7 = DAT_00404920" identifier = identifier) ;) (expression_statement "fVar42 = _DAT_003fa400;" (assignment_expression "fVar42 = _DAT_003fa400" identifier = identifier) ;) (expression_statement "dVar11 = DAT_003fa3a0;" (assignment_expression "dVar11 = DAT_003fa3a0" identifier = identifier) ;) (expression_statement "dVar10 = DAT_003f9c40;" (assignment_expression "dVar10 = DAT_003f9c40" identifier = identifier) ;) (expression_statement "dVar9 = DAT_003f9c28;" (assignment_expression "dVar9 = DAT_003f9c28" identifier = identifier) ;) (expression_statement "dVar6 = DAT_003f95f8;" (assignment_expression "dVar6 = DAT_003f95f8" identifier = identifier) ;) (if_statement "if (exception == (ExceptionInfo *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x89f,\n                  "ExportGrayAlphaQuantum");\n  }" if (parenthesized_expression "(exception == (ExceptionInfo *)0x0)" ( (binary_expression "exception == (ExceptionInfo *)0x0" identifier == (cast_expression "(ExceptionInfo *)0x0" ( (type_descriptor "ExceptionInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x89f,\n                  "ExportGrayAlphaQuantum");\n  }" { comment (expression_statement "__assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x89f,\n                  "ExportGrayAlphaQuantum");" (call_expression "__assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x89f,\n                  "ExportGrayAlphaQuantum")" identifier (argument_list "("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x89f,\n                  "ExportGrayAlphaQuantum")" ( (string_literal ""exception != (ExceptionInfo *) NULL"" " string_content ") , (string_literal ""MagickCore/quantum-export.c"" " string_content ") , number_literal , (string_literal ""ExportGrayAlphaQuantum"" " string_content ") ))) ;) })) (if_statement "if (exception->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x8a0,\n                  "ExportGrayAlphaQuantum");\n  }" if (parenthesized_expression "(exception->signature != 0xabacadab)" ( (binary_expression "exception->signature != 0xabacadab" (field_expression "exception->signature" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x8a0,\n                  "ExportGrayAlphaQuantum");\n  }" { comment (expression_statement "__assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x8a0,\n                  "ExportGrayAlphaQuantum");" (call_expression "__assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x8a0,\n                  "ExportGrayAlphaQuantum")" identifier (argument_list "("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x8a0,\n                  "ExportGrayAlphaQuantum")" ( (string_literal ""exception->signature == MagickCoreSignature"" " string_content ") , (string_literal ""MagickCore/quantum-export.c"" " string_content ") , number_literal , (string_literal ""ExportGrayAlphaQuantum"" " string_content ") ))) ;) })) (expression_statement "uVar36 = quantum_info->depth;" (assignment_expression "uVar36 = quantum_info->depth" identifier = (field_expression "quantum_info->depth" identifier -> field_identifier)) ;) (if_statement "if (uVar36 == 8) {\n    MVar39 = 0;\n    if ((long)number_pixels < 1) {\n      return;\n    }\n    do {\n      pPVar5 = image->channel_map;\n      fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n               fVar17 * p[pPVar5[2].offset];\n      if (NAN(fVar42)) {\n        uVar21 = '\0';\n      }\n      else {\n        uVar21 = '\0';\n        if ((0.0 < fVar42) && (dVar6 = (double)fVar42 / dVar13, uVar21 = 0xff, dVar6 < dVar14)) {\n          uVar21 = (uchar)(int)(dVar6 + dVar9);\n        }\n      }\n      *q = uVar21;\n      uVar21 = 0xff;\n      if (image->channel_map[4].traits != UndefinedPixelTrait) {\n        fVar42 = p[image->channel_map[4].offset];\n        if (NAN(fVar42)) {\n          uVar21 = '\0';\n        }\n        else {\n          uVar21 = '\0';\n          if ((0.0 < fVar42) && (uVar21 = 0xff, (double)fVar42 / DAT_00404930 < DAT_00404938)) {\n            uVar21 = (uchar)(int)((double)fVar42 / DAT_00404930 + DAT_003f9c28);\n          }\n        }\n      }\n      q[1] = uVar21;\n      p = p + image->number_channels;\n      q = q + quantum_info->pad + 2;\n      MVar39 = MVar39 + 1;\n    } while (MVar39 != number_pixels);\n    return;\n  }" if (parenthesized_expression "(uVar36 == 8)" ( (binary_expression "uVar36 == 8" identifier == number_literal) )) (compound_statement "{\n    MVar39 = 0;\n    if ((long)number_pixels < 1) {\n      return;\n    }\n    do {\n      pPVar5 = image->channel_map;\n      fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n               fVar17 * p[pPVar5[2].offset];\n      if (NAN(fVar42)) {\n        uVar21 = '\0';\n      }\n      else {\n        uVar21 = '\0';\n        if ((0.0 < fVar42) && (dVar6 = (double)fVar42 / dVar13, uVar21 = 0xff, dVar6 < dVar14)) {\n          uVar21 = (uchar)(int)(dVar6 + dVar9);\n        }\n      }\n      *q = uVar21;\n      uVar21 = 0xff;\n      if (image->channel_map[4].traits != UndefinedPixelTrait) {\n        fVar42 = p[image->channel_map[4].offset];\n        if (NAN(fVar42)) {\n          uVar21 = '\0';\n        }\n        else {\n          uVar21 = '\0';\n          if ((0.0 < fVar42) && (uVar21 = 0xff, (double)fVar42 / DAT_00404930 < DAT_00404938)) {\n            uVar21 = (uchar)(int)((double)fVar42 / DAT_00404930 + DAT_003f9c28);\n          }\n        }\n      }\n      q[1] = uVar21;\n      p = p + image->number_channels;\n      q = q + quantum_info->pad + 2;\n      MVar39 = MVar39 + 1;\n    } while (MVar39 != number_pixels);\n    return;\n  }" { (expression_statement "MVar39 = 0;" (assignment_expression "MVar39 = 0" identifier = number_literal) ;) (if_statement "if ((long)number_pixels < 1) {\n      return;\n    }" if (parenthesized_expression "((long)number_pixels < 1)" ( (binary_expression "(long)number_pixels < 1" (cast_expression "(long)number_pixels" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (do_statement "do {\n      pPVar5 = image->channel_map;\n      fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n               fVar17 * p[pPVar5[2].offset];\n      if (NAN(fVar42)) {\n        uVar21 = '\0';\n      }\n      else {\n        uVar21 = '\0';\n        if ((0.0 < fVar42) && (dVar6 = (double)fVar42 / dVar13, uVar21 = 0xff, dVar6 < dVar14)) {\n          uVar21 = (uchar)(int)(dVar6 + dVar9);\n        }\n      }\n      *q = uVar21;\n      uVar21 = 0xff;\n      if (image->channel_map[4].traits != UndefinedPixelTrait) {\n        fVar42 = p[image->channel_map[4].offset];\n        if (NAN(fVar42)) {\n          uVar21 = '\0';\n        }\n        else {\n          uVar21 = '\0';\n          if ((0.0 < fVar42) && (uVar21 = 0xff, (double)fVar42 / DAT_00404930 < DAT_00404938)) {\n            uVar21 = (uchar)(int)((double)fVar42 / DAT_00404930 + DAT_003f9c28);\n          }\n        }\n      }\n      q[1] = uVar21;\n      p = p + image->number_channels;\n      q = q + quantum_info->pad + 2;\n      MVar39 = MVar39 + 1;\n    } while (MVar39 != number_pixels);" do (compound_statement "{\n      pPVar5 = image->channel_map;\n      fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n               fVar17 * p[pPVar5[2].offset];\n      if (NAN(fVar42)) {\n        uVar21 = '\0';\n      }\n      else {\n        uVar21 = '\0';\n        if ((0.0 < fVar42) && (dVar6 = (double)fVar42 / dVar13, uVar21 = 0xff, dVar6 < dVar14)) {\n          uVar21 = (uchar)(int)(dVar6 + dVar9);\n        }\n      }\n      *q = uVar21;\n      uVar21 = 0xff;\n      if (image->channel_map[4].traits != UndefinedPixelTrait) {\n        fVar42 = p[image->channel_map[4].offset];\n        if (NAN(fVar42)) {\n          uVar21 = '\0';\n        }\n        else {\n          uVar21 = '\0';\n          if ((0.0 < fVar42) && (uVar21 = 0xff, (double)fVar42 / DAT_00404930 < DAT_00404938)) {\n            uVar21 = (uchar)(int)((double)fVar42 / DAT_00404930 + DAT_003f9c28);\n          }\n        }\n      }\n      q[1] = uVar21;\n      p = p + image->number_channels;\n      q = q + quantum_info->pad + 2;\n      MVar39 = MVar39 + 1;\n    }" { (expression_statement "pPVar5 = image->channel_map;" (assignment_expression "pPVar5 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) (expression_statement "fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n               fVar17 * p[pPVar5[2].offset];" (assignment_expression "fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n               fVar17 * p[pPVar5[2].offset]" identifier = (binary_expression "fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n               fVar17 * p[pPVar5[2].offset]" (binary_expression "fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset]" (binary_expression "fVar16 * p[pPVar5[1].offset]" identifier * (subscript_expression "p[pPVar5[1].offset]" identifier [ (field_expression "pPVar5[1].offset" (subscript_expression "pPVar5[1]" identifier [ number_literal ]) . field_identifier) ])) + (binary_expression "fVar15 * p[pPVar5->offset]" identifier * (subscript_expression "p[pPVar5->offset]" identifier [ (field_expression "pPVar5->offset" identifier -> field_identifier) ]))) + (binary_expression "fVar17 * p[pPVar5[2].offset]" identifier * (subscript_expression "p[pPVar5[2].offset]" identifier [ (field_expression "pPVar5[2].offset" (subscript_expression "pPVar5[2]" identifier [ number_literal ]) . field_identifier) ])))) ;) (if_statement "if (NAN(fVar42)) {\n        uVar21 = '\0';\n      }\n      else {\n        uVar21 = '\0';\n        if ((0.0 < fVar42) && (dVar6 = (double)fVar42 / dVar13, uVar21 = 0xff, dVar6 < dVar14)) {\n          uVar21 = (uchar)(int)(dVar6 + dVar9);\n        }\n      }" if (parenthesized_expression "(NAN(fVar42))" ( (call_expression "NAN(fVar42)" identifier (argument_list "(fVar42)" ( identifier ))) )) (compound_statement "{\n        uVar21 = '\0';\n      }" { (expression_statement "uVar21 = '\0';" (assignment_expression "uVar21 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) }) (else_clause "else {\n        uVar21 = '\0';\n        if ((0.0 < fVar42) && (dVar6 = (double)fVar42 / dVar13, uVar21 = 0xff, dVar6 < dVar14)) {\n          uVar21 = (uchar)(int)(dVar6 + dVar9);\n        }\n      }" else (compound_statement "{\n        uVar21 = '\0';\n        if ((0.0 < fVar42) && (dVar6 = (double)fVar42 / dVar13, uVar21 = 0xff, dVar6 < dVar14)) {\n          uVar21 = (uchar)(int)(dVar6 + dVar9);\n        }\n      }" { (expression_statement "uVar21 = '\0';" (assignment_expression "uVar21 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if ((0.0 < fVar42) && (dVar6 = (double)fVar42 / dVar13, uVar21 = 0xff, dVar6 < dVar14)) {\n          uVar21 = (uchar)(int)(dVar6 + dVar9);\n        }" if (parenthesized_expression "((0.0 < fVar42) && (dVar6 = (double)fVar42 / dVar13, uVar21 = 0xff, dVar6 < dVar14))" ( (binary_expression "(0.0 < fVar42) && (dVar6 = (double)fVar42 / dVar13, uVar21 = 0xff, dVar6 < dVar14)" (parenthesized_expression "(0.0 < fVar42)" ( (binary_expression "0.0 < fVar42" number_literal < identifier) )) && (parenthesized_expression "(dVar6 = (double)fVar42 / dVar13, uVar21 = 0xff, dVar6 < dVar14)" ( (comma_expression "dVar6 = (double)fVar42 / dVar13, uVar21 = 0xff, dVar6 < dVar14" (assignment_expression "dVar6 = (double)fVar42 / dVar13" identifier = (binary_expression "(double)fVar42 / dVar13" (cast_expression "(double)fVar42" ( (type_descriptor "double" primitive_type) ) identifier) / identifier)) , (comma_expression "uVar21 = 0xff, dVar6 < dVar14" (assignment_expression "uVar21 = 0xff" identifier = number_literal) , (binary_expression "dVar6 < dVar14" identifier < identifier))) ))) )) (compound_statement "{\n          uVar21 = (uchar)(int)(dVar6 + dVar9);\n        }" { (expression_statement "uVar21 = (uchar)(int)(dVar6 + dVar9);" (assignment_expression "uVar21 = (uchar)(int)(dVar6 + dVar9)" identifier = (call_expression "(uchar)(int)(dVar6 + dVar9)" (call_expression "(uchar)(int)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "(int)" ( identifier ))) (argument_list "(dVar6 + dVar9)" ( (binary_expression "dVar6 + dVar9" identifier + identifier) )))) ;) })) }))) (expression_statement "*q = uVar21;" (assignment_expression "*q = uVar21" (pointer_expression "*q" * identifier) = identifier) ;) (expression_statement "uVar21 = 0xff;" (assignment_expression "uVar21 = 0xff" identifier = number_literal) ;) (if_statement "if (image->channel_map[4].traits != UndefinedPixelTrait) {\n        fVar42 = p[image->channel_map[4].offset];\n        if (NAN(fVar42)) {\n          uVar21 = '\0';\n        }\n        else {\n          uVar21 = '\0';\n          if ((0.0 < fVar42) && (uVar21 = 0xff, (double)fVar42 / DAT_00404930 < DAT_00404938)) {\n            uVar21 = (uchar)(int)((double)fVar42 / DAT_00404930 + DAT_003f9c28);\n          }\n        }\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        fVar42 = p[image->channel_map[4].offset];\n        if (NAN(fVar42)) {\n          uVar21 = '\0';\n        }\n        else {\n          uVar21 = '\0';\n          if ((0.0 < fVar42) && (uVar21 = 0xff, (double)fVar42 / DAT_00404930 < DAT_00404938)) {\n            uVar21 = (uchar)(int)((double)fVar42 / DAT_00404930 + DAT_003f9c28);\n          }\n        }\n      }" { (expression_statement "fVar42 = p[image->channel_map[4].offset];" (assignment_expression "fVar42 = p[image->channel_map[4].offset]" identifier = (subscript_expression "p[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) ])) ;) (if_statement "if (NAN(fVar42)) {\n          uVar21 = '\0';\n        }\n        else {\n          uVar21 = '\0';\n          if ((0.0 < fVar42) && (uVar21 = 0xff, (double)fVar42 / DAT_00404930 < DAT_00404938)) {\n            uVar21 = (uchar)(int)((double)fVar42 / DAT_00404930 + DAT_003f9c28);\n          }\n        }" if (parenthesized_expression "(NAN(fVar42))" ( (call_expression "NAN(fVar42)" identifier (argument_list "(fVar42)" ( identifier ))) )) (compound_statement "{\n          uVar21 = '\0';\n        }" { (expression_statement "uVar21 = '\0';" (assignment_expression "uVar21 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) }) (else_clause "else {\n          uVar21 = '\0';\n          if ((0.0 < fVar42) && (uVar21 = 0xff, (double)fVar42 / DAT_00404930 < DAT_00404938)) {\n            uVar21 = (uchar)(int)((double)fVar42 / DAT_00404930 + DAT_003f9c28);\n          }\n        }" else (compound_statement "{\n          uVar21 = '\0';\n          if ((0.0 < fVar42) && (uVar21 = 0xff, (double)fVar42 / DAT_00404930 < DAT_00404938)) {\n            uVar21 = (uchar)(int)((double)fVar42 / DAT_00404930 + DAT_003f9c28);\n          }\n        }" { (expression_statement "uVar21 = '\0';" (assignment_expression "uVar21 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if ((0.0 < fVar42) && (uVar21 = 0xff, (double)fVar42 / DAT_00404930 < DAT_00404938)) {\n            uVar21 = (uchar)(int)((double)fVar42 / DAT_00404930 + DAT_003f9c28);\n          }" if (parenthesized_expression "((0.0 < fVar42) && (uVar21 = 0xff, (double)fVar42 / DAT_00404930 < DAT_00404938))" ( (binary_expression "(0.0 < fVar42) && (uVar21 = 0xff, (double)fVar42 / DAT_00404930 < DAT_00404938)" (parenthesized_expression "(0.0 < fVar42)" ( (binary_expression "0.0 < fVar42" number_literal < identifier) )) && (parenthesized_expression "(uVar21 = 0xff, (double)fVar42 / DAT_00404930 < DAT_00404938)" ( (comma_expression "uVar21 = 0xff, (double)fVar42 / DAT_00404930 < DAT_00404938" (assignment_expression "uVar21 = 0xff" identifier = number_literal) , (binary_expression "(double)fVar42 / DAT_00404930 < DAT_00404938" (binary_expression "(double)fVar42 / DAT_00404930" (cast_expression "(double)fVar42" ( (type_descriptor "double" primitive_type) ) identifier) / identifier) < identifier)) ))) )) (compound_statement "{\n            uVar21 = (uchar)(int)((double)fVar42 / DAT_00404930 + DAT_003f9c28);\n          }" { (expression_statement "uVar21 = (uchar)(int)((double)fVar42 / DAT_00404930 + DAT_003f9c28);" (assignment_expression "uVar21 = (uchar)(int)((double)fVar42 / DAT_00404930 + DAT_003f9c28)" identifier = (call_expression "(uchar)(int)((double)fVar42 / DAT_00404930 + DAT_003f9c28)" (call_expression "(uchar)(int)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "(int)" ( identifier ))) (argument_list "((double)fVar42 / DAT_00404930 + DAT_003f9c28)" ( (binary_expression "(double)fVar42 / DAT_00404930 + DAT_003f9c28" (binary_expression "(double)fVar42 / DAT_00404930" (cast_expression "(double)fVar42" ( (type_descriptor "double" primitive_type) ) identifier) / identifier) + identifier) )))) ;) })) }))) })) (expression_statement "q[1] = uVar21;" (assignment_expression "q[1] = uVar21" (subscript_expression "q[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "p = p + image->number_channels;" (assignment_expression "p = p + image->number_channels" identifier = (binary_expression "p + image->number_channels" identifier + (field_expression "image->number_channels" identifier -> field_identifier))) ;) (expression_statement "q = q + quantum_info->pad + 2;" (assignment_expression "q = q + quantum_info->pad + 2" identifier = (binary_expression "q + quantum_info->pad + 2" (binary_expression "q + quantum_info->pad" identifier + (field_expression "quantum_info->pad" identifier -> field_identifier)) + number_literal)) ;) (expression_statement "MVar39 = MVar39 + 1;" (assignment_expression "MVar39 = MVar39 + 1" identifier = (binary_expression "MVar39 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(MVar39 != number_pixels)" ( (binary_expression "MVar39 != number_pixels" identifier != identifier) )) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar36 < 9) {\n    if (uVar36 == 1) {\n      bVar40 = quantum_info->min_is_white == MagickFalse;\n      bVar8 = !bVar40;\n      if (number_pixels != 3 && -1 < (long)(number_pixels - 3)) {\n        pbVar1 = q + (number_pixels - 4 >> 2) + 1;\n        do {\n          *q = 0;\n          pPVar5 = image->channel_map;\n          uVar33 = (uint)bVar40;\n          if (DAT_003fc580 <\n              fVar17 * p[pPVar5[2].offset] +\n              fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset]) {\n            uVar33 = (uint)bVar8;\n          }\n          bVar20 = (byte)(uVar33 << 7);\n          *q = bVar20;\n          bVar19 = 0x40;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            if (p[image->channel_map[4].offset] == _DAT_003fa400) {\n              bVar19 = 0x40;\n            }\n            else {\n              bVar19 = 0;\n            }\n          }\n          bVar19 = bVar19 | bVar20;\n          *q = bVar19;\n          sVar34 = image->number_channels;\n          pPVar5 = image->channel_map;\n          uVar33 = (uint)bVar40;\n          if (DAT_003fc580 <\n              fVar17 * p[sVar34 + pPVar5[2].offset] +\n              fVar15 * p[sVar34 + pPVar5->offset] + fVar16 * p[sVar34 + pPVar5[1].offset]) {\n            uVar33 = (uint)bVar8;\n          }\n          bVar19 = bVar19 | (byte)(uVar33 << 5);\n          *q = bVar19;\n          bVar20 = 0x10;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            if (p[sVar34 + image->channel_map[4].offset] == _DAT_003fa400) {\n              bVar20 = 0x10;\n            }\n            else {\n              bVar20 = 0;\n            }\n          }\n          bVar19 = bVar19 | bVar20;\n          *q = bVar19;\n          sVar4 = image->number_channels;\n          pPVar5 = image->channel_map;\n          bVar2 = bVar40;\n          if (DAT_003fc580 <\n              fVar17 * p[sVar34 + sVar4 + pPVar5[2].offset] +\n              fVar15 * p[sVar34 + sVar4 + pPVar5->offset] +\n              fVar16 * p[sVar34 + sVar4 + pPVar5[1].offset]) {\n            bVar2 = bVar8;\n          }\n          bVar19 = bVar19 | bVar2 * '\b';\n          *q = bVar19;\n          bVar20 = 4;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            if (p[sVar34 + sVar4 + image->channel_map[4].offset] == _DAT_003fa400) {\n              bVar20 = 4;\n            }\n            else {\n              bVar20 = 0;\n            }\n          }\n          bVar19 = bVar19 | bVar20;\n          *q = bVar19;\n          sVar3 = image->number_channels;\n          pPVar5 = image->channel_map;\n          bVar2 = bVar8;\n          if (DAT_0041abe0 * p[sVar34 + sVar4 + sVar3 + pPVar5[2].offset] +\n              DAT_0041abd8 * p[sVar34 + sVar4 + sVar3 + pPVar5->offset] +\n              DAT_0041abdc * p[sVar34 + sVar4 + sVar3 + pPVar5[1].offset] <= DAT_003fc580) {\n            bVar2 = bVar40;\n          }\n          bVar19 = bVar19 | bVar2 * '\x02';\n          *q = bVar19;\n          QVar41 = _DAT_003fa400;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            QVar41 = p[sVar34 + sVar4 + sVar3 + image->channel_map[4].offset];\n          }\n          *q = bVar19 | QVar41 == _DAT_003fa400;\n          p = p + sVar34 + sVar4 + sVar3 + image->number_channels;\n          q = q + 1;\n        } while (q != pbVar1);\n      }\n      if ((number_pixels & 3) == 0) {\n        return;\n      }\n      *q = 0;\n      fVar17 = DAT_0041abe0;\n      fVar16 = DAT_0041abdc;\n      fVar15 = DAT_0041abd8;\n      fVar42 = _DAT_003fa400;\n      bVar19 = 7;\n      lVar37 = 0;\n      do {\n        pPVar5 = image->channel_map;\n        bVar2 = bVar40;\n        if (DAT_003fc580 <\n            fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] + fVar17 * p[pPVar5[2].offset]\n           ) {\n          bVar2 = bVar8;\n        }\n        bVar20 = bVar2 << (bVar19 & 0x1f) | *q;\n        *q = bVar20;\n        QVar41 = fVar42;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          QVar41 = p[image->channel_map[4].offset];\n        }\n        uVar33 = (uint)(!NAN(QVar41) && !NAN(_DAT_003fa400));\n        if (QVar41 != _DAT_003fa400) {\n          uVar33 = 0;\n        }\n        *q = (byte)(uVar33 << (bVar19 - 1 & 0x1f)) | bVar20;\n        p = p + image->number_channels;\n        lVar37 = lVar37 + 2;\n        bVar19 = bVar19 - 2;\n      } while (lVar37 <= (long)(ulong)((uint)number_pixels & 3));\n      return;\n    }\n    if (uVar36 == 4) {\n      pbVar1 = q + number_pixels;\n      if ((long)number_pixels < 1) {\n        return;\n      }\n      do {\n        pPVar5 = image->channel_map;\n        fVar43 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                 fVar17 * p[pPVar5[2].offset];\n        if (NAN(fVar43)) {\n          bVar19 = 0;\n        }\n        else {\n          bVar19 = 0;\n          if (0.0 < fVar43) {\n            dVar6 = (double)fVar43 / dVar13;\n            bVar19 = 0xff;\n            if (dVar6 < dVar14) {\n              bVar19 = (byte)(int)(dVar6 + dVar9);\n            }\n          }\n        }\n        *q = bVar19 & 0xf0;\n        QVar41 = fVar42;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          QVar41 = p[image->channel_map[4].offset];\n        }\n        *q = bVar19 & 0xf0 | (byte)(int)((double)QVar41 * dVar18 + dVar9) & 0xf;\n        p = p + image->number_channels;\n        q = q + 1;\n      } while (q != pbVar1);\n      return;\n    }\nLAB_002734da:\n    uVar38 = 0;\n    if (uVar36 == 0) goto LAB_002734e9;\n  }\n  else {\n    if (uVar36 == 0x20) {\n      if (quantum_info->format == FloatingPointQuantumFormat) {\n        if ((long)number_pixels < 1) {\n          return;\n        }\n        MVar39 = 0;\n        do {\n          pPVar5 = image->channel_map;\n          fVar43 = (float)((double)(fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                                   fVar17 * p[pPVar5[2].offset]) *\n                           (quantum_info->state).inverse_scale + quantum_info->minimum);\n          uVar25 = (uchar)((uint)fVar43 >> 8);\n          uVar31 = (uchar)((uint)fVar43 >> 0x10);\n          uVar21 = (uchar)((uint)fVar43 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            *q = SUB41(fVar43,0);\n            q[1] = uVar25;\n            q[2] = uVar31;\n            q[3] = uVar21;\n          }\n          else {\n            *q = uVar21;\n            q[1] = uVar31;\n            q[2] = uVar25;\n            q[3] = SUB41(fVar43,0);\n          }\n          QVar41 = fVar42;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            QVar41 = p[image->channel_map[4].offset];\n          }\n          fVar43 = (float)((double)QVar41 * (quantum_info->state).inverse_scale +\n                          quantum_info->minimum);\n          uVar21 = (uchar)((uint)fVar43 >> 8);\n          uVar25 = (uchar)((uint)fVar43 >> 0x10);\n          uVar31 = (uchar)((uint)fVar43 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            q[4] = SUB41(fVar43,0);\n            q[5] = uVar21;\n            q[6] = uVar25;\n            q[7] = uVar31;\n          }\n          else {\n            q[4] = uVar31;\n            q[5] = uVar25;\n            q[6] = uVar21;\n            q[7] = SUB41(fVar43,0);\n          }\n          p = p + image->number_channels;\n          q = q + quantum_info->pad + 8;\n          MVar39 = MVar39 + 1;\n        } while (MVar39 != number_pixels);\n        return;\n      }\n      MVar39 = 0;\n      if ((long)number_pixels < 1) {\n        return;\n      }\n      do {\n        pPVar5 = image->channel_map;\n        fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                 fVar17 * p[pPVar5[2].offset];\n        if (NAN(fVar42)) {\n          uVar24 = 0;\n        }\n        else {\n          uVar24 = 0;\n          if ((0.0 < fVar42) && (uVar24 = 0xffffffff, (double)fVar42 * dVar7 < dVar12)) {\n            uVar24 = (undefined4)(long)((double)fVar42 * dVar7 + dVar9);\n          }\n        }\n        uVar21 = (uchar)((uint)uVar24 >> 8);\n        uVar25 = (uchar)((uint)uVar24 >> 0x10);\n        uVar31 = (uchar)((uint)uVar24 >> 0x18);\n        if (quantum_info->endian == LSBEndian) {\n          *q = (uchar)uVar24;\n          q[1] = uVar21;\n          q[2] = uVar25;\n          q[3] = uVar31;\n        }\n        else {\n          *q = uVar31;\n          q[1] = uVar25;\n          q[2] = uVar21;\n          q[3] = (uchar)uVar24;\n        }\n        uVar24 = 0xffffffff;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          fVar42 = p[image->channel_map[4].offset];\n          if (NAN(fVar42)) {\n            uVar24 = 0;\n          }\n          else {\n            uVar24 = 0;\n            if ((0.0 < fVar42) &&\n               (uVar24 = 0xffffffff, (double)fVar42 * DAT_00404920 < DAT_00404928)) {\n              uVar24 = (int)(long)((double)fVar42 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }\n        uVar21 = (uchar)((uint)uVar24 >> 8);\n        uVar25 = (uchar)((uint)uVar24 >> 0x10);\n        uVar31 = (uchar)((uint)uVar24 >> 0x18);\n        if (quantum_info->endian == LSBEndian) {\n          q[4] = (uchar)uVar24;\n          q[5] = uVar21;\n          q[6] = uVar25;\n          q[7] = uVar31;\n        }\n        else {\n          q[4] = uVar31;\n          q[5] = uVar25;\n          q[6] = uVar21;\n          q[7] = (uchar)uVar24;\n        }\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 8;\n        MVar39 = MVar39 + 1;\n      } while (MVar39 != number_pixels);\n      return;\n    }\n    if (uVar36 != 0x40) {\n      if (uVar36 == 0x10) {\n        if (quantum_info->format == FloatingPointQuantumFormat) {\n          if ((long)number_pixels < 1) {\n            return;\n          }\n          MVar39 = 0;\n          do {\n            pPVar5 = image->channel_map;\n            uVar22 = SinglePrecisionToHalf\n                               ((float)((double)(DAT_0041abdc * p[pPVar5[1].offset] +\n                                                 DAT_0041abd8 * p[pPVar5->offset] +\n                                                DAT_0041abe0 * p[pPVar5[2].offset]) * DAT_003f9c60))\n            ;\n            uVar21 = (uchar)(uVar22 >> 8);\n            if (quantum_info->endian == LSBEndian) {\n              *q = (uchar)uVar22;\n              q[1] = uVar21;\n            }\n            else {\n              *q = uVar21;\n              q[1] = (uchar)uVar22;\n            }\n            QVar41 = _DAT_003fa400;\n            if (image->channel_map[4].traits != UndefinedPixelTrait) {\n              QVar41 = p[image->channel_map[4].offset];\n            }\n            uVar22 = SinglePrecisionToHalf((float)((double)QVar41 * DAT_003f9c60));\n            uVar21 = (uchar)(uVar22 >> 8);\n            if (quantum_info->endian == LSBEndian) {\n              q[2] = (uchar)uVar22;\n              q[3] = uVar21;\n            }\n            else {\n              q[2] = uVar21;\n              q[3] = (uchar)uVar22;\n            }\n            p = p + image->number_channels;\n            q = q + quantum_info->pad + 4;\n            MVar39 = MVar39 + 1;\n          } while (MVar39 != number_pixels);\n          return;\n        }\n        MVar39 = 0;\n        if ((long)number_pixels < 1) {\n          return;\n        }\n        do {\n          pPVar5 = image->channel_map;\n          fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                   fVar17 * p[pPVar5[2].offset];\n          if (NAN(fVar42)) {\n            uVar23 = 0;\n          }\n          else {\n            uVar23 = 0;\n            if ((0.0 < fVar42) && (uVar23 = 0xffff, fVar42 < _DAT_003fa400)) {\n              uVar23 = (undefined2)(int)((double)fVar42 + dVar9);\n            }\n          }\n          uVar21 = (uchar)((ushort)uVar23 >> 8);\n          if (quantum_info->endian == LSBEndian) {\n            *q = (uchar)uVar23;\n            q[1] = uVar21;\n          }\n          else {\n            *q = uVar21;\n            q[1] = (uchar)uVar23;\n          }\n          uVar23 = 0xffff;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            fVar42 = p[image->channel_map[4].offset];\n            if (NAN(fVar42)) {\n              uVar23 = 0;\n            }\n            else {\n              uVar23 = 0;\n              if ((0.0 < fVar42) && (uVar23 = 0xffff, fVar42 < _DAT_003fa400)) {\n                uVar23 = (short)(int)((double)fVar42 + dVar9);\n              }\n            }\n          }\n          uVar21 = (uchar)((ushort)uVar23 >> 8);\n          if (quantum_info->endian == LSBEndian) {\n            q[2] = (uchar)uVar23;\n            q[3] = uVar21;\n          }\n          else {\n            q[2] = uVar21;\n            q[3] = (uchar)uVar23;\n          }\n          p = p + image->number_channels;\n          q = q + quantum_info->pad + 4;\n          MVar39 = MVar39 + 1;\n        } while (MVar39 != number_pixels);\n        return;\n      }\n      goto LAB_002734da;\n    }\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if ((long)number_pixels < 1) {\n        return;\n      }\n      MVar39 = 0;\n      do {\n        pPVar5 = image->channel_map;\n        dVar6 = (double)(fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                        fVar17 * p[pPVar5[2].offset]) * (quantum_info->state).inverse_scale +\n                quantum_info->minimum;\n        uVar25 = (uchar)((ulong)dVar6 >> 8);\n        uVar28 = (uchar)((ulong)dVar6 >> 0x10);\n        uVar29 = (uchar)((ulong)dVar6 >> 0x18);\n        uVar30 = (uchar)((ulong)dVar6 >> 0x20);\n        uVar31 = (uchar)((ulong)dVar6 >> 0x28);\n        uVar32 = (uchar)((ulong)dVar6 >> 0x30);\n        uVar21 = (uchar)((ulong)dVar6 >> 0x38);\n        if (quantum_info->endian == LSBEndian) {\n          *q = SUB81(dVar6,0);\n          q[1] = uVar25;\n          q[2] = uVar28;\n          q[3] = uVar29;\n          q[4] = uVar30;\n          q[5] = uVar31;\n          q[6] = uVar32;\n          q[7] = uVar21;\n        }\n        else {\n          *q = uVar21;\n          q[1] = uVar32;\n          q[2] = uVar31;\n          q[3] = uVar30;\n          q[4] = uVar29;\n          q[5] = uVar28;\n          q[6] = uVar25;\n          q[7] = SUB81(dVar6,0);\n        }\n        QVar41 = fVar42;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          QVar41 = p[image->channel_map[4].offset];\n        }\n        dVar6 = (double)QVar41 * (quantum_info->state).inverse_scale + quantum_info->minimum;\n        uVar21 = (uchar)((ulong)dVar6 >> 8);\n        uVar25 = (uchar)((ulong)dVar6 >> 0x10);\n        uVar31 = (uchar)((ulong)dVar6 >> 0x18);\n        uVar32 = (uchar)((ulong)dVar6 >> 0x20);\n        uVar30 = (uchar)((ulong)dVar6 >> 0x28);\n        uVar29 = (uchar)((ulong)dVar6 >> 0x30);\n        uVar28 = (uchar)((ulong)dVar6 >> 0x38);\n        if (quantum_info->endian == LSBEndian) {\n          q[8] = SUB81(dVar6,0);\n          q[9] = uVar21;\n          q[10] = uVar25;\n          q[0xb] = uVar31;\n          q[0xc] = uVar32;\n          q[0xd] = uVar30;\n          q[0xe] = uVar29;\n          q[0xf] = uVar28;\n        }\n        else {\n          q[8] = uVar28;\n          q[9] = uVar29;\n          q[10] = uVar30;\n          q[0xb] = uVar32;\n          q[0xc] = uVar31;\n          q[0xd] = uVar25;\n          q[0xe] = uVar21;\n          q[0xf] = SUB81(dVar6,0);\n        }\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 0x10;\n        MVar39 = MVar39 + 1;\n      } while (MVar39 != number_pixels);\n      return;\n    }\n  }" if (parenthesized_expression "(uVar36 < 9)" ( (binary_expression "uVar36 < 9" identifier < number_literal) )) (compound_statement "{\n    if (uVar36 == 1) {\n      bVar40 = quantum_info->min_is_white == MagickFalse;\n      bVar8 = !bVar40;\n      if (number_pixels != 3 && -1 < (long)(number_pixels - 3)) {\n        pbVar1 = q + (number_pixels - 4 >> 2) + 1;\n        do {\n          *q = 0;\n          pPVar5 = image->channel_map;\n          uVar33 = (uint)bVar40;\n          if (DAT_003fc580 <\n              fVar17 * p[pPVar5[2].offset] +\n              fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset]) {\n            uVar33 = (uint)bVar8;\n          }\n          bVar20 = (byte)(uVar33 << 7);\n          *q = bVar20;\n          bVar19 = 0x40;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            if (p[image->channel_map[4].offset] == _DAT_003fa400) {\n              bVar19 = 0x40;\n            }\n            else {\n              bVar19 = 0;\n            }\n          }\n          bVar19 = bVar19 | bVar20;\n          *q = bVar19;\n          sVar34 = image->number_channels;\n          pPVar5 = image->channel_map;\n          uVar33 = (uint)bVar40;\n          if (DAT_003fc580 <\n              fVar17 * p[sVar34 + pPVar5[2].offset] +\n              fVar15 * p[sVar34 + pPVar5->offset] + fVar16 * p[sVar34 + pPVar5[1].offset]) {\n            uVar33 = (uint)bVar8;\n          }\n          bVar19 = bVar19 | (byte)(uVar33 << 5);\n          *q = bVar19;\n          bVar20 = 0x10;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            if (p[sVar34 + image->channel_map[4].offset] == _DAT_003fa400) {\n              bVar20 = 0x10;\n            }\n            else {\n              bVar20 = 0;\n            }\n          }\n          bVar19 = bVar19 | bVar20;\n          *q = bVar19;\n          sVar4 = image->number_channels;\n          pPVar5 = image->channel_map;\n          bVar2 = bVar40;\n          if (DAT_003fc580 <\n              fVar17 * p[sVar34 + sVar4 + pPVar5[2].offset] +\n              fVar15 * p[sVar34 + sVar4 + pPVar5->offset] +\n              fVar16 * p[sVar34 + sVar4 + pPVar5[1].offset]) {\n            bVar2 = bVar8;\n          }\n          bVar19 = bVar19 | bVar2 * '\b';\n          *q = bVar19;\n          bVar20 = 4;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            if (p[sVar34 + sVar4 + image->channel_map[4].offset] == _DAT_003fa400) {\n              bVar20 = 4;\n            }\n            else {\n              bVar20 = 0;\n            }\n          }\n          bVar19 = bVar19 | bVar20;\n          *q = bVar19;\n          sVar3 = image->number_channels;\n          pPVar5 = image->channel_map;\n          bVar2 = bVar8;\n          if (DAT_0041abe0 * p[sVar34 + sVar4 + sVar3 + pPVar5[2].offset] +\n              DAT_0041abd8 * p[sVar34 + sVar4 + sVar3 + pPVar5->offset] +\n              DAT_0041abdc * p[sVar34 + sVar4 + sVar3 + pPVar5[1].offset] <= DAT_003fc580) {\n            bVar2 = bVar40;\n          }\n          bVar19 = bVar19 | bVar2 * '\x02';\n          *q = bVar19;\n          QVar41 = _DAT_003fa400;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            QVar41 = p[sVar34 + sVar4 + sVar3 + image->channel_map[4].offset];\n          }\n          *q = bVar19 | QVar41 == _DAT_003fa400;\n          p = p + sVar34 + sVar4 + sVar3 + image->number_channels;\n          q = q + 1;\n        } while (q != pbVar1);\n      }\n      if ((number_pixels & 3) == 0) {\n        return;\n      }\n      *q = 0;\n      fVar17 = DAT_0041abe0;\n      fVar16 = DAT_0041abdc;\n      fVar15 = DAT_0041abd8;\n      fVar42 = _DAT_003fa400;\n      bVar19 = 7;\n      lVar37 = 0;\n      do {\n        pPVar5 = image->channel_map;\n        bVar2 = bVar40;\n        if (DAT_003fc580 <\n            fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] + fVar17 * p[pPVar5[2].offset]\n           ) {\n          bVar2 = bVar8;\n        }\n        bVar20 = bVar2 << (bVar19 & 0x1f) | *q;\n        *q = bVar20;\n        QVar41 = fVar42;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          QVar41 = p[image->channel_map[4].offset];\n        }\n        uVar33 = (uint)(!NAN(QVar41) && !NAN(_DAT_003fa400));\n        if (QVar41 != _DAT_003fa400) {\n          uVar33 = 0;\n        }\n        *q = (byte)(uVar33 << (bVar19 - 1 & 0x1f)) | bVar20;\n        p = p + image->number_channels;\n        lVar37 = lVar37 + 2;\n        bVar19 = bVar19 - 2;\n      } while (lVar37 <= (long)(ulong)((uint)number_pixels & 3));\n      return;\n    }\n    if (uVar36 == 4) {\n      pbVar1 = q + number_pixels;\n      if ((long)number_pixels < 1) {\n        return;\n      }\n      do {\n        pPVar5 = image->channel_map;\n        fVar43 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                 fVar17 * p[pPVar5[2].offset];\n        if (NAN(fVar43)) {\n          bVar19 = 0;\n        }\n        else {\n          bVar19 = 0;\n          if (0.0 < fVar43) {\n            dVar6 = (double)fVar43 / dVar13;\n            bVar19 = 0xff;\n            if (dVar6 < dVar14) {\n              bVar19 = (byte)(int)(dVar6 + dVar9);\n            }\n          }\n        }\n        *q = bVar19 & 0xf0;\n        QVar41 = fVar42;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          QVar41 = p[image->channel_map[4].offset];\n        }\n        *q = bVar19 & 0xf0 | (byte)(int)((double)QVar41 * dVar18 + dVar9) & 0xf;\n        p = p + image->number_channels;\n        q = q + 1;\n      } while (q != pbVar1);\n      return;\n    }\nLAB_002734da:\n    uVar38 = 0;\n    if (uVar36 == 0) goto LAB_002734e9;\n  }" { (if_statement "if (uVar36 == 1) {\n      bVar40 = quantum_info->min_is_white == MagickFalse;\n      bVar8 = !bVar40;\n      if (number_pixels != 3 && -1 < (long)(number_pixels - 3)) {\n        pbVar1 = q + (number_pixels - 4 >> 2) + 1;\n        do {\n          *q = 0;\n          pPVar5 = image->channel_map;\n          uVar33 = (uint)bVar40;\n          if (DAT_003fc580 <\n              fVar17 * p[pPVar5[2].offset] +\n              fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset]) {\n            uVar33 = (uint)bVar8;\n          }\n          bVar20 = (byte)(uVar33 << 7);\n          *q = bVar20;\n          bVar19 = 0x40;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            if (p[image->channel_map[4].offset] == _DAT_003fa400) {\n              bVar19 = 0x40;\n            }\n            else {\n              bVar19 = 0;\n            }\n          }\n          bVar19 = bVar19 | bVar20;\n          *q = bVar19;\n          sVar34 = image->number_channels;\n          pPVar5 = image->channel_map;\n          uVar33 = (uint)bVar40;\n          if (DAT_003fc580 <\n              fVar17 * p[sVar34 + pPVar5[2].offset] +\n              fVar15 * p[sVar34 + pPVar5->offset] + fVar16 * p[sVar34 + pPVar5[1].offset]) {\n            uVar33 = (uint)bVar8;\n          }\n          bVar19 = bVar19 | (byte)(uVar33 << 5);\n          *q = bVar19;\n          bVar20 = 0x10;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            if (p[sVar34 + image->channel_map[4].offset] == _DAT_003fa400) {\n              bVar20 = 0x10;\n            }\n            else {\n              bVar20 = 0;\n            }\n          }\n          bVar19 = bVar19 | bVar20;\n          *q = bVar19;\n          sVar4 = image->number_channels;\n          pPVar5 = image->channel_map;\n          bVar2 = bVar40;\n          if (DAT_003fc580 <\n              fVar17 * p[sVar34 + sVar4 + pPVar5[2].offset] +\n              fVar15 * p[sVar34 + sVar4 + pPVar5->offset] +\n              fVar16 * p[sVar34 + sVar4 + pPVar5[1].offset]) {\n            bVar2 = bVar8;\n          }\n          bVar19 = bVar19 | bVar2 * '\b';\n          *q = bVar19;\n          bVar20 = 4;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            if (p[sVar34 + sVar4 + image->channel_map[4].offset] == _DAT_003fa400) {\n              bVar20 = 4;\n            }\n            else {\n              bVar20 = 0;\n            }\n          }\n          bVar19 = bVar19 | bVar20;\n          *q = bVar19;\n          sVar3 = image->number_channels;\n          pPVar5 = image->channel_map;\n          bVar2 = bVar8;\n          if (DAT_0041abe0 * p[sVar34 + sVar4 + sVar3 + pPVar5[2].offset] +\n              DAT_0041abd8 * p[sVar34 + sVar4 + sVar3 + pPVar5->offset] +\n              DAT_0041abdc * p[sVar34 + sVar4 + sVar3 + pPVar5[1].offset] <= DAT_003fc580) {\n            bVar2 = bVar40;\n          }\n          bVar19 = bVar19 | bVar2 * '\x02';\n          *q = bVar19;\n          QVar41 = _DAT_003fa400;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            QVar41 = p[sVar34 + sVar4 + sVar3 + image->channel_map[4].offset];\n          }\n          *q = bVar19 | QVar41 == _DAT_003fa400;\n          p = p + sVar34 + sVar4 + sVar3 + image->number_channels;\n          q = q + 1;\n        } while (q != pbVar1);\n      }\n      if ((number_pixels & 3) == 0) {\n        return;\n      }\n      *q = 0;\n      fVar17 = DAT_0041abe0;\n      fVar16 = DAT_0041abdc;\n      fVar15 = DAT_0041abd8;\n      fVar42 = _DAT_003fa400;\n      bVar19 = 7;\n      lVar37 = 0;\n      do {\n        pPVar5 = image->channel_map;\n        bVar2 = bVar40;\n        if (DAT_003fc580 <\n            fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] + fVar17 * p[pPVar5[2].offset]\n           ) {\n          bVar2 = bVar8;\n        }\n        bVar20 = bVar2 << (bVar19 & 0x1f) | *q;\n        *q = bVar20;\n        QVar41 = fVar42;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          QVar41 = p[image->channel_map[4].offset];\n        }\n        uVar33 = (uint)(!NAN(QVar41) && !NAN(_DAT_003fa400));\n        if (QVar41 != _DAT_003fa400) {\n          uVar33 = 0;\n        }\n        *q = (byte)(uVar33 << (bVar19 - 1 & 0x1f)) | bVar20;\n        p = p + image->number_channels;\n        lVar37 = lVar37 + 2;\n        bVar19 = bVar19 - 2;\n      } while (lVar37 <= (long)(ulong)((uint)number_pixels & 3));\n      return;\n    }" if (parenthesized_expression "(uVar36 == 1)" ( (binary_expression "uVar36 == 1" identifier == number_literal) )) (compound_statement "{\n      bVar40 = quantum_info->min_is_white == MagickFalse;\n      bVar8 = !bVar40;\n      if (number_pixels != 3 && -1 < (long)(number_pixels - 3)) {\n        pbVar1 = q + (number_pixels - 4 >> 2) + 1;\n        do {\n          *q = 0;\n          pPVar5 = image->channel_map;\n          uVar33 = (uint)bVar40;\n          if (DAT_003fc580 <\n              fVar17 * p[pPVar5[2].offset] +\n              fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset]) {\n            uVar33 = (uint)bVar8;\n          }\n          bVar20 = (byte)(uVar33 << 7);\n          *q = bVar20;\n          bVar19 = 0x40;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            if (p[image->channel_map[4].offset] == _DAT_003fa400) {\n              bVar19 = 0x40;\n            }\n            else {\n              bVar19 = 0;\n            }\n          }\n          bVar19 = bVar19 | bVar20;\n          *q = bVar19;\n          sVar34 = image->number_channels;\n          pPVar5 = image->channel_map;\n          uVar33 = (uint)bVar40;\n          if (DAT_003fc580 <\n              fVar17 * p[sVar34 + pPVar5[2].offset] +\n              fVar15 * p[sVar34 + pPVar5->offset] + fVar16 * p[sVar34 + pPVar5[1].offset]) {\n            uVar33 = (uint)bVar8;\n          }\n          bVar19 = bVar19 | (byte)(uVar33 << 5);\n          *q = bVar19;\n          bVar20 = 0x10;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            if (p[sVar34 + image->channel_map[4].offset] == _DAT_003fa400) {\n              bVar20 = 0x10;\n            }\n            else {\n              bVar20 = 0;\n            }\n          }\n          bVar19 = bVar19 | bVar20;\n          *q = bVar19;\n          sVar4 = image->number_channels;\n          pPVar5 = image->channel_map;\n          bVar2 = bVar40;\n          if (DAT_003fc580 <\n              fVar17 * p[sVar34 + sVar4 + pPVar5[2].offset] +\n              fVar15 * p[sVar34 + sVar4 + pPVar5->offset] +\n              fVar16 * p[sVar34 + sVar4 + pPVar5[1].offset]) {\n            bVar2 = bVar8;\n          }\n          bVar19 = bVar19 | bVar2 * '\b';\n          *q = bVar19;\n          bVar20 = 4;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            if (p[sVar34 + sVar4 + image->channel_map[4].offset] == _DAT_003fa400) {\n              bVar20 = 4;\n            }\n            else {\n              bVar20 = 0;\n            }\n          }\n          bVar19 = bVar19 | bVar20;\n          *q = bVar19;\n          sVar3 = image->number_channels;\n          pPVar5 = image->channel_map;\n          bVar2 = bVar8;\n          if (DAT_0041abe0 * p[sVar34 + sVar4 + sVar3 + pPVar5[2].offset] +\n              DAT_0041abd8 * p[sVar34 + sVar4 + sVar3 + pPVar5->offset] +\n              DAT_0041abdc * p[sVar34 + sVar4 + sVar3 + pPVar5[1].offset] <= DAT_003fc580) {\n            bVar2 = bVar40;\n          }\n          bVar19 = bVar19 | bVar2 * '\x02';\n          *q = bVar19;\n          QVar41 = _DAT_003fa400;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            QVar41 = p[sVar34 + sVar4 + sVar3 + image->channel_map[4].offset];\n          }\n          *q = bVar19 | QVar41 == _DAT_003fa400;\n          p = p + sVar34 + sVar4 + sVar3 + image->number_channels;\n          q = q + 1;\n        } while (q != pbVar1);\n      }\n      if ((number_pixels & 3) == 0) {\n        return;\n      }\n      *q = 0;\n      fVar17 = DAT_0041abe0;\n      fVar16 = DAT_0041abdc;\n      fVar15 = DAT_0041abd8;\n      fVar42 = _DAT_003fa400;\n      bVar19 = 7;\n      lVar37 = 0;\n      do {\n        pPVar5 = image->channel_map;\n        bVar2 = bVar40;\n        if (DAT_003fc580 <\n            fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] + fVar17 * p[pPVar5[2].offset]\n           ) {\n          bVar2 = bVar8;\n        }\n        bVar20 = bVar2 << (bVar19 & 0x1f) | *q;\n        *q = bVar20;\n        QVar41 = fVar42;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          QVar41 = p[image->channel_map[4].offset];\n        }\n        uVar33 = (uint)(!NAN(QVar41) && !NAN(_DAT_003fa400));\n        if (QVar41 != _DAT_003fa400) {\n          uVar33 = 0;\n        }\n        *q = (byte)(uVar33 << (bVar19 - 1 & 0x1f)) | bVar20;\n        p = p + image->number_channels;\n        lVar37 = lVar37 + 2;\n        bVar19 = bVar19 - 2;\n      } while (lVar37 <= (long)(ulong)((uint)number_pixels & 3));\n      return;\n    }" { (expression_statement "bVar40 = quantum_info->min_is_white == MagickFalse;" (assignment_expression "bVar40 = quantum_info->min_is_white == MagickFalse" identifier = (binary_expression "quantum_info->min_is_white == MagickFalse" (field_expression "quantum_info->min_is_white" identifier -> field_identifier) == identifier)) ;) (expression_statement "bVar8 = !bVar40;" (assignment_expression "bVar8 = !bVar40" identifier = (unary_expression "!bVar40" ! identifier)) ;) (if_statement "if (number_pixels != 3 && -1 < (long)(number_pixels - 3)) {\n        pbVar1 = q + (number_pixels - 4 >> 2) + 1;\n        do {\n          *q = 0;\n          pPVar5 = image->channel_map;\n          uVar33 = (uint)bVar40;\n          if (DAT_003fc580 <\n              fVar17 * p[pPVar5[2].offset] +\n              fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset]) {\n            uVar33 = (uint)bVar8;\n          }\n          bVar20 = (byte)(uVar33 << 7);\n          *q = bVar20;\n          bVar19 = 0x40;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            if (p[image->channel_map[4].offset] == _DAT_003fa400) {\n              bVar19 = 0x40;\n            }\n            else {\n              bVar19 = 0;\n            }\n          }\n          bVar19 = bVar19 | bVar20;\n          *q = bVar19;\n          sVar34 = image->number_channels;\n          pPVar5 = image->channel_map;\n          uVar33 = (uint)bVar40;\n          if (DAT_003fc580 <\n              fVar17 * p[sVar34 + pPVar5[2].offset] +\n              fVar15 * p[sVar34 + pPVar5->offset] + fVar16 * p[sVar34 + pPVar5[1].offset]) {\n            uVar33 = (uint)bVar8;\n          }\n          bVar19 = bVar19 | (byte)(uVar33 << 5);\n          *q = bVar19;\n          bVar20 = 0x10;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            if (p[sVar34 + image->channel_map[4].offset] == _DAT_003fa400) {\n              bVar20 = 0x10;\n            }\n            else {\n              bVar20 = 0;\n            }\n          }\n          bVar19 = bVar19 | bVar20;\n          *q = bVar19;\n          sVar4 = image->number_channels;\n          pPVar5 = image->channel_map;\n          bVar2 = bVar40;\n          if (DAT_003fc580 <\n              fVar17 * p[sVar34 + sVar4 + pPVar5[2].offset] +\n              fVar15 * p[sVar34 + sVar4 + pPVar5->offset] +\n              fVar16 * p[sVar34 + sVar4 + pPVar5[1].offset]) {\n            bVar2 = bVar8;\n          }\n          bVar19 = bVar19 | bVar2 * '\b';\n          *q = bVar19;\n          bVar20 = 4;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            if (p[sVar34 + sVar4 + image->channel_map[4].offset] == _DAT_003fa400) {\n              bVar20 = 4;\n            }\n            else {\n              bVar20 = 0;\n            }\n          }\n          bVar19 = bVar19 | bVar20;\n          *q = bVar19;\n          sVar3 = image->number_channels;\n          pPVar5 = image->channel_map;\n          bVar2 = bVar8;\n          if (DAT_0041abe0 * p[sVar34 + sVar4 + sVar3 + pPVar5[2].offset] +\n              DAT_0041abd8 * p[sVar34 + sVar4 + sVar3 + pPVar5->offset] +\n              DAT_0041abdc * p[sVar34 + sVar4 + sVar3 + pPVar5[1].offset] <= DAT_003fc580) {\n            bVar2 = bVar40;\n          }\n          bVar19 = bVar19 | bVar2 * '\x02';\n          *q = bVar19;\n          QVar41 = _DAT_003fa400;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            QVar41 = p[sVar34 + sVar4 + sVar3 + image->channel_map[4].offset];\n          }\n          *q = bVar19 | QVar41 == _DAT_003fa400;\n          p = p + sVar34 + sVar4 + sVar3 + image->number_channels;\n          q = q + 1;\n        } while (q != pbVar1);\n      }" if (parenthesized_expression "(number_pixels != 3 && -1 < (long)(number_pixels - 3))" ( (binary_expression "number_pixels != 3 && -1 < (long)(number_pixels - 3)" (binary_expression "number_pixels != 3" identifier != number_literal) && (binary_expression "-1 < (long)(number_pixels - 3)" number_literal < (cast_expression "(long)(number_pixels - 3)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(number_pixels - 3)" ( (binary_expression "number_pixels - 3" identifier - number_literal) ))))) )) (compound_statement "{\n        pbVar1 = q + (number_pixels - 4 >> 2) + 1;\n        do {\n          *q = 0;\n          pPVar5 = image->channel_map;\n          uVar33 = (uint)bVar40;\n          if (DAT_003fc580 <\n              fVar17 * p[pPVar5[2].offset] +\n              fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset]) {\n            uVar33 = (uint)bVar8;\n          }\n          bVar20 = (byte)(uVar33 << 7);\n          *q = bVar20;\n          bVar19 = 0x40;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            if (p[image->channel_map[4].offset] == _DAT_003fa400) {\n              bVar19 = 0x40;\n            }\n            else {\n              bVar19 = 0;\n            }\n          }\n          bVar19 = bVar19 | bVar20;\n          *q = bVar19;\n          sVar34 = image->number_channels;\n          pPVar5 = image->channel_map;\n          uVar33 = (uint)bVar40;\n          if (DAT_003fc580 <\n              fVar17 * p[sVar34 + pPVar5[2].offset] +\n              fVar15 * p[sVar34 + pPVar5->offset] + fVar16 * p[sVar34 + pPVar5[1].offset]) {\n            uVar33 = (uint)bVar8;\n          }\n          bVar19 = bVar19 | (byte)(uVar33 << 5);\n          *q = bVar19;\n          bVar20 = 0x10;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            if (p[sVar34 + image->channel_map[4].offset] == _DAT_003fa400) {\n              bVar20 = 0x10;\n            }\n            else {\n              bVar20 = 0;\n            }\n          }\n          bVar19 = bVar19 | bVar20;\n          *q = bVar19;\n          sVar4 = image->number_channels;\n          pPVar5 = image->channel_map;\n          bVar2 = bVar40;\n          if (DAT_003fc580 <\n              fVar17 * p[sVar34 + sVar4 + pPVar5[2].offset] +\n              fVar15 * p[sVar34 + sVar4 + pPVar5->offset] +\n              fVar16 * p[sVar34 + sVar4 + pPVar5[1].offset]) {\n            bVar2 = bVar8;\n          }\n          bVar19 = bVar19 | bVar2 * '\b';\n          *q = bVar19;\n          bVar20 = 4;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            if (p[sVar34 + sVar4 + image->channel_map[4].offset] == _DAT_003fa400) {\n              bVar20 = 4;\n            }\n            else {\n              bVar20 = 0;\n            }\n          }\n          bVar19 = bVar19 | bVar20;\n          *q = bVar19;\n          sVar3 = image->number_channels;\n          pPVar5 = image->channel_map;\n          bVar2 = bVar8;\n          if (DAT_0041abe0 * p[sVar34 + sVar4 + sVar3 + pPVar5[2].offset] +\n              DAT_0041abd8 * p[sVar34 + sVar4 + sVar3 + pPVar5->offset] +\n              DAT_0041abdc * p[sVar34 + sVar4 + sVar3 + pPVar5[1].offset] <= DAT_003fc580) {\n            bVar2 = bVar40;\n          }\n          bVar19 = bVar19 | bVar2 * '\x02';\n          *q = bVar19;\n          QVar41 = _DAT_003fa400;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            QVar41 = p[sVar34 + sVar4 + sVar3 + image->channel_map[4].offset];\n          }\n          *q = bVar19 | QVar41 == _DAT_003fa400;\n          p = p + sVar34 + sVar4 + sVar3 + image->number_channels;\n          q = q + 1;\n        } while (q != pbVar1);\n      }" { (expression_statement "pbVar1 = q + (number_pixels - 4 >> 2) + 1;" (assignment_expression "pbVar1 = q + (number_pixels - 4 >> 2) + 1" identifier = (binary_expression "q + (number_pixels - 4 >> 2) + 1" (binary_expression "q + (number_pixels - 4 >> 2)" identifier + (parenthesized_expression "(number_pixels - 4 >> 2)" ( (binary_expression "number_pixels - 4 >> 2" (binary_expression "number_pixels - 4" identifier - number_literal) >> number_literal) ))) + number_literal)) ;) (do_statement "do {\n          *q = 0;\n          pPVar5 = image->channel_map;\n          uVar33 = (uint)bVar40;\n          if (DAT_003fc580 <\n              fVar17 * p[pPVar5[2].offset] +\n              fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset]) {\n            uVar33 = (uint)bVar8;\n          }\n          bVar20 = (byte)(uVar33 << 7);\n          *q = bVar20;\n          bVar19 = 0x40;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            if (p[image->channel_map[4].offset] == _DAT_003fa400) {\n              bVar19 = 0x40;\n            }\n            else {\n              bVar19 = 0;\n            }\n          }\n          bVar19 = bVar19 | bVar20;\n          *q = bVar19;\n          sVar34 = image->number_channels;\n          pPVar5 = image->channel_map;\n          uVar33 = (uint)bVar40;\n          if (DAT_003fc580 <\n              fVar17 * p[sVar34 + pPVar5[2].offset] +\n              fVar15 * p[sVar34 + pPVar5->offset] + fVar16 * p[sVar34 + pPVar5[1].offset]) {\n            uVar33 = (uint)bVar8;\n          }\n          bVar19 = bVar19 | (byte)(uVar33 << 5);\n          *q = bVar19;\n          bVar20 = 0x10;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            if (p[sVar34 + image->channel_map[4].offset] == _DAT_003fa400) {\n              bVar20 = 0x10;\n            }\n            else {\n              bVar20 = 0;\n            }\n          }\n          bVar19 = bVar19 | bVar20;\n          *q = bVar19;\n          sVar4 = image->number_channels;\n          pPVar5 = image->channel_map;\n          bVar2 = bVar40;\n          if (DAT_003fc580 <\n              fVar17 * p[sVar34 + sVar4 + pPVar5[2].offset] +\n              fVar15 * p[sVar34 + sVar4 + pPVar5->offset] +\n              fVar16 * p[sVar34 + sVar4 + pPVar5[1].offset]) {\n            bVar2 = bVar8;\n          }\n          bVar19 = bVar19 | bVar2 * '\b';\n          *q = bVar19;\n          bVar20 = 4;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            if (p[sVar34 + sVar4 + image->channel_map[4].offset] == _DAT_003fa400) {\n              bVar20 = 4;\n            }\n            else {\n              bVar20 = 0;\n            }\n          }\n          bVar19 = bVar19 | bVar20;\n          *q = bVar19;\n          sVar3 = image->number_channels;\n          pPVar5 = image->channel_map;\n          bVar2 = bVar8;\n          if (DAT_0041abe0 * p[sVar34 + sVar4 + sVar3 + pPVar5[2].offset] +\n              DAT_0041abd8 * p[sVar34 + sVar4 + sVar3 + pPVar5->offset] +\n              DAT_0041abdc * p[sVar34 + sVar4 + sVar3 + pPVar5[1].offset] <= DAT_003fc580) {\n            bVar2 = bVar40;\n          }\n          bVar19 = bVar19 | bVar2 * '\x02';\n          *q = bVar19;\n          QVar41 = _DAT_003fa400;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            QVar41 = p[sVar34 + sVar4 + sVar3 + image->channel_map[4].offset];\n          }\n          *q = bVar19 | QVar41 == _DAT_003fa400;\n          p = p + sVar34 + sVar4 + sVar3 + image->number_channels;\n          q = q + 1;\n        } while (q != pbVar1);" do (compound_statement "{\n          *q = 0;\n          pPVar5 = image->channel_map;\n          uVar33 = (uint)bVar40;\n          if (DAT_003fc580 <\n              fVar17 * p[pPVar5[2].offset] +\n              fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset]) {\n            uVar33 = (uint)bVar8;\n          }\n          bVar20 = (byte)(uVar33 << 7);\n          *q = bVar20;\n          bVar19 = 0x40;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            if (p[image->channel_map[4].offset] == _DAT_003fa400) {\n              bVar19 = 0x40;\n            }\n            else {\n              bVar19 = 0;\n            }\n          }\n          bVar19 = bVar19 | bVar20;\n          *q = bVar19;\n          sVar34 = image->number_channels;\n          pPVar5 = image->channel_map;\n          uVar33 = (uint)bVar40;\n          if (DAT_003fc580 <\n              fVar17 * p[sVar34 + pPVar5[2].offset] +\n              fVar15 * p[sVar34 + pPVar5->offset] + fVar16 * p[sVar34 + pPVar5[1].offset]) {\n            uVar33 = (uint)bVar8;\n          }\n          bVar19 = bVar19 | (byte)(uVar33 << 5);\n          *q = bVar19;\n          bVar20 = 0x10;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            if (p[sVar34 + image->channel_map[4].offset] == _DAT_003fa400) {\n              bVar20 = 0x10;\n            }\n            else {\n              bVar20 = 0;\n            }\n          }\n          bVar19 = bVar19 | bVar20;\n          *q = bVar19;\n          sVar4 = image->number_channels;\n          pPVar5 = image->channel_map;\n          bVar2 = bVar40;\n          if (DAT_003fc580 <\n              fVar17 * p[sVar34 + sVar4 + pPVar5[2].offset] +\n              fVar15 * p[sVar34 + sVar4 + pPVar5->offset] +\n              fVar16 * p[sVar34 + sVar4 + pPVar5[1].offset]) {\n            bVar2 = bVar8;\n          }\n          bVar19 = bVar19 | bVar2 * '\b';\n          *q = bVar19;\n          bVar20 = 4;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            if (p[sVar34 + sVar4 + image->channel_map[4].offset] == _DAT_003fa400) {\n              bVar20 = 4;\n            }\n            else {\n              bVar20 = 0;\n            }\n          }\n          bVar19 = bVar19 | bVar20;\n          *q = bVar19;\n          sVar3 = image->number_channels;\n          pPVar5 = image->channel_map;\n          bVar2 = bVar8;\n          if (DAT_0041abe0 * p[sVar34 + sVar4 + sVar3 + pPVar5[2].offset] +\n              DAT_0041abd8 * p[sVar34 + sVar4 + sVar3 + pPVar5->offset] +\n              DAT_0041abdc * p[sVar34 + sVar4 + sVar3 + pPVar5[1].offset] <= DAT_003fc580) {\n            bVar2 = bVar40;\n          }\n          bVar19 = bVar19 | bVar2 * '\x02';\n          *q = bVar19;\n          QVar41 = _DAT_003fa400;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            QVar41 = p[sVar34 + sVar4 + sVar3 + image->channel_map[4].offset];\n          }\n          *q = bVar19 | QVar41 == _DAT_003fa400;\n          p = p + sVar34 + sVar4 + sVar3 + image->number_channels;\n          q = q + 1;\n        }" { (expression_statement "*q = 0;" (assignment_expression "*q = 0" (pointer_expression "*q" * identifier) = number_literal) ;) (expression_statement "pPVar5 = image->channel_map;" (assignment_expression "pPVar5 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) (expression_statement "uVar33 = (uint)bVar40;" (assignment_expression "uVar33 = (uint)bVar40" identifier = (cast_expression "(uint)bVar40" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (DAT_003fc580 <\n              fVar17 * p[pPVar5[2].offset] +\n              fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset]) {\n            uVar33 = (uint)bVar8;\n          }" if (parenthesized_expression "(DAT_003fc580 <\n              fVar17 * p[pPVar5[2].offset] +\n              fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset])" ( (binary_expression "DAT_003fc580 <\n              fVar17 * p[pPVar5[2].offset] +\n              fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset]" identifier < (binary_expression "fVar17 * p[pPVar5[2].offset] +\n              fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset]" (binary_expression "fVar17 * p[pPVar5[2].offset] +\n              fVar16 * p[pPVar5[1].offset]" (binary_expression "fVar17 * p[pPVar5[2].offset]" identifier * (subscript_expression "p[pPVar5[2].offset]" identifier [ (field_expression "pPVar5[2].offset" (subscript_expression "pPVar5[2]" identifier [ number_literal ]) . field_identifier) ])) + (binary_expression "fVar16 * p[pPVar5[1].offset]" identifier * (subscript_expression "p[pPVar5[1].offset]" identifier [ (field_expression "pPVar5[1].offset" (subscript_expression "pPVar5[1]" identifier [ number_literal ]) . field_identifier) ]))) + (binary_expression "fVar15 * p[pPVar5->offset]" identifier * (subscript_expression "p[pPVar5->offset]" identifier [ (field_expression "pPVar5->offset" identifier -> field_identifier) ])))) )) (compound_statement "{\n            uVar33 = (uint)bVar8;\n          }" { (expression_statement "uVar33 = (uint)bVar8;" (assignment_expression "uVar33 = (uint)bVar8" identifier = (cast_expression "(uint)bVar8" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) })) (expression_statement "bVar20 = (byte)(uVar33 << 7);" (assignment_expression "bVar20 = (byte)(uVar33 << 7)" identifier = (call_expression "(byte)(uVar33 << 7)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar33 << 7)" ( (binary_expression "uVar33 << 7" identifier << number_literal) )))) ;) (expression_statement "*q = bVar20;" (assignment_expression "*q = bVar20" (pointer_expression "*q" * identifier) = identifier) ;) (expression_statement "bVar19 = 0x40;" (assignment_expression "bVar19 = 0x40" identifier = number_literal) ;) (if_statement "if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            if (p[image->channel_map[4].offset] == _DAT_003fa400) {\n              bVar19 = 0x40;\n            }\n            else {\n              bVar19 = 0;\n            }\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            if (p[image->channel_map[4].offset] == _DAT_003fa400) {\n              bVar19 = 0x40;\n            }\n            else {\n              bVar19 = 0;\n            }\n          }" { (if_statement "if (p[image->channel_map[4].offset] == _DAT_003fa400) {\n              bVar19 = 0x40;\n            }\n            else {\n              bVar19 = 0;\n            }" if (parenthesized_expression "(p[image->channel_map[4].offset] == _DAT_003fa400)" ( (binary_expression "p[image->channel_map[4].offset] == _DAT_003fa400" (subscript_expression "p[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) ]) == identifier) )) (compound_statement "{\n              bVar19 = 0x40;\n            }" { (expression_statement "bVar19 = 0x40;" (assignment_expression "bVar19 = 0x40" identifier = number_literal) ;) }) (else_clause "else {\n              bVar19 = 0;\n            }" else (compound_statement "{\n              bVar19 = 0;\n            }" { (expression_statement "bVar19 = 0;" (assignment_expression "bVar19 = 0" identifier = number_literal) ;) }))) })) (expression_statement "bVar19 = bVar19 | bVar20;" (assignment_expression "bVar19 = bVar19 | bVar20" identifier = (binary_expression "bVar19 | bVar20" identifier | identifier)) ;) (expression_statement "*q = bVar19;" (assignment_expression "*q = bVar19" (pointer_expression "*q" * identifier) = identifier) ;) (expression_statement "sVar34 = image->number_channels;" (assignment_expression "sVar34 = image->number_channels" identifier = (field_expression "image->number_channels" identifier -> field_identifier)) ;) (expression_statement "pPVar5 = image->channel_map;" (assignment_expression "pPVar5 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) (expression_statement "uVar33 = (uint)bVar40;" (assignment_expression "uVar33 = (uint)bVar40" identifier = (cast_expression "(uint)bVar40" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (DAT_003fc580 <\n              fVar17 * p[sVar34 + pPVar5[2].offset] +\n              fVar15 * p[sVar34 + pPVar5->offset] + fVar16 * p[sVar34 + pPVar5[1].offset]) {\n            uVar33 = (uint)bVar8;\n          }" if (parenthesized_expression "(DAT_003fc580 <\n              fVar17 * p[sVar34 + pPVar5[2].offset] +\n              fVar15 * p[sVar34 + pPVar5->offset] + fVar16 * p[sVar34 + pPVar5[1].offset])" ( (binary_expression "DAT_003fc580 <\n              fVar17 * p[sVar34 + pPVar5[2].offset] +\n              fVar15 * p[sVar34 + pPVar5->offset] + fVar16 * p[sVar34 + pPVar5[1].offset]" identifier < (binary_expression "fVar17 * p[sVar34 + pPVar5[2].offset] +\n              fVar15 * p[sVar34 + pPVar5->offset] + fVar16 * p[sVar34 + pPVar5[1].offset]" (binary_expression "fVar17 * p[sVar34 + pPVar5[2].offset] +\n              fVar15 * p[sVar34 + pPVar5->offset]" (binary_expression "fVar17 * p[sVar34 + pPVar5[2].offset]" identifier * (subscript_expression "p[sVar34 + pPVar5[2].offset]" identifier [ (binary_expression "sVar34 + pPVar5[2].offset" identifier + (field_expression "pPVar5[2].offset" (subscript_expression "pPVar5[2]" identifier [ number_literal ]) . field_identifier)) ])) + (binary_expression "fVar15 * p[sVar34 + pPVar5->offset]" identifier * (subscript_expression "p[sVar34 + pPVar5->offset]" identifier [ (binary_expression "sVar34 + pPVar5->offset" identifier + (field_expression "pPVar5->offset" identifier -> field_identifier)) ]))) + (binary_expression "fVar16 * p[sVar34 + pPVar5[1].offset]" identifier * (subscript_expression "p[sVar34 + pPVar5[1].offset]" identifier [ (binary_expression "sVar34 + pPVar5[1].offset" identifier + (field_expression "pPVar5[1].offset" (subscript_expression "pPVar5[1]" identifier [ number_literal ]) . field_identifier)) ])))) )) (compound_statement "{\n            uVar33 = (uint)bVar8;\n          }" { (expression_statement "uVar33 = (uint)bVar8;" (assignment_expression "uVar33 = (uint)bVar8" identifier = (cast_expression "(uint)bVar8" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) })) (expression_statement "bVar19 = bVar19 | (byte)(uVar33 << 5);" (assignment_expression "bVar19 = bVar19 | (byte)(uVar33 << 5)" identifier = (binary_expression "bVar19 | (byte)(uVar33 << 5)" identifier | (call_expression "(byte)(uVar33 << 5)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar33 << 5)" ( (binary_expression "uVar33 << 5" identifier << number_literal) ))))) ;) (expression_statement "*q = bVar19;" (assignment_expression "*q = bVar19" (pointer_expression "*q" * identifier) = identifier) ;) (expression_statement "bVar20 = 0x10;" (assignment_expression "bVar20 = 0x10" identifier = number_literal) ;) (if_statement "if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            if (p[sVar34 + image->channel_map[4].offset] == _DAT_003fa400) {\n              bVar20 = 0x10;\n            }\n            else {\n              bVar20 = 0;\n            }\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            if (p[sVar34 + image->channel_map[4].offset] == _DAT_003fa400) {\n              bVar20 = 0x10;\n            }\n            else {\n              bVar20 = 0;\n            }\n          }" { (if_statement "if (p[sVar34 + image->channel_map[4].offset] == _DAT_003fa400) {\n              bVar20 = 0x10;\n            }\n            else {\n              bVar20 = 0;\n            }" if (parenthesized_expression "(p[sVar34 + image->channel_map[4].offset] == _DAT_003fa400)" ( (binary_expression "p[sVar34 + image->channel_map[4].offset] == _DAT_003fa400" (subscript_expression "p[sVar34 + image->channel_map[4].offset]" identifier [ (binary_expression "sVar34 + 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)) ]) == identifier) )) (compound_statement "{\n              bVar20 = 0x10;\n            }" { (expression_statement "bVar20 = 0x10;" (assignment_expression "bVar20 = 0x10" identifier = number_literal) ;) }) (else_clause "else {\n              bVar20 = 0;\n            }" else (compound_statement "{\n              bVar20 = 0;\n            }" { (expression_statement "bVar20 = 0;" (assignment_expression "bVar20 = 0" identifier = number_literal) ;) }))) })) (expression_statement "bVar19 = bVar19 | bVar20;" (assignment_expression "bVar19 = bVar19 | bVar20" identifier = (binary_expression "bVar19 | bVar20" identifier | identifier)) ;) (expression_statement "*q = bVar19;" (assignment_expression "*q = bVar19" (pointer_expression "*q" * identifier) = identifier) ;) (expression_statement "sVar4 = image->number_channels;" (assignment_expression "sVar4 = image->number_channels" identifier = (field_expression "image->number_channels" identifier -> field_identifier)) ;) (expression_statement "pPVar5 = image->channel_map;" (assignment_expression "pPVar5 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) (expression_statement "bVar2 = bVar40;" (assignment_expression "bVar2 = bVar40" identifier = identifier) ;) (if_statement "if (DAT_003fc580 <\n              fVar17 * p[sVar34 + sVar4 + pPVar5[2].offset] +\n              fVar15 * p[sVar34 + sVar4 + pPVar5->offset] +\n              fVar16 * p[sVar34 + sVar4 + pPVar5[1].offset]) {\n            bVar2 = bVar8;\n          }" if (parenthesized_expression "(DAT_003fc580 <\n              fVar17 * p[sVar34 + sVar4 + pPVar5[2].offset] +\n              fVar15 * p[sVar34 + sVar4 + pPVar5->offset] +\n              fVar16 * p[sVar34 + sVar4 + pPVar5[1].offset])" ( (binary_expression "DAT_003fc580 <\n              fVar17 * p[sVar34 + sVar4 + pPVar5[2].offset] +\n              fVar15 * p[sVar34 + sVar4 + pPVar5->offset] +\n              fVar16 * p[sVar34 + sVar4 + pPVar5[1].offset]" identifier < (binary_expression "fVar17 * p[sVar34 + sVar4 + pPVar5[2].offset] +\n              fVar15 * p[sVar34 + sVar4 + pPVar5->offset] +\n              fVar16 * p[sVar34 + sVar4 + pPVar5[1].offset]" (binary_expression "fVar17 * p[sVar34 + sVar4 + pPVar5[2].offset] +\n              fVar15 * p[sVar34 + sVar4 + pPVar5->offset]" (binary_expression "fVar17 * p[sVar34 + sVar4 + pPVar5[2].offset]" identifier * (subscript_expression "p[sVar34 + sVar4 + pPVar5[2].offset]" identifier [ (binary_expression "sVar34 + sVar4 + pPVar5[2].offset" (binary_expression "sVar34 + sVar4" identifier + identifier) + (field_expression "pPVar5[2].offset" (subscript_expression "pPVar5[2]" identifier [ number_literal ]) . field_identifier)) ])) + (binary_expression "fVar15 * p[sVar34 + sVar4 + pPVar5->offset]" identifier * (subscript_expression "p[sVar34 + sVar4 + pPVar5->offset]" identifier [ (binary_expression "sVar34 + sVar4 + pPVar5->offset" (binary_expression "sVar34 + sVar4" identifier + identifier) + (field_expression "pPVar5->offset" identifier -> field_identifier)) ]))) + (binary_expression "fVar16 * p[sVar34 + sVar4 + pPVar5[1].offset]" identifier * (subscript_expression "p[sVar34 + sVar4 + pPVar5[1].offset]" identifier [ (binary_expression "sVar34 + sVar4 + pPVar5[1].offset" (binary_expression "sVar34 + sVar4" identifier + identifier) + (field_expression "pPVar5[1].offset" (subscript_expression "pPVar5[1]" identifier [ number_literal ]) . field_identifier)) ])))) )) (compound_statement "{\n            bVar2 = bVar8;\n          }" { (expression_statement "bVar2 = bVar8;" (assignment_expression "bVar2 = bVar8" identifier = identifier) ;) })) (expression_statement "bVar19 = bVar19 | bVar2 * '\b';" (assignment_expression "bVar19 = bVar19 | bVar2 * '\b'" identifier = (binary_expression "bVar19 | bVar2 * '\b'" identifier | (binary_expression "bVar2 * '\b'" identifier * (char_literal "'\b'" ' escape_sequence ')))) ;) (expression_statement "*q = bVar19;" (assignment_expression "*q = bVar19" (pointer_expression "*q" * identifier) = identifier) ;) (expression_statement "bVar20 = 4;" (assignment_expression "bVar20 = 4" identifier = number_literal) ;) (if_statement "if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            if (p[sVar34 + sVar4 + image->channel_map[4].offset] == _DAT_003fa400) {\n              bVar20 = 4;\n            }\n            else {\n              bVar20 = 0;\n            }\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            if (p[sVar34 + sVar4 + image->channel_map[4].offset] == _DAT_003fa400) {\n              bVar20 = 4;\n            }\n            else {\n              bVar20 = 0;\n            }\n          }" { (if_statement "if (p[sVar34 + sVar4 + image->channel_map[4].offset] == _DAT_003fa400) {\n              bVar20 = 4;\n            }\n            else {\n              bVar20 = 0;\n            }" if (parenthesized_expression "(p[sVar34 + sVar4 + image->channel_map[4].offset] == _DAT_003fa400)" ( (binary_expression "p[sVar34 + sVar4 + image->channel_map[4].offset] == _DAT_003fa400" (subscript_expression "p[sVar34 + sVar4 + image->channel_map[4].offset]" identifier [ (binary_expression "sVar34 + sVar4 + image->channel_map[4].offset" (binary_expression "sVar34 + sVar4" identifier + 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)) ]) == identifier) )) (compound_statement "{\n              bVar20 = 4;\n            }" { (expression_statement "bVar20 = 4;" (assignment_expression "bVar20 = 4" identifier = number_literal) ;) }) (else_clause "else {\n              bVar20 = 0;\n            }" else (compound_statement "{\n              bVar20 = 0;\n            }" { (expression_statement "bVar20 = 0;" (assignment_expression "bVar20 = 0" identifier = number_literal) ;) }))) })) (expression_statement "bVar19 = bVar19 | bVar20;" (assignment_expression "bVar19 = bVar19 | bVar20" identifier = (binary_expression "bVar19 | bVar20" identifier | identifier)) ;) (expression_statement "*q = bVar19;" (assignment_expression "*q = bVar19" (pointer_expression "*q" * identifier) = identifier) ;) (expression_statement "sVar3 = image->number_channels;" (assignment_expression "sVar3 = image->number_channels" identifier = (field_expression "image->number_channels" identifier -> field_identifier)) ;) (expression_statement "pPVar5 = image->channel_map;" (assignment_expression "pPVar5 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) (expression_statement "bVar2 = bVar8;" (assignment_expression "bVar2 = bVar8" identifier = identifier) ;) (if_statement "if (DAT_0041abe0 * p[sVar34 + sVar4 + sVar3 + pPVar5[2].offset] +\n              DAT_0041abd8 * p[sVar34 + sVar4 + sVar3 + pPVar5->offset] +\n              DAT_0041abdc * p[sVar34 + sVar4 + sVar3 + pPVar5[1].offset] <= DAT_003fc580) {\n            bVar2 = bVar40;\n          }" if (parenthesized_expression "(DAT_0041abe0 * p[sVar34 + sVar4 + sVar3 + pPVar5[2].offset] +\n              DAT_0041abd8 * p[sVar34 + sVar4 + sVar3 + pPVar5->offset] +\n              DAT_0041abdc * p[sVar34 + sVar4 + sVar3 + pPVar5[1].offset] <= DAT_003fc580)" ( (binary_expression "DAT_0041abe0 * p[sVar34 + sVar4 + sVar3 + pPVar5[2].offset] +\n              DAT_0041abd8 * p[sVar34 + sVar4 + sVar3 + pPVar5->offset] +\n              DAT_0041abdc * p[sVar34 + sVar4 + sVar3 + pPVar5[1].offset] <= DAT_003fc580" (binary_expression "DAT_0041abe0 * p[sVar34 + sVar4 + sVar3 + pPVar5[2].offset] +\n              DAT_0041abd8 * p[sVar34 + sVar4 + sVar3 + pPVar5->offset] +\n              DAT_0041abdc * p[sVar34 + sVar4 + sVar3 + pPVar5[1].offset]" (binary_expression "DAT_0041abe0 * p[sVar34 + sVar4 + sVar3 + pPVar5[2].offset] +\n              DAT_0041abd8 * p[sVar34 + sVar4 + sVar3 + pPVar5->offset]" (binary_expression "DAT_0041abe0 * p[sVar34 + sVar4 + sVar3 + pPVar5[2].offset]" identifier * (subscript_expression "p[sVar34 + sVar4 + sVar3 + pPVar5[2].offset]" identifier [ (binary_expression "sVar34 + sVar4 + sVar3 + pPVar5[2].offset" (binary_expression "sVar34 + sVar4 + sVar3" (binary_expression "sVar34 + sVar4" identifier + identifier) + identifier) + (field_expression "pPVar5[2].offset" (subscript_expression "pPVar5[2]" identifier [ number_literal ]) . field_identifier)) ])) + (binary_expression "DAT_0041abd8 * p[sVar34 + sVar4 + sVar3 + pPVar5->offset]" identifier * (subscript_expression "p[sVar34 + sVar4 + sVar3 + pPVar5->offset]" identifier [ (binary_expression "sVar34 + sVar4 + sVar3 + pPVar5->offset" (binary_expression "sVar34 + sVar4 + sVar3" (binary_expression "sVar34 + sVar4" identifier + identifier) + identifier) + (field_expression "pPVar5->offset" identifier -> field_identifier)) ]))) + (binary_expression "DAT_0041abdc * p[sVar34 + sVar4 + sVar3 + pPVar5[1].offset]" identifier * (subscript_expression "p[sVar34 + sVar4 + sVar3 + pPVar5[1].offset]" identifier [ (binary_expression "sVar34 + sVar4 + sVar3 + pPVar5[1].offset" (binary_expression "sVar34 + sVar4 + sVar3" (binary_expression "sVar34 + sVar4" identifier + identifier) + identifier) + (field_expression "pPVar5[1].offset" (subscript_expression "pPVar5[1]" identifier [ number_literal ]) . field_identifier)) ]))) <= identifier) )) (compound_statement "{\n            bVar2 = bVar40;\n          }" { (expression_statement "bVar2 = bVar40;" (assignment_expression "bVar2 = bVar40" identifier = identifier) ;) })) (expression_statement "bVar19 = bVar19 | bVar2 * '\x02';" (assignment_expression "bVar19 = bVar19 | bVar2 * '\x02'" identifier = (binary_expression "bVar19 | bVar2 * '\x02'" identifier | (binary_expression "bVar2 * '\x02'" identifier * (char_literal "'\x02'" ' escape_sequence ')))) ;) (expression_statement "*q = bVar19;" (assignment_expression "*q = bVar19" (pointer_expression "*q" * identifier) = identifier) ;) (expression_statement "QVar41 = _DAT_003fa400;" (assignment_expression "QVar41 = _DAT_003fa400" identifier = identifier) ;) (if_statement "if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            QVar41 = p[sVar34 + sVar4 + sVar3 + image->channel_map[4].offset];\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            QVar41 = p[sVar34 + sVar4 + sVar3 + image->channel_map[4].offset];\n          }" { (expression_statement "QVar41 = p[sVar34 + sVar4 + sVar3 + image->channel_map[4].offset];" (assignment_expression "QVar41 = p[sVar34 + sVar4 + sVar3 + image->channel_map[4].offset]" identifier = (subscript_expression "p[sVar34 + sVar4 + sVar3 + image->channel_map[4].offset]" identifier [ (binary_expression "sVar34 + sVar4 + sVar3 + image->channel_map[4].offset" (binary_expression "sVar34 + sVar4 + sVar3" (binary_expression "sVar34 + sVar4" identifier + identifier) + 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)) ])) ;) })) (expression_statement "*q = bVar19 | QVar41 == _DAT_003fa400;" (assignment_expression "*q = bVar19 | QVar41 == _DAT_003fa400" (pointer_expression "*q" * identifier) = (binary_expression "bVar19 | QVar41 == _DAT_003fa400" identifier | (binary_expression "QVar41 == _DAT_003fa400" identifier == identifier))) ;) (expression_statement "p = p + sVar34 + sVar4 + sVar3 + image->number_channels;" (assignment_expression "p = p + sVar34 + sVar4 + sVar3 + image->number_channels" identifier = (binary_expression "p + sVar34 + sVar4 + sVar3 + image->number_channels" (binary_expression "p + sVar34 + sVar4 + sVar3" (binary_expression "p + sVar34 + sVar4" (binary_expression "p + sVar34" identifier + identifier) + identifier) + identifier) + (field_expression "image->number_channels" identifier -> field_identifier))) ;) (expression_statement "q = q + 1;" (assignment_expression "q = q + 1" identifier = (binary_expression "q + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(q != pbVar1)" ( (binary_expression "q != pbVar1" identifier != identifier) )) ;) })) (if_statement "if ((number_pixels & 3) == 0) {\n        return;\n      }" if (parenthesized_expression "((number_pixels & 3) == 0)" ( (binary_expression "(number_pixels & 3) == 0" (parenthesized_expression "(number_pixels & 3)" ( (binary_expression "number_pixels & 3" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "*q = 0;" (assignment_expression "*q = 0" (pointer_expression "*q" * identifier) = number_literal) ;) (expression_statement "fVar17 = DAT_0041abe0;" (assignment_expression "fVar17 = DAT_0041abe0" identifier = identifier) ;) (expression_statement "fVar16 = DAT_0041abdc;" (assignment_expression "fVar16 = DAT_0041abdc" identifier = identifier) ;) (expression_statement "fVar15 = DAT_0041abd8;" (assignment_expression "fVar15 = DAT_0041abd8" identifier = identifier) ;) (expression_statement "fVar42 = _DAT_003fa400;" (assignment_expression "fVar42 = _DAT_003fa400" identifier = identifier) ;) (expression_statement "bVar19 = 7;" (assignment_expression "bVar19 = 7" identifier = number_literal) ;) (expression_statement "lVar37 = 0;" (assignment_expression "lVar37 = 0" identifier = number_literal) ;) (do_statement "do {\n        pPVar5 = image->channel_map;\n        bVar2 = bVar40;\n        if (DAT_003fc580 <\n            fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] + fVar17 * p[pPVar5[2].offset]\n           ) {\n          bVar2 = bVar8;\n        }\n        bVar20 = bVar2 << (bVar19 & 0x1f) | *q;\n        *q = bVar20;\n        QVar41 = fVar42;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          QVar41 = p[image->channel_map[4].offset];\n        }\n        uVar33 = (uint)(!NAN(QVar41) && !NAN(_DAT_003fa400));\n        if (QVar41 != _DAT_003fa400) {\n          uVar33 = 0;\n        }\n        *q = (byte)(uVar33 << (bVar19 - 1 & 0x1f)) | bVar20;\n        p = p + image->number_channels;\n        lVar37 = lVar37 + 2;\n        bVar19 = bVar19 - 2;\n      } while (lVar37 <= (long)(ulong)((uint)number_pixels & 3));" do (compound_statement "{\n        pPVar5 = image->channel_map;\n        bVar2 = bVar40;\n        if (DAT_003fc580 <\n            fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] + fVar17 * p[pPVar5[2].offset]\n           ) {\n          bVar2 = bVar8;\n        }\n        bVar20 = bVar2 << (bVar19 & 0x1f) | *q;\n        *q = bVar20;\n        QVar41 = fVar42;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          QVar41 = p[image->channel_map[4].offset];\n        }\n        uVar33 = (uint)(!NAN(QVar41) && !NAN(_DAT_003fa400));\n        if (QVar41 != _DAT_003fa400) {\n          uVar33 = 0;\n        }\n        *q = (byte)(uVar33 << (bVar19 - 1 & 0x1f)) | bVar20;\n        p = p + image->number_channels;\n        lVar37 = lVar37 + 2;\n        bVar19 = bVar19 - 2;\n      }" { (expression_statement "pPVar5 = image->channel_map;" (assignment_expression "pPVar5 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) (expression_statement "bVar2 = bVar40;" (assignment_expression "bVar2 = bVar40" identifier = identifier) ;) (if_statement "if (DAT_003fc580 <\n            fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] + fVar17 * p[pPVar5[2].offset]\n           ) {\n          bVar2 = bVar8;\n        }" if (parenthesized_expression "(DAT_003fc580 <\n            fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] + fVar17 * p[pPVar5[2].offset]\n           )" ( (binary_expression "DAT_003fc580 <\n            fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] + fVar17 * p[pPVar5[2].offset]" identifier < (binary_expression "fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] + fVar17 * p[pPVar5[2].offset]" (binary_expression "fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset]" (binary_expression "fVar16 * p[pPVar5[1].offset]" identifier * (subscript_expression "p[pPVar5[1].offset]" identifier [ (field_expression "pPVar5[1].offset" (subscript_expression "pPVar5[1]" identifier [ number_literal ]) . field_identifier) ])) + (binary_expression "fVar15 * p[pPVar5->offset]" identifier * (subscript_expression "p[pPVar5->offset]" identifier [ (field_expression "pPVar5->offset" identifier -> field_identifier) ]))) + (binary_expression "fVar17 * p[pPVar5[2].offset]" identifier * (subscript_expression "p[pPVar5[2].offset]" identifier [ (field_expression "pPVar5[2].offset" (subscript_expression "pPVar5[2]" identifier [ number_literal ]) . field_identifier) ])))) )) (compound_statement "{\n          bVar2 = bVar8;\n        }" { (expression_statement "bVar2 = bVar8;" (assignment_expression "bVar2 = bVar8" identifier = identifier) ;) })) (expression_statement "bVar20 = bVar2 << (bVar19 & 0x1f) | *q;" (assignment_expression "bVar20 = bVar2 << (bVar19 & 0x1f) | *q" identifier = (binary_expression "bVar2 << (bVar19 & 0x1f) | *q" (binary_expression "bVar2 << (bVar19 & 0x1f)" identifier << (parenthesized_expression "(bVar19 & 0x1f)" ( (binary_expression "bVar19 & 0x1f" identifier & number_literal) ))) | (pointer_expression "*q" * identifier))) ;) (expression_statement "*q = bVar20;" (assignment_expression "*q = bVar20" (pointer_expression "*q" * identifier) = identifier) ;) (expression_statement "QVar41 = fVar42;" (assignment_expression "QVar41 = fVar42" identifier = identifier) ;) (if_statement "if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          QVar41 = p[image->channel_map[4].offset];\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          QVar41 = p[image->channel_map[4].offset];\n        }" { (expression_statement "QVar41 = p[image->channel_map[4].offset];" (assignment_expression "QVar41 = p[image->channel_map[4].offset]" identifier = (subscript_expression "p[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) ])) ;) })) (expression_statement "uVar33 = (uint)(!NAN(QVar41) && !NAN(_DAT_003fa400));" (assignment_expression "uVar33 = (uint)(!NAN(QVar41) && !NAN(_DAT_003fa400))" identifier = (call_expression "(uint)(!NAN(QVar41) && !NAN(_DAT_003fa400))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(!NAN(QVar41) && !NAN(_DAT_003fa400))" ( (binary_expression "!NAN(QVar41) && !NAN(_DAT_003fa400)" (unary_expression "!NAN(QVar41)" ! (call_expression "NAN(QVar41)" identifier (argument_list "(QVar41)" ( identifier )))) && (unary_expression "!NAN(_DAT_003fa400)" ! (call_expression "NAN(_DAT_003fa400)" identifier (argument_list "(_DAT_003fa400)" ( identifier ))))) )))) ;) (if_statement "if (QVar41 != _DAT_003fa400) {\n          uVar33 = 0;\n        }" if (parenthesized_expression "(QVar41 != _DAT_003fa400)" ( (binary_expression "QVar41 != _DAT_003fa400" identifier != identifier) )) (compound_statement "{\n          uVar33 = 0;\n        }" { (expression_statement "uVar33 = 0;" (assignment_expression "uVar33 = 0" identifier = number_literal) ;) })) (expression_statement "*q = (byte)(uVar33 << (bVar19 - 1 & 0x1f)) | bVar20;" (assignment_expression "*q = (byte)(uVar33 << (bVar19 - 1 & 0x1f)) | bVar20" (pointer_expression "*q" * identifier) = (binary_expression "(byte)(uVar33 << (bVar19 - 1 & 0x1f)) | bVar20" (call_expression "(byte)(uVar33 << (bVar19 - 1 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar33 << (bVar19 - 1 & 0x1f))" ( (binary_expression "uVar33 << (bVar19 - 1 & 0x1f)" identifier << (parenthesized_expression "(bVar19 - 1 & 0x1f)" ( (binary_expression "bVar19 - 1 & 0x1f" (binary_expression "bVar19 - 1" identifier - number_literal) & number_literal) ))) ))) | identifier)) ;) (expression_statement "p = p + image->number_channels;" (assignment_expression "p = p + image->number_channels" identifier = (binary_expression "p + image->number_channels" identifier + (field_expression "image->number_channels" identifier -> field_identifier))) ;) (expression_statement "lVar37 = lVar37 + 2;" (assignment_expression "lVar37 = lVar37 + 2" identifier = (binary_expression "lVar37 + 2" identifier + number_literal)) ;) (expression_statement "bVar19 = bVar19 - 2;" (assignment_expression "bVar19 = bVar19 - 2" identifier = (binary_expression "bVar19 - 2" identifier - number_literal)) ;) }) while (parenthesized_expression "(lVar37 <= (long)(ulong)((uint)number_pixels & 3))" ( (binary_expression "lVar37 <= (long)(ulong)((uint)number_pixels & 3)" identifier <= (cast_expression "(long)(ulong)((uint)number_pixels & 3)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (call_expression "(ulong)((uint)number_pixels & 3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((uint)number_pixels & 3)" ( (binary_expression "(uint)number_pixels & 3" (cast_expression "(uint)number_pixels" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))))) )) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar36 == 4) {\n      pbVar1 = q + number_pixels;\n      if ((long)number_pixels < 1) {\n        return;\n      }\n      do {\n        pPVar5 = image->channel_map;\n        fVar43 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                 fVar17 * p[pPVar5[2].offset];\n        if (NAN(fVar43)) {\n          bVar19 = 0;\n        }\n        else {\n          bVar19 = 0;\n          if (0.0 < fVar43) {\n            dVar6 = (double)fVar43 / dVar13;\n            bVar19 = 0xff;\n            if (dVar6 < dVar14) {\n              bVar19 = (byte)(int)(dVar6 + dVar9);\n            }\n          }\n        }\n        *q = bVar19 & 0xf0;\n        QVar41 = fVar42;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          QVar41 = p[image->channel_map[4].offset];\n        }\n        *q = bVar19 & 0xf0 | (byte)(int)((double)QVar41 * dVar18 + dVar9) & 0xf;\n        p = p + image->number_channels;\n        q = q + 1;\n      } while (q != pbVar1);\n      return;\n    }" if (parenthesized_expression "(uVar36 == 4)" ( (binary_expression "uVar36 == 4" identifier == number_literal) )) (compound_statement "{\n      pbVar1 = q + number_pixels;\n      if ((long)number_pixels < 1) {\n        return;\n      }\n      do {\n        pPVar5 = image->channel_map;\n        fVar43 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                 fVar17 * p[pPVar5[2].offset];\n        if (NAN(fVar43)) {\n          bVar19 = 0;\n        }\n        else {\n          bVar19 = 0;\n          if (0.0 < fVar43) {\n            dVar6 = (double)fVar43 / dVar13;\n            bVar19 = 0xff;\n            if (dVar6 < dVar14) {\n              bVar19 = (byte)(int)(dVar6 + dVar9);\n            }\n          }\n        }\n        *q = bVar19 & 0xf0;\n        QVar41 = fVar42;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          QVar41 = p[image->channel_map[4].offset];\n        }\n        *q = bVar19 & 0xf0 | (byte)(int)((double)QVar41 * dVar18 + dVar9) & 0xf;\n        p = p + image->number_channels;\n        q = q + 1;\n      } while (q != pbVar1);\n      return;\n    }" { (expression_statement "pbVar1 = q + number_pixels;" (assignment_expression "pbVar1 = q + number_pixels" identifier = (binary_expression "q + number_pixels" identifier + identifier)) ;) (if_statement "if ((long)number_pixels < 1) {\n        return;\n      }" if (parenthesized_expression "((long)number_pixels < 1)" ( (binary_expression "(long)number_pixels < 1" (cast_expression "(long)number_pixels" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (do_statement "do {\n        pPVar5 = image->channel_map;\n        fVar43 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                 fVar17 * p[pPVar5[2].offset];\n        if (NAN(fVar43)) {\n          bVar19 = 0;\n        }\n        else {\n          bVar19 = 0;\n          if (0.0 < fVar43) {\n            dVar6 = (double)fVar43 / dVar13;\n            bVar19 = 0xff;\n            if (dVar6 < dVar14) {\n              bVar19 = (byte)(int)(dVar6 + dVar9);\n            }\n          }\n        }\n        *q = bVar19 & 0xf0;\n        QVar41 = fVar42;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          QVar41 = p[image->channel_map[4].offset];\n        }\n        *q = bVar19 & 0xf0 | (byte)(int)((double)QVar41 * dVar18 + dVar9) & 0xf;\n        p = p + image->number_channels;\n        q = q + 1;\n      } while (q != pbVar1);" do (compound_statement "{\n        pPVar5 = image->channel_map;\n        fVar43 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                 fVar17 * p[pPVar5[2].offset];\n        if (NAN(fVar43)) {\n          bVar19 = 0;\n        }\n        else {\n          bVar19 = 0;\n          if (0.0 < fVar43) {\n            dVar6 = (double)fVar43 / dVar13;\n            bVar19 = 0xff;\n            if (dVar6 < dVar14) {\n              bVar19 = (byte)(int)(dVar6 + dVar9);\n            }\n          }\n        }\n        *q = bVar19 & 0xf0;\n        QVar41 = fVar42;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          QVar41 = p[image->channel_map[4].offset];\n        }\n        *q = bVar19 & 0xf0 | (byte)(int)((double)QVar41 * dVar18 + dVar9) & 0xf;\n        p = p + image->number_channels;\n        q = q + 1;\n      }" { (expression_statement "pPVar5 = image->channel_map;" (assignment_expression "pPVar5 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) (expression_statement "fVar43 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                 fVar17 * p[pPVar5[2].offset];" (assignment_expression "fVar43 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                 fVar17 * p[pPVar5[2].offset]" identifier = (binary_expression "fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                 fVar17 * p[pPVar5[2].offset]" (binary_expression "fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset]" (binary_expression "fVar16 * p[pPVar5[1].offset]" identifier * (subscript_expression "p[pPVar5[1].offset]" identifier [ (field_expression "pPVar5[1].offset" (subscript_expression "pPVar5[1]" identifier [ number_literal ]) . field_identifier) ])) + (binary_expression "fVar15 * p[pPVar5->offset]" identifier * (subscript_expression "p[pPVar5->offset]" identifier [ (field_expression "pPVar5->offset" identifier -> field_identifier) ]))) + (binary_expression "fVar17 * p[pPVar5[2].offset]" identifier * (subscript_expression "p[pPVar5[2].offset]" identifier [ (field_expression "pPVar5[2].offset" (subscript_expression "pPVar5[2]" identifier [ number_literal ]) . field_identifier) ])))) ;) (if_statement "if (NAN(fVar43)) {\n          bVar19 = 0;\n        }\n        else {\n          bVar19 = 0;\n          if (0.0 < fVar43) {\n            dVar6 = (double)fVar43 / dVar13;\n            bVar19 = 0xff;\n            if (dVar6 < dVar14) {\n              bVar19 = (byte)(int)(dVar6 + dVar9);\n            }\n          }\n        }" if (parenthesized_expression "(NAN(fVar43))" ( (call_expression "NAN(fVar43)" identifier (argument_list "(fVar43)" ( identifier ))) )) (compound_statement "{\n          bVar19 = 0;\n        }" { (expression_statement "bVar19 = 0;" (assignment_expression "bVar19 = 0" identifier = number_literal) ;) }) (else_clause "else {\n          bVar19 = 0;\n          if (0.0 < fVar43) {\n            dVar6 = (double)fVar43 / dVar13;\n            bVar19 = 0xff;\n            if (dVar6 < dVar14) {\n              bVar19 = (byte)(int)(dVar6 + dVar9);\n            }\n          }\n        }" else (compound_statement "{\n          bVar19 = 0;\n          if (0.0 < fVar43) {\n            dVar6 = (double)fVar43 / dVar13;\n            bVar19 = 0xff;\n            if (dVar6 < dVar14) {\n              bVar19 = (byte)(int)(dVar6 + dVar9);\n            }\n          }\n        }" { (expression_statement "bVar19 = 0;" (assignment_expression "bVar19 = 0" identifier = number_literal) ;) (if_statement "if (0.0 < fVar43) {\n            dVar6 = (double)fVar43 / dVar13;\n            bVar19 = 0xff;\n            if (dVar6 < dVar14) {\n              bVar19 = (byte)(int)(dVar6 + dVar9);\n            }\n          }" if (parenthesized_expression "(0.0 < fVar43)" ( (binary_expression "0.0 < fVar43" number_literal < identifier) )) (compound_statement "{\n            dVar6 = (double)fVar43 / dVar13;\n            bVar19 = 0xff;\n            if (dVar6 < dVar14) {\n              bVar19 = (byte)(int)(dVar6 + dVar9);\n            }\n          }" { (expression_statement "dVar6 = (double)fVar43 / dVar13;" (assignment_expression "dVar6 = (double)fVar43 / dVar13" identifier = (binary_expression "(double)fVar43 / dVar13" (cast_expression "(double)fVar43" ( (type_descriptor "double" primitive_type) ) identifier) / identifier)) ;) (expression_statement "bVar19 = 0xff;" (assignment_expression "bVar19 = 0xff" identifier = number_literal) ;) (if_statement "if (dVar6 < dVar14) {\n              bVar19 = (byte)(int)(dVar6 + dVar9);\n            }" if (parenthesized_expression "(dVar6 < dVar14)" ( (binary_expression "dVar6 < dVar14" identifier < identifier) )) (compound_statement "{\n              bVar19 = (byte)(int)(dVar6 + dVar9);\n            }" { (expression_statement "bVar19 = (byte)(int)(dVar6 + dVar9);" (assignment_expression "bVar19 = (byte)(int)(dVar6 + dVar9)" identifier = (call_expression "(byte)(int)(dVar6 + dVar9)" (call_expression "(byte)(int)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(int)" ( identifier ))) (argument_list "(dVar6 + dVar9)" ( (binary_expression "dVar6 + dVar9" identifier + identifier) )))) ;) })) })) }))) (expression_statement "*q = bVar19 & 0xf0;" (assignment_expression "*q = bVar19 & 0xf0" (pointer_expression "*q" * identifier) = (binary_expression "bVar19 & 0xf0" identifier & number_literal)) ;) (expression_statement "QVar41 = fVar42;" (assignment_expression "QVar41 = fVar42" identifier = identifier) ;) (if_statement "if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          QVar41 = p[image->channel_map[4].offset];\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          QVar41 = p[image->channel_map[4].offset];\n        }" { (expression_statement "QVar41 = p[image->channel_map[4].offset];" (assignment_expression "QVar41 = p[image->channel_map[4].offset]" identifier = (subscript_expression "p[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) ])) ;) })) (expression_statement "*q = bVar19 & 0xf0 | (byte)(int)((double)QVar41 * dVar18 + dVar9) & 0xf;" (assignment_expression "*q = bVar19 & 0xf0 | (byte)(int)((double)QVar41 * dVar18 + dVar9) & 0xf" (pointer_expression "*q" * identifier) = (binary_expression "bVar19 & 0xf0 | (byte)(int)((double)QVar41 * dVar18 + dVar9) & 0xf" (binary_expression "bVar19 & 0xf0" identifier & number_literal) | (binary_expression "(byte)(int)((double)QVar41 * dVar18 + dVar9) & 0xf" (call_expression "(byte)(int)((double)QVar41 * dVar18 + dVar9)" (call_expression "(byte)(int)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(int)" ( identifier ))) (argument_list "((double)QVar41 * dVar18 + dVar9)" ( (binary_expression "(double)QVar41 * dVar18 + dVar9" (binary_expression "(double)QVar41 * dVar18" (cast_expression "(double)QVar41" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) + identifier) ))) & number_literal))) ;) (expression_statement "p = p + image->number_channels;" (assignment_expression "p = p + image->number_channels" identifier = (binary_expression "p + image->number_channels" identifier + (field_expression "image->number_channels" identifier -> field_identifier))) ;) (expression_statement "q = q + 1;" (assignment_expression "q = q + 1" identifier = (binary_expression "q + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(q != pbVar1)" ( (binary_expression "q != pbVar1" identifier != identifier) )) ;) (return_statement "return;" return ;) })) (labeled_statement "LAB_002734da:\n    uVar38 = 0;" statement_identifier : (expression_statement "uVar38 = 0;" (assignment_expression "uVar38 = 0" identifier = number_literal) ;)) (if_statement "if (uVar36 == 0) goto LAB_002734e9;" if (parenthesized_expression "(uVar36 == 0)" ( (binary_expression "uVar36 == 0" identifier == number_literal) )) (goto_statement "goto LAB_002734e9;" goto statement_identifier ;)) }) (else_clause "else {\n    if (uVar36 == 0x20) {\n      if (quantum_info->format == FloatingPointQuantumFormat) {\n        if ((long)number_pixels < 1) {\n          return;\n        }\n        MVar39 = 0;\n        do {\n          pPVar5 = image->channel_map;\n          fVar43 = (float)((double)(fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                                   fVar17 * p[pPVar5[2].offset]) *\n                           (quantum_info->state).inverse_scale + quantum_info->minimum);\n          uVar25 = (uchar)((uint)fVar43 >> 8);\n          uVar31 = (uchar)((uint)fVar43 >> 0x10);\n          uVar21 = (uchar)((uint)fVar43 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            *q = SUB41(fVar43,0);\n            q[1] = uVar25;\n            q[2] = uVar31;\n            q[3] = uVar21;\n          }\n          else {\n            *q = uVar21;\n            q[1] = uVar31;\n            q[2] = uVar25;\n            q[3] = SUB41(fVar43,0);\n          }\n          QVar41 = fVar42;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            QVar41 = p[image->channel_map[4].offset];\n          }\n          fVar43 = (float)((double)QVar41 * (quantum_info->state).inverse_scale +\n                          quantum_info->minimum);\n          uVar21 = (uchar)((uint)fVar43 >> 8);\n          uVar25 = (uchar)((uint)fVar43 >> 0x10);\n          uVar31 = (uchar)((uint)fVar43 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            q[4] = SUB41(fVar43,0);\n            q[5] = uVar21;\n            q[6] = uVar25;\n            q[7] = uVar31;\n          }\n          else {\n            q[4] = uVar31;\n            q[5] = uVar25;\n            q[6] = uVar21;\n            q[7] = SUB41(fVar43,0);\n          }\n          p = p + image->number_channels;\n          q = q + quantum_info->pad + 8;\n          MVar39 = MVar39 + 1;\n        } while (MVar39 != number_pixels);\n        return;\n      }\n      MVar39 = 0;\n      if ((long)number_pixels < 1) {\n        return;\n      }\n      do {\n        pPVar5 = image->channel_map;\n        fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                 fVar17 * p[pPVar5[2].offset];\n        if (NAN(fVar42)) {\n          uVar24 = 0;\n        }\n        else {\n          uVar24 = 0;\n          if ((0.0 < fVar42) && (uVar24 = 0xffffffff, (double)fVar42 * dVar7 < dVar12)) {\n            uVar24 = (undefined4)(long)((double)fVar42 * dVar7 + dVar9);\n          }\n        }\n        uVar21 = (uchar)((uint)uVar24 >> 8);\n        uVar25 = (uchar)((uint)uVar24 >> 0x10);\n        uVar31 = (uchar)((uint)uVar24 >> 0x18);\n        if (quantum_info->endian == LSBEndian) {\n          *q = (uchar)uVar24;\n          q[1] = uVar21;\n          q[2] = uVar25;\n          q[3] = uVar31;\n        }\n        else {\n          *q = uVar31;\n          q[1] = uVar25;\n          q[2] = uVar21;\n          q[3] = (uchar)uVar24;\n        }\n        uVar24 = 0xffffffff;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          fVar42 = p[image->channel_map[4].offset];\n          if (NAN(fVar42)) {\n            uVar24 = 0;\n          }\n          else {\n            uVar24 = 0;\n            if ((0.0 < fVar42) &&\n               (uVar24 = 0xffffffff, (double)fVar42 * DAT_00404920 < DAT_00404928)) {\n              uVar24 = (int)(long)((double)fVar42 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }\n        uVar21 = (uchar)((uint)uVar24 >> 8);\n        uVar25 = (uchar)((uint)uVar24 >> 0x10);\n        uVar31 = (uchar)((uint)uVar24 >> 0x18);\n        if (quantum_info->endian == LSBEndian) {\n          q[4] = (uchar)uVar24;\n          q[5] = uVar21;\n          q[6] = uVar25;\n          q[7] = uVar31;\n        }\n        else {\n          q[4] = uVar31;\n          q[5] = uVar25;\n          q[6] = uVar21;\n          q[7] = (uchar)uVar24;\n        }\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 8;\n        MVar39 = MVar39 + 1;\n      } while (MVar39 != number_pixels);\n      return;\n    }\n    if (uVar36 != 0x40) {\n      if (uVar36 == 0x10) {\n        if (quantum_info->format == FloatingPointQuantumFormat) {\n          if ((long)number_pixels < 1) {\n            return;\n          }\n          MVar39 = 0;\n          do {\n            pPVar5 = image->channel_map;\n            uVar22 = SinglePrecisionToHalf\n                               ((float)((double)(DAT_0041abdc * p[pPVar5[1].offset] +\n                                                 DAT_0041abd8 * p[pPVar5->offset] +\n                                                DAT_0041abe0 * p[pPVar5[2].offset]) * DAT_003f9c60))\n            ;\n            uVar21 = (uchar)(uVar22 >> 8);\n            if (quantum_info->endian == LSBEndian) {\n              *q = (uchar)uVar22;\n              q[1] = uVar21;\n            }\n            else {\n              *q = uVar21;\n              q[1] = (uchar)uVar22;\n            }\n            QVar41 = _DAT_003fa400;\n            if (image->channel_map[4].traits != UndefinedPixelTrait) {\n              QVar41 = p[image->channel_map[4].offset];\n            }\n            uVar22 = SinglePrecisionToHalf((float)((double)QVar41 * DAT_003f9c60));\n            uVar21 = (uchar)(uVar22 >> 8);\n            if (quantum_info->endian == LSBEndian) {\n              q[2] = (uchar)uVar22;\n              q[3] = uVar21;\n            }\n            else {\n              q[2] = uVar21;\n              q[3] = (uchar)uVar22;\n            }\n            p = p + image->number_channels;\n            q = q + quantum_info->pad + 4;\n            MVar39 = MVar39 + 1;\n          } while (MVar39 != number_pixels);\n          return;\n        }\n        MVar39 = 0;\n        if ((long)number_pixels < 1) {\n          return;\n        }\n        do {\n          pPVar5 = image->channel_map;\n          fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                   fVar17 * p[pPVar5[2].offset];\n          if (NAN(fVar42)) {\n            uVar23 = 0;\n          }\n          else {\n            uVar23 = 0;\n            if ((0.0 < fVar42) && (uVar23 = 0xffff, fVar42 < _DAT_003fa400)) {\n              uVar23 = (undefined2)(int)((double)fVar42 + dVar9);\n            }\n          }\n          uVar21 = (uchar)((ushort)uVar23 >> 8);\n          if (quantum_info->endian == LSBEndian) {\n            *q = (uchar)uVar23;\n            q[1] = uVar21;\n          }\n          else {\n            *q = uVar21;\n            q[1] = (uchar)uVar23;\n          }\n          uVar23 = 0xffff;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            fVar42 = p[image->channel_map[4].offset];\n            if (NAN(fVar42)) {\n              uVar23 = 0;\n            }\n            else {\n              uVar23 = 0;\n              if ((0.0 < fVar42) && (uVar23 = 0xffff, fVar42 < _DAT_003fa400)) {\n                uVar23 = (short)(int)((double)fVar42 + dVar9);\n              }\n            }\n          }\n          uVar21 = (uchar)((ushort)uVar23 >> 8);\n          if (quantum_info->endian == LSBEndian) {\n            q[2] = (uchar)uVar23;\n            q[3] = uVar21;\n          }\n          else {\n            q[2] = uVar21;\n            q[3] = (uchar)uVar23;\n          }\n          p = p + image->number_channels;\n          q = q + quantum_info->pad + 4;\n          MVar39 = MVar39 + 1;\n        } while (MVar39 != number_pixels);\n        return;\n      }\n      goto LAB_002734da;\n    }\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if ((long)number_pixels < 1) {\n        return;\n      }\n      MVar39 = 0;\n      do {\n        pPVar5 = image->channel_map;\n        dVar6 = (double)(fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                        fVar17 * p[pPVar5[2].offset]) * (quantum_info->state).inverse_scale +\n                quantum_info->minimum;\n        uVar25 = (uchar)((ulong)dVar6 >> 8);\n        uVar28 = (uchar)((ulong)dVar6 >> 0x10);\n        uVar29 = (uchar)((ulong)dVar6 >> 0x18);\n        uVar30 = (uchar)((ulong)dVar6 >> 0x20);\n        uVar31 = (uchar)((ulong)dVar6 >> 0x28);\n        uVar32 = (uchar)((ulong)dVar6 >> 0x30);\n        uVar21 = (uchar)((ulong)dVar6 >> 0x38);\n        if (quantum_info->endian == LSBEndian) {\n          *q = SUB81(dVar6,0);\n          q[1] = uVar25;\n          q[2] = uVar28;\n          q[3] = uVar29;\n          q[4] = uVar30;\n          q[5] = uVar31;\n          q[6] = uVar32;\n          q[7] = uVar21;\n        }\n        else {\n          *q = uVar21;\n          q[1] = uVar32;\n          q[2] = uVar31;\n          q[3] = uVar30;\n          q[4] = uVar29;\n          q[5] = uVar28;\n          q[6] = uVar25;\n          q[7] = SUB81(dVar6,0);\n        }\n        QVar41 = fVar42;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          QVar41 = p[image->channel_map[4].offset];\n        }\n        dVar6 = (double)QVar41 * (quantum_info->state).inverse_scale + quantum_info->minimum;\n        uVar21 = (uchar)((ulong)dVar6 >> 8);\n        uVar25 = (uchar)((ulong)dVar6 >> 0x10);\n        uVar31 = (uchar)((ulong)dVar6 >> 0x18);\n        uVar32 = (uchar)((ulong)dVar6 >> 0x20);\n        uVar30 = (uchar)((ulong)dVar6 >> 0x28);\n        uVar29 = (uchar)((ulong)dVar6 >> 0x30);\n        uVar28 = (uchar)((ulong)dVar6 >> 0x38);\n        if (quantum_info->endian == LSBEndian) {\n          q[8] = SUB81(dVar6,0);\n          q[9] = uVar21;\n          q[10] = uVar25;\n          q[0xb] = uVar31;\n          q[0xc] = uVar32;\n          q[0xd] = uVar30;\n          q[0xe] = uVar29;\n          q[0xf] = uVar28;\n        }\n        else {\n          q[8] = uVar28;\n          q[9] = uVar29;\n          q[10] = uVar30;\n          q[0xb] = uVar32;\n          q[0xc] = uVar31;\n          q[0xd] = uVar25;\n          q[0xe] = uVar21;\n          q[0xf] = SUB81(dVar6,0);\n        }\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 0x10;\n        MVar39 = MVar39 + 1;\n      } while (MVar39 != number_pixels);\n      return;\n    }\n  }" else (compound_statement "{\n    if (uVar36 == 0x20) {\n      if (quantum_info->format == FloatingPointQuantumFormat) {\n        if ((long)number_pixels < 1) {\n          return;\n        }\n        MVar39 = 0;\n        do {\n          pPVar5 = image->channel_map;\n          fVar43 = (float)((double)(fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                                   fVar17 * p[pPVar5[2].offset]) *\n                           (quantum_info->state).inverse_scale + quantum_info->minimum);\n          uVar25 = (uchar)((uint)fVar43 >> 8);\n          uVar31 = (uchar)((uint)fVar43 >> 0x10);\n          uVar21 = (uchar)((uint)fVar43 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            *q = SUB41(fVar43,0);\n            q[1] = uVar25;\n            q[2] = uVar31;\n            q[3] = uVar21;\n          }\n          else {\n            *q = uVar21;\n            q[1] = uVar31;\n            q[2] = uVar25;\n            q[3] = SUB41(fVar43,0);\n          }\n          QVar41 = fVar42;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            QVar41 = p[image->channel_map[4].offset];\n          }\n          fVar43 = (float)((double)QVar41 * (quantum_info->state).inverse_scale +\n                          quantum_info->minimum);\n          uVar21 = (uchar)((uint)fVar43 >> 8);\n          uVar25 = (uchar)((uint)fVar43 >> 0x10);\n          uVar31 = (uchar)((uint)fVar43 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            q[4] = SUB41(fVar43,0);\n            q[5] = uVar21;\n            q[6] = uVar25;\n            q[7] = uVar31;\n          }\n          else {\n            q[4] = uVar31;\n            q[5] = uVar25;\n            q[6] = uVar21;\n            q[7] = SUB41(fVar43,0);\n          }\n          p = p + image->number_channels;\n          q = q + quantum_info->pad + 8;\n          MVar39 = MVar39 + 1;\n        } while (MVar39 != number_pixels);\n        return;\n      }\n      MVar39 = 0;\n      if ((long)number_pixels < 1) {\n        return;\n      }\n      do {\n        pPVar5 = image->channel_map;\n        fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                 fVar17 * p[pPVar5[2].offset];\n        if (NAN(fVar42)) {\n          uVar24 = 0;\n        }\n        else {\n          uVar24 = 0;\n          if ((0.0 < fVar42) && (uVar24 = 0xffffffff, (double)fVar42 * dVar7 < dVar12)) {\n            uVar24 = (undefined4)(long)((double)fVar42 * dVar7 + dVar9);\n          }\n        }\n        uVar21 = (uchar)((uint)uVar24 >> 8);\n        uVar25 = (uchar)((uint)uVar24 >> 0x10);\n        uVar31 = (uchar)((uint)uVar24 >> 0x18);\n        if (quantum_info->endian == LSBEndian) {\n          *q = (uchar)uVar24;\n          q[1] = uVar21;\n          q[2] = uVar25;\n          q[3] = uVar31;\n        }\n        else {\n          *q = uVar31;\n          q[1] = uVar25;\n          q[2] = uVar21;\n          q[3] = (uchar)uVar24;\n        }\n        uVar24 = 0xffffffff;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          fVar42 = p[image->channel_map[4].offset];\n          if (NAN(fVar42)) {\n            uVar24 = 0;\n          }\n          else {\n            uVar24 = 0;\n            if ((0.0 < fVar42) &&\n               (uVar24 = 0xffffffff, (double)fVar42 * DAT_00404920 < DAT_00404928)) {\n              uVar24 = (int)(long)((double)fVar42 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }\n        uVar21 = (uchar)((uint)uVar24 >> 8);\n        uVar25 = (uchar)((uint)uVar24 >> 0x10);\n        uVar31 = (uchar)((uint)uVar24 >> 0x18);\n        if (quantum_info->endian == LSBEndian) {\n          q[4] = (uchar)uVar24;\n          q[5] = uVar21;\n          q[6] = uVar25;\n          q[7] = uVar31;\n        }\n        else {\n          q[4] = uVar31;\n          q[5] = uVar25;\n          q[6] = uVar21;\n          q[7] = (uchar)uVar24;\n        }\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 8;\n        MVar39 = MVar39 + 1;\n      } while (MVar39 != number_pixels);\n      return;\n    }\n    if (uVar36 != 0x40) {\n      if (uVar36 == 0x10) {\n        if (quantum_info->format == FloatingPointQuantumFormat) {\n          if ((long)number_pixels < 1) {\n            return;\n          }\n          MVar39 = 0;\n          do {\n            pPVar5 = image->channel_map;\n            uVar22 = SinglePrecisionToHalf\n                               ((float)((double)(DAT_0041abdc * p[pPVar5[1].offset] +\n                                                 DAT_0041abd8 * p[pPVar5->offset] +\n                                                DAT_0041abe0 * p[pPVar5[2].offset]) * DAT_003f9c60))\n            ;\n            uVar21 = (uchar)(uVar22 >> 8);\n            if (quantum_info->endian == LSBEndian) {\n              *q = (uchar)uVar22;\n              q[1] = uVar21;\n            }\n            else {\n              *q = uVar21;\n              q[1] = (uchar)uVar22;\n            }\n            QVar41 = _DAT_003fa400;\n            if (image->channel_map[4].traits != UndefinedPixelTrait) {\n              QVar41 = p[image->channel_map[4].offset];\n            }\n            uVar22 = SinglePrecisionToHalf((float)((double)QVar41 * DAT_003f9c60));\n            uVar21 = (uchar)(uVar22 >> 8);\n            if (quantum_info->endian == LSBEndian) {\n              q[2] = (uchar)uVar22;\n              q[3] = uVar21;\n            }\n            else {\n              q[2] = uVar21;\n              q[3] = (uchar)uVar22;\n            }\n            p = p + image->number_channels;\n            q = q + quantum_info->pad + 4;\n            MVar39 = MVar39 + 1;\n          } while (MVar39 != number_pixels);\n          return;\n        }\n        MVar39 = 0;\n        if ((long)number_pixels < 1) {\n          return;\n        }\n        do {\n          pPVar5 = image->channel_map;\n          fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                   fVar17 * p[pPVar5[2].offset];\n          if (NAN(fVar42)) {\n            uVar23 = 0;\n          }\n          else {\n            uVar23 = 0;\n            if ((0.0 < fVar42) && (uVar23 = 0xffff, fVar42 < _DAT_003fa400)) {\n              uVar23 = (undefined2)(int)((double)fVar42 + dVar9);\n            }\n          }\n          uVar21 = (uchar)((ushort)uVar23 >> 8);\n          if (quantum_info->endian == LSBEndian) {\n            *q = (uchar)uVar23;\n            q[1] = uVar21;\n          }\n          else {\n            *q = uVar21;\n            q[1] = (uchar)uVar23;\n          }\n          uVar23 = 0xffff;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            fVar42 = p[image->channel_map[4].offset];\n            if (NAN(fVar42)) {\n              uVar23 = 0;\n            }\n            else {\n              uVar23 = 0;\n              if ((0.0 < fVar42) && (uVar23 = 0xffff, fVar42 < _DAT_003fa400)) {\n                uVar23 = (short)(int)((double)fVar42 + dVar9);\n              }\n            }\n          }\n          uVar21 = (uchar)((ushort)uVar23 >> 8);\n          if (quantum_info->endian == LSBEndian) {\n            q[2] = (uchar)uVar23;\n            q[3] = uVar21;\n          }\n          else {\n            q[2] = uVar21;\n            q[3] = (uchar)uVar23;\n          }\n          p = p + image->number_channels;\n          q = q + quantum_info->pad + 4;\n          MVar39 = MVar39 + 1;\n        } while (MVar39 != number_pixels);\n        return;\n      }\n      goto LAB_002734da;\n    }\n    if (quantum_info->format == FloatingPointQuantumFormat) {\n      if ((long)number_pixels < 1) {\n        return;\n      }\n      MVar39 = 0;\n      do {\n        pPVar5 = image->channel_map;\n        dVar6 = (double)(fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                        fVar17 * p[pPVar5[2].offset]) * (quantum_info->state).inverse_scale +\n                quantum_info->minimum;\n        uVar25 = (uchar)((ulong)dVar6 >> 8);\n        uVar28 = (uchar)((ulong)dVar6 >> 0x10);\n        uVar29 = (uchar)((ulong)dVar6 >> 0x18);\n        uVar30 = (uchar)((ulong)dVar6 >> 0x20);\n        uVar31 = (uchar)((ulong)dVar6 >> 0x28);\n        uVar32 = (uchar)((ulong)dVar6 >> 0x30);\n        uVar21 = (uchar)((ulong)dVar6 >> 0x38);\n        if (quantum_info->endian == LSBEndian) {\n          *q = SUB81(dVar6,0);\n          q[1] = uVar25;\n          q[2] = uVar28;\n          q[3] = uVar29;\n          q[4] = uVar30;\n          q[5] = uVar31;\n          q[6] = uVar32;\n          q[7] = uVar21;\n        }\n        else {\n          *q = uVar21;\n          q[1] = uVar32;\n          q[2] = uVar31;\n          q[3] = uVar30;\n          q[4] = uVar29;\n          q[5] = uVar28;\n          q[6] = uVar25;\n          q[7] = SUB81(dVar6,0);\n        }\n        QVar41 = fVar42;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          QVar41 = p[image->channel_map[4].offset];\n        }\n        dVar6 = (double)QVar41 * (quantum_info->state).inverse_scale + quantum_info->minimum;\n        uVar21 = (uchar)((ulong)dVar6 >> 8);\n        uVar25 = (uchar)((ulong)dVar6 >> 0x10);\n        uVar31 = (uchar)((ulong)dVar6 >> 0x18);\n        uVar32 = (uchar)((ulong)dVar6 >> 0x20);\n        uVar30 = (uchar)((ulong)dVar6 >> 0x28);\n        uVar29 = (uchar)((ulong)dVar6 >> 0x30);\n        uVar28 = (uchar)((ulong)dVar6 >> 0x38);\n        if (quantum_info->endian == LSBEndian) {\n          q[8] = SUB81(dVar6,0);\n          q[9] = uVar21;\n          q[10] = uVar25;\n          q[0xb] = uVar31;\n          q[0xc] = uVar32;\n          q[0xd] = uVar30;\n          q[0xe] = uVar29;\n          q[0xf] = uVar28;\n        }\n        else {\n          q[8] = uVar28;\n          q[9] = uVar29;\n          q[10] = uVar30;\n          q[0xb] = uVar32;\n          q[0xc] = uVar31;\n          q[0xd] = uVar25;\n          q[0xe] = uVar21;\n          q[0xf] = SUB81(dVar6,0);\n        }\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 0x10;\n        MVar39 = MVar39 + 1;\n      } while (MVar39 != number_pixels);\n      return;\n    }\n  }" { (if_statement "if (uVar36 == 0x20) {\n      if (quantum_info->format == FloatingPointQuantumFormat) {\n        if ((long)number_pixels < 1) {\n          return;\n        }\n        MVar39 = 0;\n        do {\n          pPVar5 = image->channel_map;\n          fVar43 = (float)((double)(fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                                   fVar17 * p[pPVar5[2].offset]) *\n                           (quantum_info->state).inverse_scale + quantum_info->minimum);\n          uVar25 = (uchar)((uint)fVar43 >> 8);\n          uVar31 = (uchar)((uint)fVar43 >> 0x10);\n          uVar21 = (uchar)((uint)fVar43 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            *q = SUB41(fVar43,0);\n            q[1] = uVar25;\n            q[2] = uVar31;\n            q[3] = uVar21;\n          }\n          else {\n            *q = uVar21;\n            q[1] = uVar31;\n            q[2] = uVar25;\n            q[3] = SUB41(fVar43,0);\n          }\n          QVar41 = fVar42;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            QVar41 = p[image->channel_map[4].offset];\n          }\n          fVar43 = (float)((double)QVar41 * (quantum_info->state).inverse_scale +\n                          quantum_info->minimum);\n          uVar21 = (uchar)((uint)fVar43 >> 8);\n          uVar25 = (uchar)((uint)fVar43 >> 0x10);\n          uVar31 = (uchar)((uint)fVar43 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            q[4] = SUB41(fVar43,0);\n            q[5] = uVar21;\n            q[6] = uVar25;\n            q[7] = uVar31;\n          }\n          else {\n            q[4] = uVar31;\n            q[5] = uVar25;\n            q[6] = uVar21;\n            q[7] = SUB41(fVar43,0);\n          }\n          p = p + image->number_channels;\n          q = q + quantum_info->pad + 8;\n          MVar39 = MVar39 + 1;\n        } while (MVar39 != number_pixels);\n        return;\n      }\n      MVar39 = 0;\n      if ((long)number_pixels < 1) {\n        return;\n      }\n      do {\n        pPVar5 = image->channel_map;\n        fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                 fVar17 * p[pPVar5[2].offset];\n        if (NAN(fVar42)) {\n          uVar24 = 0;\n        }\n        else {\n          uVar24 = 0;\n          if ((0.0 < fVar42) && (uVar24 = 0xffffffff, (double)fVar42 * dVar7 < dVar12)) {\n            uVar24 = (undefined4)(long)((double)fVar42 * dVar7 + dVar9);\n          }\n        }\n        uVar21 = (uchar)((uint)uVar24 >> 8);\n        uVar25 = (uchar)((uint)uVar24 >> 0x10);\n        uVar31 = (uchar)((uint)uVar24 >> 0x18);\n        if (quantum_info->endian == LSBEndian) {\n          *q = (uchar)uVar24;\n          q[1] = uVar21;\n          q[2] = uVar25;\n          q[3] = uVar31;\n        }\n        else {\n          *q = uVar31;\n          q[1] = uVar25;\n          q[2] = uVar21;\n          q[3] = (uchar)uVar24;\n        }\n        uVar24 = 0xffffffff;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          fVar42 = p[image->channel_map[4].offset];\n          if (NAN(fVar42)) {\n            uVar24 = 0;\n          }\n          else {\n            uVar24 = 0;\n            if ((0.0 < fVar42) &&\n               (uVar24 = 0xffffffff, (double)fVar42 * DAT_00404920 < DAT_00404928)) {\n              uVar24 = (int)(long)((double)fVar42 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }\n        uVar21 = (uchar)((uint)uVar24 >> 8);\n        uVar25 = (uchar)((uint)uVar24 >> 0x10);\n        uVar31 = (uchar)((uint)uVar24 >> 0x18);\n        if (quantum_info->endian == LSBEndian) {\n          q[4] = (uchar)uVar24;\n          q[5] = uVar21;\n          q[6] = uVar25;\n          q[7] = uVar31;\n        }\n        else {\n          q[4] = uVar31;\n          q[5] = uVar25;\n          q[6] = uVar21;\n          q[7] = (uchar)uVar24;\n        }\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 8;\n        MVar39 = MVar39 + 1;\n      } while (MVar39 != number_pixels);\n      return;\n    }" if (parenthesized_expression "(uVar36 == 0x20)" ( (binary_expression "uVar36 == 0x20" identifier == number_literal) )) (compound_statement "{\n      if (quantum_info->format == FloatingPointQuantumFormat) {\n        if ((long)number_pixels < 1) {\n          return;\n        }\n        MVar39 = 0;\n        do {\n          pPVar5 = image->channel_map;\n          fVar43 = (float)((double)(fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                                   fVar17 * p[pPVar5[2].offset]) *\n                           (quantum_info->state).inverse_scale + quantum_info->minimum);\n          uVar25 = (uchar)((uint)fVar43 >> 8);\n          uVar31 = (uchar)((uint)fVar43 >> 0x10);\n          uVar21 = (uchar)((uint)fVar43 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            *q = SUB41(fVar43,0);\n            q[1] = uVar25;\n            q[2] = uVar31;\n            q[3] = uVar21;\n          }\n          else {\n            *q = uVar21;\n            q[1] = uVar31;\n            q[2] = uVar25;\n            q[3] = SUB41(fVar43,0);\n          }\n          QVar41 = fVar42;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            QVar41 = p[image->channel_map[4].offset];\n          }\n          fVar43 = (float)((double)QVar41 * (quantum_info->state).inverse_scale +\n                          quantum_info->minimum);\n          uVar21 = (uchar)((uint)fVar43 >> 8);\n          uVar25 = (uchar)((uint)fVar43 >> 0x10);\n          uVar31 = (uchar)((uint)fVar43 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            q[4] = SUB41(fVar43,0);\n            q[5] = uVar21;\n            q[6] = uVar25;\n            q[7] = uVar31;\n          }\n          else {\n            q[4] = uVar31;\n            q[5] = uVar25;\n            q[6] = uVar21;\n            q[7] = SUB41(fVar43,0);\n          }\n          p = p + image->number_channels;\n          q = q + quantum_info->pad + 8;\n          MVar39 = MVar39 + 1;\n        } while (MVar39 != number_pixels);\n        return;\n      }\n      MVar39 = 0;\n      if ((long)number_pixels < 1) {\n        return;\n      }\n      do {\n        pPVar5 = image->channel_map;\n        fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                 fVar17 * p[pPVar5[2].offset];\n        if (NAN(fVar42)) {\n          uVar24 = 0;\n        }\n        else {\n          uVar24 = 0;\n          if ((0.0 < fVar42) && (uVar24 = 0xffffffff, (double)fVar42 * dVar7 < dVar12)) {\n            uVar24 = (undefined4)(long)((double)fVar42 * dVar7 + dVar9);\n          }\n        }\n        uVar21 = (uchar)((uint)uVar24 >> 8);\n        uVar25 = (uchar)((uint)uVar24 >> 0x10);\n        uVar31 = (uchar)((uint)uVar24 >> 0x18);\n        if (quantum_info->endian == LSBEndian) {\n          *q = (uchar)uVar24;\n          q[1] = uVar21;\n          q[2] = uVar25;\n          q[3] = uVar31;\n        }\n        else {\n          *q = uVar31;\n          q[1] = uVar25;\n          q[2] = uVar21;\n          q[3] = (uchar)uVar24;\n        }\n        uVar24 = 0xffffffff;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          fVar42 = p[image->channel_map[4].offset];\n          if (NAN(fVar42)) {\n            uVar24 = 0;\n          }\n          else {\n            uVar24 = 0;\n            if ((0.0 < fVar42) &&\n               (uVar24 = 0xffffffff, (double)fVar42 * DAT_00404920 < DAT_00404928)) {\n              uVar24 = (int)(long)((double)fVar42 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }\n        uVar21 = (uchar)((uint)uVar24 >> 8);\n        uVar25 = (uchar)((uint)uVar24 >> 0x10);\n        uVar31 = (uchar)((uint)uVar24 >> 0x18);\n        if (quantum_info->endian == LSBEndian) {\n          q[4] = (uchar)uVar24;\n          q[5] = uVar21;\n          q[6] = uVar25;\n          q[7] = uVar31;\n        }\n        else {\n          q[4] = uVar31;\n          q[5] = uVar25;\n          q[6] = uVar21;\n          q[7] = (uchar)uVar24;\n        }\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 8;\n        MVar39 = MVar39 + 1;\n      } while (MVar39 != number_pixels);\n      return;\n    }" { (if_statement "if (quantum_info->format == FloatingPointQuantumFormat) {\n        if ((long)number_pixels < 1) {\n          return;\n        }\n        MVar39 = 0;\n        do {\n          pPVar5 = image->channel_map;\n          fVar43 = (float)((double)(fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                                   fVar17 * p[pPVar5[2].offset]) *\n                           (quantum_info->state).inverse_scale + quantum_info->minimum);\n          uVar25 = (uchar)((uint)fVar43 >> 8);\n          uVar31 = (uchar)((uint)fVar43 >> 0x10);\n          uVar21 = (uchar)((uint)fVar43 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            *q = SUB41(fVar43,0);\n            q[1] = uVar25;\n            q[2] = uVar31;\n            q[3] = uVar21;\n          }\n          else {\n            *q = uVar21;\n            q[1] = uVar31;\n            q[2] = uVar25;\n            q[3] = SUB41(fVar43,0);\n          }\n          QVar41 = fVar42;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            QVar41 = p[image->channel_map[4].offset];\n          }\n          fVar43 = (float)((double)QVar41 * (quantum_info->state).inverse_scale +\n                          quantum_info->minimum);\n          uVar21 = (uchar)((uint)fVar43 >> 8);\n          uVar25 = (uchar)((uint)fVar43 >> 0x10);\n          uVar31 = (uchar)((uint)fVar43 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            q[4] = SUB41(fVar43,0);\n            q[5] = uVar21;\n            q[6] = uVar25;\n            q[7] = uVar31;\n          }\n          else {\n            q[4] = uVar31;\n            q[5] = uVar25;\n            q[6] = uVar21;\n            q[7] = SUB41(fVar43,0);\n          }\n          p = p + image->number_channels;\n          q = q + quantum_info->pad + 8;\n          MVar39 = MVar39 + 1;\n        } while (MVar39 != number_pixels);\n        return;\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 ((long)number_pixels < 1) {\n          return;\n        }\n        MVar39 = 0;\n        do {\n          pPVar5 = image->channel_map;\n          fVar43 = (float)((double)(fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                                   fVar17 * p[pPVar5[2].offset]) *\n                           (quantum_info->state).inverse_scale + quantum_info->minimum);\n          uVar25 = (uchar)((uint)fVar43 >> 8);\n          uVar31 = (uchar)((uint)fVar43 >> 0x10);\n          uVar21 = (uchar)((uint)fVar43 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            *q = SUB41(fVar43,0);\n            q[1] = uVar25;\n            q[2] = uVar31;\n            q[3] = uVar21;\n          }\n          else {\n            *q = uVar21;\n            q[1] = uVar31;\n            q[2] = uVar25;\n            q[3] = SUB41(fVar43,0);\n          }\n          QVar41 = fVar42;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            QVar41 = p[image->channel_map[4].offset];\n          }\n          fVar43 = (float)((double)QVar41 * (quantum_info->state).inverse_scale +\n                          quantum_info->minimum);\n          uVar21 = (uchar)((uint)fVar43 >> 8);\n          uVar25 = (uchar)((uint)fVar43 >> 0x10);\n          uVar31 = (uchar)((uint)fVar43 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            q[4] = SUB41(fVar43,0);\n            q[5] = uVar21;\n            q[6] = uVar25;\n            q[7] = uVar31;\n          }\n          else {\n            q[4] = uVar31;\n            q[5] = uVar25;\n            q[6] = uVar21;\n            q[7] = SUB41(fVar43,0);\n          }\n          p = p + image->number_channels;\n          q = q + quantum_info->pad + 8;\n          MVar39 = MVar39 + 1;\n        } while (MVar39 != number_pixels);\n        return;\n      }" { (if_statement "if ((long)number_pixels < 1) {\n          return;\n        }" if (parenthesized_expression "((long)number_pixels < 1)" ( (binary_expression "(long)number_pixels < 1" (cast_expression "(long)number_pixels" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "MVar39 = 0;" (assignment_expression "MVar39 = 0" identifier = number_literal) ;) (do_statement "do {\n          pPVar5 = image->channel_map;\n          fVar43 = (float)((double)(fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                                   fVar17 * p[pPVar5[2].offset]) *\n                           (quantum_info->state).inverse_scale + quantum_info->minimum);\n          uVar25 = (uchar)((uint)fVar43 >> 8);\n          uVar31 = (uchar)((uint)fVar43 >> 0x10);\n          uVar21 = (uchar)((uint)fVar43 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            *q = SUB41(fVar43,0);\n            q[1] = uVar25;\n            q[2] = uVar31;\n            q[3] = uVar21;\n          }\n          else {\n            *q = uVar21;\n            q[1] = uVar31;\n            q[2] = uVar25;\n            q[3] = SUB41(fVar43,0);\n          }\n          QVar41 = fVar42;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            QVar41 = p[image->channel_map[4].offset];\n          }\n          fVar43 = (float)((double)QVar41 * (quantum_info->state).inverse_scale +\n                          quantum_info->minimum);\n          uVar21 = (uchar)((uint)fVar43 >> 8);\n          uVar25 = (uchar)((uint)fVar43 >> 0x10);\n          uVar31 = (uchar)((uint)fVar43 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            q[4] = SUB41(fVar43,0);\n            q[5] = uVar21;\n            q[6] = uVar25;\n            q[7] = uVar31;\n          }\n          else {\n            q[4] = uVar31;\n            q[5] = uVar25;\n            q[6] = uVar21;\n            q[7] = SUB41(fVar43,0);\n          }\n          p = p + image->number_channels;\n          q = q + quantum_info->pad + 8;\n          MVar39 = MVar39 + 1;\n        } while (MVar39 != number_pixels);" do (compound_statement "{\n          pPVar5 = image->channel_map;\n          fVar43 = (float)((double)(fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                                   fVar17 * p[pPVar5[2].offset]) *\n                           (quantum_info->state).inverse_scale + quantum_info->minimum);\n          uVar25 = (uchar)((uint)fVar43 >> 8);\n          uVar31 = (uchar)((uint)fVar43 >> 0x10);\n          uVar21 = (uchar)((uint)fVar43 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            *q = SUB41(fVar43,0);\n            q[1] = uVar25;\n            q[2] = uVar31;\n            q[3] = uVar21;\n          }\n          else {\n            *q = uVar21;\n            q[1] = uVar31;\n            q[2] = uVar25;\n            q[3] = SUB41(fVar43,0);\n          }\n          QVar41 = fVar42;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            QVar41 = p[image->channel_map[4].offset];\n          }\n          fVar43 = (float)((double)QVar41 * (quantum_info->state).inverse_scale +\n                          quantum_info->minimum);\n          uVar21 = (uchar)((uint)fVar43 >> 8);\n          uVar25 = (uchar)((uint)fVar43 >> 0x10);\n          uVar31 = (uchar)((uint)fVar43 >> 0x18);\n          if (quantum_info->endian == LSBEndian) {\n            q[4] = SUB41(fVar43,0);\n            q[5] = uVar21;\n            q[6] = uVar25;\n            q[7] = uVar31;\n          }\n          else {\n            q[4] = uVar31;\n            q[5] = uVar25;\n            q[6] = uVar21;\n            q[7] = SUB41(fVar43,0);\n          }\n          p = p + image->number_channels;\n          q = q + quantum_info->pad + 8;\n          MVar39 = MVar39 + 1;\n        }" { (expression_statement "pPVar5 = image->channel_map;" (assignment_expression "pPVar5 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) (expression_statement "fVar43 = (float)((double)(fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                                   fVar17 * p[pPVar5[2].offset]) *\n                           (quantum_info->state).inverse_scale + quantum_info->minimum);" (assignment_expression "fVar43 = (float)((double)(fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                                   fVar17 * p[pPVar5[2].offset]) *\n                           (quantum_info->state).inverse_scale + quantum_info->minimum)" identifier = (cast_expression "(float)((double)(fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                                   fVar17 * p[pPVar5[2].offset]) *\n                           (quantum_info->state).inverse_scale + quantum_info->minimum)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((double)(fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                                   fVar17 * p[pPVar5[2].offset]) *\n                           (quantum_info->state).inverse_scale + quantum_info->minimum)" ( (binary_expression "(double)(fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                                   fVar17 * p[pPVar5[2].offset]) *\n                           (quantum_info->state).inverse_scale + quantum_info->minimum" (binary_expression "(double)(fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                                   fVar17 * p[pPVar5[2].offset]) *\n                           (quantum_info->state).inverse_scale" (cast_expression "(double)(fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                                   fVar17 * p[pPVar5[2].offset])" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                                   fVar17 * p[pPVar5[2].offset])" ( (binary_expression "fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                                   fVar17 * p[pPVar5[2].offset]" (binary_expression "fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset]" (binary_expression "fVar16 * p[pPVar5[1].offset]" identifier * (subscript_expression "p[pPVar5[1].offset]" identifier [ (field_expression "pPVar5[1].offset" (subscript_expression "pPVar5[1]" identifier [ number_literal ]) . field_identifier) ])) + (binary_expression "fVar15 * p[pPVar5->offset]" identifier * (subscript_expression "p[pPVar5->offset]" identifier [ (field_expression "pPVar5->offset" identifier -> field_identifier) ]))) + (binary_expression "fVar17 * p[pPVar5[2].offset]" identifier * (subscript_expression "p[pPVar5[2].offset]" identifier [ (field_expression "pPVar5[2].offset" (subscript_expression "pPVar5[2]" identifier [ number_literal ]) . field_identifier) ]))) ))) * (field_expression "(quantum_info->state).inverse_scale" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier)) + (field_expression "quantum_info->minimum" identifier -> field_identifier)) )))) ;) (expression_statement "uVar25 = (uchar)((uint)fVar43 >> 8);" (assignment_expression "uVar25 = (uchar)((uint)fVar43 >> 8)" identifier = (call_expression "(uchar)((uint)fVar43 >> 8)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((uint)fVar43 >> 8)" ( (binary_expression "(uint)fVar43 >> 8" (cast_expression "(uint)fVar43" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar31 = (uchar)((uint)fVar43 >> 0x10);" (assignment_expression "uVar31 = (uchar)((uint)fVar43 >> 0x10)" identifier = (call_expression "(uchar)((uint)fVar43 >> 0x10)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((uint)fVar43 >> 0x10)" ( (binary_expression "(uint)fVar43 >> 0x10" (cast_expression "(uint)fVar43" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar21 = (uchar)((uint)fVar43 >> 0x18);" (assignment_expression "uVar21 = (uchar)((uint)fVar43 >> 0x18)" identifier = (call_expression "(uchar)((uint)fVar43 >> 0x18)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((uint)fVar43 >> 0x18)" ( (binary_expression "(uint)fVar43 >> 0x18" (cast_expression "(uint)fVar43" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (quantum_info->endian == LSBEndian) {\n            *q = SUB41(fVar43,0);\n            q[1] = uVar25;\n            q[2] = uVar31;\n            q[3] = uVar21;\n          }\n          else {\n            *q = uVar21;\n            q[1] = uVar31;\n            q[2] = uVar25;\n            q[3] = SUB41(fVar43,0);\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            *q = SUB41(fVar43,0);\n            q[1] = uVar25;\n            q[2] = uVar31;\n            q[3] = uVar21;\n          }" { (expression_statement "*q = SUB41(fVar43,0);" (assignment_expression "*q = SUB41(fVar43,0)" (pointer_expression "*q" * identifier) = (call_expression "SUB41(fVar43,0)" identifier (argument_list "(fVar43,0)" ( identifier , number_literal )))) ;) (expression_statement "q[1] = uVar25;" (assignment_expression "q[1] = uVar25" (subscript_expression "q[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[2] = uVar31;" (assignment_expression "q[2] = uVar31" (subscript_expression "q[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[3] = uVar21;" (assignment_expression "q[3] = uVar21" (subscript_expression "q[3]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            *q = uVar21;\n            q[1] = uVar31;\n            q[2] = uVar25;\n            q[3] = SUB41(fVar43,0);\n          }" else (compound_statement "{\n            *q = uVar21;\n            q[1] = uVar31;\n            q[2] = uVar25;\n            q[3] = SUB41(fVar43,0);\n          }" { (expression_statement "*q = uVar21;" (assignment_expression "*q = uVar21" (pointer_expression "*q" * identifier) = identifier) ;) (expression_statement "q[1] = uVar31;" (assignment_expression "q[1] = uVar31" (subscript_expression "q[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[2] = uVar25;" (assignment_expression "q[2] = uVar25" (subscript_expression "q[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[3] = SUB41(fVar43,0);" (assignment_expression "q[3] = SUB41(fVar43,0)" (subscript_expression "q[3]" identifier [ number_literal ]) = (call_expression "SUB41(fVar43,0)" identifier (argument_list "(fVar43,0)" ( identifier , number_literal )))) ;) }))) (expression_statement "QVar41 = fVar42;" (assignment_expression "QVar41 = fVar42" identifier = identifier) ;) (if_statement "if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            QVar41 = p[image->channel_map[4].offset];\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            QVar41 = p[image->channel_map[4].offset];\n          }" { (expression_statement "QVar41 = p[image->channel_map[4].offset];" (assignment_expression "QVar41 = p[image->channel_map[4].offset]" identifier = (subscript_expression "p[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) ])) ;) })) (expression_statement "fVar43 = (float)((double)QVar41 * (quantum_info->state).inverse_scale +\n                          quantum_info->minimum);" (assignment_expression "fVar43 = (float)((double)QVar41 * (quantum_info->state).inverse_scale +\n                          quantum_info->minimum)" identifier = (cast_expression "(float)((double)QVar41 * (quantum_info->state).inverse_scale +\n                          quantum_info->minimum)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((double)QVar41 * (quantum_info->state).inverse_scale +\n                          quantum_info->minimum)" ( (binary_expression "(double)QVar41 * (quantum_info->state).inverse_scale +\n                          quantum_info->minimum" (binary_expression "(double)QVar41 * (quantum_info->state).inverse_scale" (cast_expression "(double)QVar41" ( (type_descriptor "double" primitive_type) ) identifier) * (field_expression "(quantum_info->state).inverse_scale" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier)) + (field_expression "quantum_info->minimum" identifier -> field_identifier)) )))) ;) (expression_statement "uVar21 = (uchar)((uint)fVar43 >> 8);" (assignment_expression "uVar21 = (uchar)((uint)fVar43 >> 8)" identifier = (call_expression "(uchar)((uint)fVar43 >> 8)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((uint)fVar43 >> 8)" ( (binary_expression "(uint)fVar43 >> 8" (cast_expression "(uint)fVar43" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar25 = (uchar)((uint)fVar43 >> 0x10);" (assignment_expression "uVar25 = (uchar)((uint)fVar43 >> 0x10)" identifier = (call_expression "(uchar)((uint)fVar43 >> 0x10)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((uint)fVar43 >> 0x10)" ( (binary_expression "(uint)fVar43 >> 0x10" (cast_expression "(uint)fVar43" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar31 = (uchar)((uint)fVar43 >> 0x18);" (assignment_expression "uVar31 = (uchar)((uint)fVar43 >> 0x18)" identifier = (call_expression "(uchar)((uint)fVar43 >> 0x18)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((uint)fVar43 >> 0x18)" ( (binary_expression "(uint)fVar43 >> 0x18" (cast_expression "(uint)fVar43" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (quantum_info->endian == LSBEndian) {\n            q[4] = SUB41(fVar43,0);\n            q[5] = uVar21;\n            q[6] = uVar25;\n            q[7] = uVar31;\n          }\n          else {\n            q[4] = uVar31;\n            q[5] = uVar25;\n            q[6] = uVar21;\n            q[7] = SUB41(fVar43,0);\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            q[4] = SUB41(fVar43,0);\n            q[5] = uVar21;\n            q[6] = uVar25;\n            q[7] = uVar31;\n          }" { (expression_statement "q[4] = SUB41(fVar43,0);" (assignment_expression "q[4] = SUB41(fVar43,0)" (subscript_expression "q[4]" identifier [ number_literal ]) = (call_expression "SUB41(fVar43,0)" identifier (argument_list "(fVar43,0)" ( identifier , number_literal )))) ;) (expression_statement "q[5] = uVar21;" (assignment_expression "q[5] = uVar21" (subscript_expression "q[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[6] = uVar25;" (assignment_expression "q[6] = uVar25" (subscript_expression "q[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[7] = uVar31;" (assignment_expression "q[7] = uVar31" (subscript_expression "q[7]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            q[4] = uVar31;\n            q[5] = uVar25;\n            q[6] = uVar21;\n            q[7] = SUB41(fVar43,0);\n          }" else (compound_statement "{\n            q[4] = uVar31;\n            q[5] = uVar25;\n            q[6] = uVar21;\n            q[7] = SUB41(fVar43,0);\n          }" { (expression_statement "q[4] = uVar31;" (assignment_expression "q[4] = uVar31" (subscript_expression "q[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[5] = uVar25;" (assignment_expression "q[5] = uVar25" (subscript_expression "q[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[6] = uVar21;" (assignment_expression "q[6] = uVar21" (subscript_expression "q[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[7] = SUB41(fVar43,0);" (assignment_expression "q[7] = SUB41(fVar43,0)" (subscript_expression "q[7]" identifier [ number_literal ]) = (call_expression "SUB41(fVar43,0)" identifier (argument_list "(fVar43,0)" ( identifier , number_literal )))) ;) }))) (expression_statement "p = p + image->number_channels;" (assignment_expression "p = p + image->number_channels" identifier = (binary_expression "p + image->number_channels" identifier + (field_expression "image->number_channels" identifier -> field_identifier))) ;) (expression_statement "q = q + quantum_info->pad + 8;" (assignment_expression "q = q + quantum_info->pad + 8" identifier = (binary_expression "q + quantum_info->pad + 8" (binary_expression "q + quantum_info->pad" identifier + (field_expression "quantum_info->pad" identifier -> field_identifier)) + number_literal)) ;) (expression_statement "MVar39 = MVar39 + 1;" (assignment_expression "MVar39 = MVar39 + 1" identifier = (binary_expression "MVar39 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(MVar39 != number_pixels)" ( (binary_expression "MVar39 != number_pixels" identifier != identifier) )) ;) (return_statement "return;" return ;) })) (expression_statement "MVar39 = 0;" (assignment_expression "MVar39 = 0" identifier = number_literal) ;) (if_statement "if ((long)number_pixels < 1) {\n        return;\n      }" if (parenthesized_expression "((long)number_pixels < 1)" ( (binary_expression "(long)number_pixels < 1" (cast_expression "(long)number_pixels" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (do_statement "do {\n        pPVar5 = image->channel_map;\n        fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                 fVar17 * p[pPVar5[2].offset];\n        if (NAN(fVar42)) {\n          uVar24 = 0;\n        }\n        else {\n          uVar24 = 0;\n          if ((0.0 < fVar42) && (uVar24 = 0xffffffff, (double)fVar42 * dVar7 < dVar12)) {\n            uVar24 = (undefined4)(long)((double)fVar42 * dVar7 + dVar9);\n          }\n        }\n        uVar21 = (uchar)((uint)uVar24 >> 8);\n        uVar25 = (uchar)((uint)uVar24 >> 0x10);\n        uVar31 = (uchar)((uint)uVar24 >> 0x18);\n        if (quantum_info->endian == LSBEndian) {\n          *q = (uchar)uVar24;\n          q[1] = uVar21;\n          q[2] = uVar25;\n          q[3] = uVar31;\n        }\n        else {\n          *q = uVar31;\n          q[1] = uVar25;\n          q[2] = uVar21;\n          q[3] = (uchar)uVar24;\n        }\n        uVar24 = 0xffffffff;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          fVar42 = p[image->channel_map[4].offset];\n          if (NAN(fVar42)) {\n            uVar24 = 0;\n          }\n          else {\n            uVar24 = 0;\n            if ((0.0 < fVar42) &&\n               (uVar24 = 0xffffffff, (double)fVar42 * DAT_00404920 < DAT_00404928)) {\n              uVar24 = (int)(long)((double)fVar42 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }\n        uVar21 = (uchar)((uint)uVar24 >> 8);\n        uVar25 = (uchar)((uint)uVar24 >> 0x10);\n        uVar31 = (uchar)((uint)uVar24 >> 0x18);\n        if (quantum_info->endian == LSBEndian) {\n          q[4] = (uchar)uVar24;\n          q[5] = uVar21;\n          q[6] = uVar25;\n          q[7] = uVar31;\n        }\n        else {\n          q[4] = uVar31;\n          q[5] = uVar25;\n          q[6] = uVar21;\n          q[7] = (uchar)uVar24;\n        }\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 8;\n        MVar39 = MVar39 + 1;\n      } while (MVar39 != number_pixels);" do (compound_statement "{\n        pPVar5 = image->channel_map;\n        fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                 fVar17 * p[pPVar5[2].offset];\n        if (NAN(fVar42)) {\n          uVar24 = 0;\n        }\n        else {\n          uVar24 = 0;\n          if ((0.0 < fVar42) && (uVar24 = 0xffffffff, (double)fVar42 * dVar7 < dVar12)) {\n            uVar24 = (undefined4)(long)((double)fVar42 * dVar7 + dVar9);\n          }\n        }\n        uVar21 = (uchar)((uint)uVar24 >> 8);\n        uVar25 = (uchar)((uint)uVar24 >> 0x10);\n        uVar31 = (uchar)((uint)uVar24 >> 0x18);\n        if (quantum_info->endian == LSBEndian) {\n          *q = (uchar)uVar24;\n          q[1] = uVar21;\n          q[2] = uVar25;\n          q[3] = uVar31;\n        }\n        else {\n          *q = uVar31;\n          q[1] = uVar25;\n          q[2] = uVar21;\n          q[3] = (uchar)uVar24;\n        }\n        uVar24 = 0xffffffff;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          fVar42 = p[image->channel_map[4].offset];\n          if (NAN(fVar42)) {\n            uVar24 = 0;\n          }\n          else {\n            uVar24 = 0;\n            if ((0.0 < fVar42) &&\n               (uVar24 = 0xffffffff, (double)fVar42 * DAT_00404920 < DAT_00404928)) {\n              uVar24 = (int)(long)((double)fVar42 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }\n        uVar21 = (uchar)((uint)uVar24 >> 8);\n        uVar25 = (uchar)((uint)uVar24 >> 0x10);\n        uVar31 = (uchar)((uint)uVar24 >> 0x18);\n        if (quantum_info->endian == LSBEndian) {\n          q[4] = (uchar)uVar24;\n          q[5] = uVar21;\n          q[6] = uVar25;\n          q[7] = uVar31;\n        }\n        else {\n          q[4] = uVar31;\n          q[5] = uVar25;\n          q[6] = uVar21;\n          q[7] = (uchar)uVar24;\n        }\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 8;\n        MVar39 = MVar39 + 1;\n      }" { (expression_statement "pPVar5 = image->channel_map;" (assignment_expression "pPVar5 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) (expression_statement "fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                 fVar17 * p[pPVar5[2].offset];" (assignment_expression "fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                 fVar17 * p[pPVar5[2].offset]" identifier = (binary_expression "fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                 fVar17 * p[pPVar5[2].offset]" (binary_expression "fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset]" (binary_expression "fVar16 * p[pPVar5[1].offset]" identifier * (subscript_expression "p[pPVar5[1].offset]" identifier [ (field_expression "pPVar5[1].offset" (subscript_expression "pPVar5[1]" identifier [ number_literal ]) . field_identifier) ])) + (binary_expression "fVar15 * p[pPVar5->offset]" identifier * (subscript_expression "p[pPVar5->offset]" identifier [ (field_expression "pPVar5->offset" identifier -> field_identifier) ]))) + (binary_expression "fVar17 * p[pPVar5[2].offset]" identifier * (subscript_expression "p[pPVar5[2].offset]" identifier [ (field_expression "pPVar5[2].offset" (subscript_expression "pPVar5[2]" identifier [ number_literal ]) . field_identifier) ])))) ;) (if_statement "if (NAN(fVar42)) {\n          uVar24 = 0;\n        }\n        else {\n          uVar24 = 0;\n          if ((0.0 < fVar42) && (uVar24 = 0xffffffff, (double)fVar42 * dVar7 < dVar12)) {\n            uVar24 = (undefined4)(long)((double)fVar42 * dVar7 + dVar9);\n          }\n        }" if (parenthesized_expression "(NAN(fVar42))" ( (call_expression "NAN(fVar42)" identifier (argument_list "(fVar42)" ( identifier ))) )) (compound_statement "{\n          uVar24 = 0;\n        }" { (expression_statement "uVar24 = 0;" (assignment_expression "uVar24 = 0" identifier = number_literal) ;) }) (else_clause "else {\n          uVar24 = 0;\n          if ((0.0 < fVar42) && (uVar24 = 0xffffffff, (double)fVar42 * dVar7 < dVar12)) {\n            uVar24 = (undefined4)(long)((double)fVar42 * dVar7 + dVar9);\n          }\n        }" else (compound_statement "{\n          uVar24 = 0;\n          if ((0.0 < fVar42) && (uVar24 = 0xffffffff, (double)fVar42 * dVar7 < dVar12)) {\n            uVar24 = (undefined4)(long)((double)fVar42 * dVar7 + dVar9);\n          }\n        }" { (expression_statement "uVar24 = 0;" (assignment_expression "uVar24 = 0" identifier = number_literal) ;) (if_statement "if ((0.0 < fVar42) && (uVar24 = 0xffffffff, (double)fVar42 * dVar7 < dVar12)) {\n            uVar24 = (undefined4)(long)((double)fVar42 * dVar7 + dVar9);\n          }" if (parenthesized_expression "((0.0 < fVar42) && (uVar24 = 0xffffffff, (double)fVar42 * dVar7 < dVar12))" ( (binary_expression "(0.0 < fVar42) && (uVar24 = 0xffffffff, (double)fVar42 * dVar7 < dVar12)" (parenthesized_expression "(0.0 < fVar42)" ( (binary_expression "0.0 < fVar42" number_literal < identifier) )) && (parenthesized_expression "(uVar24 = 0xffffffff, (double)fVar42 * dVar7 < dVar12)" ( (comma_expression "uVar24 = 0xffffffff, (double)fVar42 * dVar7 < dVar12" (assignment_expression "uVar24 = 0xffffffff" identifier = number_literal) , (binary_expression "(double)fVar42 * dVar7 < dVar12" (binary_expression "(double)fVar42 * dVar7" (cast_expression "(double)fVar42" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) < identifier)) ))) )) (compound_statement "{\n            uVar24 = (undefined4)(long)((double)fVar42 * dVar7 + dVar9);\n          }" { (expression_statement "uVar24 = (undefined4)(long)((double)fVar42 * dVar7 + dVar9);" (assignment_expression "uVar24 = (undefined4)(long)((double)fVar42 * dVar7 + dVar9)" identifier = (call_expression "(undefined4)(long)((double)fVar42 * dVar7 + dVar9)" (call_expression "(undefined4)(long)" (parenthesized_expression "(undefined4)" ( identifier )) (argument_list "(long)" ( identifier ))) (argument_list "((double)fVar42 * dVar7 + dVar9)" ( (binary_expression "(double)fVar42 * dVar7 + dVar9" (binary_expression "(double)fVar42 * dVar7" (cast_expression "(double)fVar42" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) + identifier) )))) ;) })) }))) (expression_statement "uVar21 = (uchar)((uint)uVar24 >> 8);" (assignment_expression "uVar21 = (uchar)((uint)uVar24 >> 8)" identifier = (call_expression "(uchar)((uint)uVar24 >> 8)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((uint)uVar24 >> 8)" ( (binary_expression "(uint)uVar24 >> 8" (cast_expression "(uint)uVar24" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar25 = (uchar)((uint)uVar24 >> 0x10);" (assignment_expression "uVar25 = (uchar)((uint)uVar24 >> 0x10)" identifier = (call_expression "(uchar)((uint)uVar24 >> 0x10)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((uint)uVar24 >> 0x10)" ( (binary_expression "(uint)uVar24 >> 0x10" (cast_expression "(uint)uVar24" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar31 = (uchar)((uint)uVar24 >> 0x18);" (assignment_expression "uVar31 = (uchar)((uint)uVar24 >> 0x18)" identifier = (call_expression "(uchar)((uint)uVar24 >> 0x18)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((uint)uVar24 >> 0x18)" ( (binary_expression "(uint)uVar24 >> 0x18" (cast_expression "(uint)uVar24" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (quantum_info->endian == LSBEndian) {\n          *q = (uchar)uVar24;\n          q[1] = uVar21;\n          q[2] = uVar25;\n          q[3] = uVar31;\n        }\n        else {\n          *q = uVar31;\n          q[1] = uVar25;\n          q[2] = uVar21;\n          q[3] = (uchar)uVar24;\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          *q = (uchar)uVar24;\n          q[1] = uVar21;\n          q[2] = uVar25;\n          q[3] = uVar31;\n        }" { (expression_statement "*q = (uchar)uVar24;" (assignment_expression "*q = (uchar)uVar24" (pointer_expression "*q" * identifier) = (cast_expression "(uchar)uVar24" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "q[1] = uVar21;" (assignment_expression "q[1] = uVar21" (subscript_expression "q[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[2] = uVar25;" (assignment_expression "q[2] = uVar25" (subscript_expression "q[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[3] = uVar31;" (assignment_expression "q[3] = uVar31" (subscript_expression "q[3]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n          *q = uVar31;\n          q[1] = uVar25;\n          q[2] = uVar21;\n          q[3] = (uchar)uVar24;\n        }" else (compound_statement "{\n          *q = uVar31;\n          q[1] = uVar25;\n          q[2] = uVar21;\n          q[3] = (uchar)uVar24;\n        }" { (expression_statement "*q = uVar31;" (assignment_expression "*q = uVar31" (pointer_expression "*q" * identifier) = identifier) ;) (expression_statement "q[1] = uVar25;" (assignment_expression "q[1] = uVar25" (subscript_expression "q[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[2] = uVar21;" (assignment_expression "q[2] = uVar21" (subscript_expression "q[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[3] = (uchar)uVar24;" (assignment_expression "q[3] = (uchar)uVar24" (subscript_expression "q[3]" identifier [ number_literal ]) = (cast_expression "(uchar)uVar24" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) }))) (expression_statement "uVar24 = 0xffffffff;" (assignment_expression "uVar24 = 0xffffffff" identifier = number_literal) ;) (if_statement "if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          fVar42 = p[image->channel_map[4].offset];\n          if (NAN(fVar42)) {\n            uVar24 = 0;\n          }\n          else {\n            uVar24 = 0;\n            if ((0.0 < fVar42) &&\n               (uVar24 = 0xffffffff, (double)fVar42 * DAT_00404920 < DAT_00404928)) {\n              uVar24 = (int)(long)((double)fVar42 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\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          fVar42 = p[image->channel_map[4].offset];\n          if (NAN(fVar42)) {\n            uVar24 = 0;\n          }\n          else {\n            uVar24 = 0;\n            if ((0.0 < fVar42) &&\n               (uVar24 = 0xffffffff, (double)fVar42 * DAT_00404920 < DAT_00404928)) {\n              uVar24 = (int)(long)((double)fVar42 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }" { (expression_statement "fVar42 = p[image->channel_map[4].offset];" (assignment_expression "fVar42 = p[image->channel_map[4].offset]" identifier = (subscript_expression "p[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) ])) ;) (if_statement "if (NAN(fVar42)) {\n            uVar24 = 0;\n          }\n          else {\n            uVar24 = 0;\n            if ((0.0 < fVar42) &&\n               (uVar24 = 0xffffffff, (double)fVar42 * DAT_00404920 < DAT_00404928)) {\n              uVar24 = (int)(long)((double)fVar42 * DAT_00404920 + DAT_003f9c28);\n            }\n          }" if (parenthesized_expression "(NAN(fVar42))" ( (call_expression "NAN(fVar42)" identifier (argument_list "(fVar42)" ( identifier ))) )) (compound_statement "{\n            uVar24 = 0;\n          }" { (expression_statement "uVar24 = 0;" (assignment_expression "uVar24 = 0" identifier = number_literal) ;) }) (else_clause "else {\n            uVar24 = 0;\n            if ((0.0 < fVar42) &&\n               (uVar24 = 0xffffffff, (double)fVar42 * DAT_00404920 < DAT_00404928)) {\n              uVar24 = (int)(long)((double)fVar42 * DAT_00404920 + DAT_003f9c28);\n            }\n          }" else (compound_statement "{\n            uVar24 = 0;\n            if ((0.0 < fVar42) &&\n               (uVar24 = 0xffffffff, (double)fVar42 * DAT_00404920 < DAT_00404928)) {\n              uVar24 = (int)(long)((double)fVar42 * DAT_00404920 + DAT_003f9c28);\n            }\n          }" { (expression_statement "uVar24 = 0;" (assignment_expression "uVar24 = 0" identifier = number_literal) ;) (if_statement "if ((0.0 < fVar42) &&\n               (uVar24 = 0xffffffff, (double)fVar42 * DAT_00404920 < DAT_00404928)) {\n              uVar24 = (int)(long)((double)fVar42 * DAT_00404920 + DAT_003f9c28);\n            }" if (parenthesized_expression "((0.0 < fVar42) &&\n               (uVar24 = 0xffffffff, (double)fVar42 * DAT_00404920 < DAT_00404928))" ( (binary_expression "(0.0 < fVar42) &&\n               (uVar24 = 0xffffffff, (double)fVar42 * DAT_00404920 < DAT_00404928)" (parenthesized_expression "(0.0 < fVar42)" ( (binary_expression "0.0 < fVar42" number_literal < identifier) )) && (parenthesized_expression "(uVar24 = 0xffffffff, (double)fVar42 * DAT_00404920 < DAT_00404928)" ( (comma_expression "uVar24 = 0xffffffff, (double)fVar42 * DAT_00404920 < DAT_00404928" (assignment_expression "uVar24 = 0xffffffff" identifier = number_literal) , (binary_expression "(double)fVar42 * DAT_00404920 < DAT_00404928" (binary_expression "(double)fVar42 * DAT_00404920" (cast_expression "(double)fVar42" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) < identifier)) ))) )) (compound_statement "{\n              uVar24 = (int)(long)((double)fVar42 * DAT_00404920 + DAT_003f9c28);\n            }" { (expression_statement "uVar24 = (int)(long)((double)fVar42 * DAT_00404920 + DAT_003f9c28);" (assignment_expression "uVar24 = (int)(long)((double)fVar42 * DAT_00404920 + DAT_003f9c28)" identifier = (cast_expression "(int)(long)((double)fVar42 * DAT_00404920 + DAT_003f9c28)" ( (type_descriptor "int" primitive_type) ) (cast_expression "(long)((double)fVar42 * DAT_00404920 + DAT_003f9c28)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "((double)fVar42 * DAT_00404920 + DAT_003f9c28)" ( (binary_expression "(double)fVar42 * DAT_00404920 + DAT_003f9c28" (binary_expression "(double)fVar42 * DAT_00404920" (cast_expression "(double)fVar42" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) + identifier) ))))) ;) })) }))) })) (expression_statement "uVar21 = (uchar)((uint)uVar24 >> 8);" (assignment_expression "uVar21 = (uchar)((uint)uVar24 >> 8)" identifier = (call_expression "(uchar)((uint)uVar24 >> 8)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((uint)uVar24 >> 8)" ( (binary_expression "(uint)uVar24 >> 8" (cast_expression "(uint)uVar24" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar25 = (uchar)((uint)uVar24 >> 0x10);" (assignment_expression "uVar25 = (uchar)((uint)uVar24 >> 0x10)" identifier = (call_expression "(uchar)((uint)uVar24 >> 0x10)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((uint)uVar24 >> 0x10)" ( (binary_expression "(uint)uVar24 >> 0x10" (cast_expression "(uint)uVar24" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar31 = (uchar)((uint)uVar24 >> 0x18);" (assignment_expression "uVar31 = (uchar)((uint)uVar24 >> 0x18)" identifier = (call_expression "(uchar)((uint)uVar24 >> 0x18)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((uint)uVar24 >> 0x18)" ( (binary_expression "(uint)uVar24 >> 0x18" (cast_expression "(uint)uVar24" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (quantum_info->endian == LSBEndian) {\n          q[4] = (uchar)uVar24;\n          q[5] = uVar21;\n          q[6] = uVar25;\n          q[7] = uVar31;\n        }\n        else {\n          q[4] = uVar31;\n          q[5] = uVar25;\n          q[6] = uVar21;\n          q[7] = (uchar)uVar24;\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          q[4] = (uchar)uVar24;\n          q[5] = uVar21;\n          q[6] = uVar25;\n          q[7] = uVar31;\n        }" { (expression_statement "q[4] = (uchar)uVar24;" (assignment_expression "q[4] = (uchar)uVar24" (subscript_expression "q[4]" identifier [ number_literal ]) = (cast_expression "(uchar)uVar24" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "q[5] = uVar21;" (assignment_expression "q[5] = uVar21" (subscript_expression "q[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[6] = uVar25;" (assignment_expression "q[6] = uVar25" (subscript_expression "q[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[7] = uVar31;" (assignment_expression "q[7] = uVar31" (subscript_expression "q[7]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n          q[4] = uVar31;\n          q[5] = uVar25;\n          q[6] = uVar21;\n          q[7] = (uchar)uVar24;\n        }" else (compound_statement "{\n          q[4] = uVar31;\n          q[5] = uVar25;\n          q[6] = uVar21;\n          q[7] = (uchar)uVar24;\n        }" { (expression_statement "q[4] = uVar31;" (assignment_expression "q[4] = uVar31" (subscript_expression "q[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[5] = uVar25;" (assignment_expression "q[5] = uVar25" (subscript_expression "q[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[6] = uVar21;" (assignment_expression "q[6] = uVar21" (subscript_expression "q[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[7] = (uchar)uVar24;" (assignment_expression "q[7] = (uchar)uVar24" (subscript_expression "q[7]" identifier [ number_literal ]) = (cast_expression "(uchar)uVar24" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) }))) (expression_statement "p = p + image->number_channels;" (assignment_expression "p = p + image->number_channels" identifier = (binary_expression "p + image->number_channels" identifier + (field_expression "image->number_channels" identifier -> field_identifier))) ;) (expression_statement "q = q + quantum_info->pad + 8;" (assignment_expression "q = q + quantum_info->pad + 8" identifier = (binary_expression "q + quantum_info->pad + 8" (binary_expression "q + quantum_info->pad" identifier + (field_expression "quantum_info->pad" identifier -> field_identifier)) + number_literal)) ;) (expression_statement "MVar39 = MVar39 + 1;" (assignment_expression "MVar39 = MVar39 + 1" identifier = (binary_expression "MVar39 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(MVar39 != number_pixels)" ( (binary_expression "MVar39 != number_pixels" identifier != identifier) )) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar36 != 0x40) {\n      if (uVar36 == 0x10) {\n        if (quantum_info->format == FloatingPointQuantumFormat) {\n          if ((long)number_pixels < 1) {\n            return;\n          }\n          MVar39 = 0;\n          do {\n            pPVar5 = image->channel_map;\n            uVar22 = SinglePrecisionToHalf\n                               ((float)((double)(DAT_0041abdc * p[pPVar5[1].offset] +\n                                                 DAT_0041abd8 * p[pPVar5->offset] +\n                                                DAT_0041abe0 * p[pPVar5[2].offset]) * DAT_003f9c60))\n            ;\n            uVar21 = (uchar)(uVar22 >> 8);\n            if (quantum_info->endian == LSBEndian) {\n              *q = (uchar)uVar22;\n              q[1] = uVar21;\n            }\n            else {\n              *q = uVar21;\n              q[1] = (uchar)uVar22;\n            }\n            QVar41 = _DAT_003fa400;\n            if (image->channel_map[4].traits != UndefinedPixelTrait) {\n              QVar41 = p[image->channel_map[4].offset];\n            }\n            uVar22 = SinglePrecisionToHalf((float)((double)QVar41 * DAT_003f9c60));\n            uVar21 = (uchar)(uVar22 >> 8);\n            if (quantum_info->endian == LSBEndian) {\n              q[2] = (uchar)uVar22;\n              q[3] = uVar21;\n            }\n            else {\n              q[2] = uVar21;\n              q[3] = (uchar)uVar22;\n            }\n            p = p + image->number_channels;\n            q = q + quantum_info->pad + 4;\n            MVar39 = MVar39 + 1;\n          } while (MVar39 != number_pixels);\n          return;\n        }\n        MVar39 = 0;\n        if ((long)number_pixels < 1) {\n          return;\n        }\n        do {\n          pPVar5 = image->channel_map;\n          fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                   fVar17 * p[pPVar5[2].offset];\n          if (NAN(fVar42)) {\n            uVar23 = 0;\n          }\n          else {\n            uVar23 = 0;\n            if ((0.0 < fVar42) && (uVar23 = 0xffff, fVar42 < _DAT_003fa400)) {\n              uVar23 = (undefined2)(int)((double)fVar42 + dVar9);\n            }\n          }\n          uVar21 = (uchar)((ushort)uVar23 >> 8);\n          if (quantum_info->endian == LSBEndian) {\n            *q = (uchar)uVar23;\n            q[1] = uVar21;\n          }\n          else {\n            *q = uVar21;\n            q[1] = (uchar)uVar23;\n          }\n          uVar23 = 0xffff;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            fVar42 = p[image->channel_map[4].offset];\n            if (NAN(fVar42)) {\n              uVar23 = 0;\n            }\n            else {\n              uVar23 = 0;\n              if ((0.0 < fVar42) && (uVar23 = 0xffff, fVar42 < _DAT_003fa400)) {\n                uVar23 = (short)(int)((double)fVar42 + dVar9);\n              }\n            }\n          }\n          uVar21 = (uchar)((ushort)uVar23 >> 8);\n          if (quantum_info->endian == LSBEndian) {\n            q[2] = (uchar)uVar23;\n            q[3] = uVar21;\n          }\n          else {\n            q[2] = uVar21;\n            q[3] = (uchar)uVar23;\n          }\n          p = p + image->number_channels;\n          q = q + quantum_info->pad + 4;\n          MVar39 = MVar39 + 1;\n        } while (MVar39 != number_pixels);\n        return;\n      }\n      goto LAB_002734da;\n    }" if (parenthesized_expression "(uVar36 != 0x40)" ( (binary_expression "uVar36 != 0x40" identifier != number_literal) )) (compound_statement "{\n      if (uVar36 == 0x10) {\n        if (quantum_info->format == FloatingPointQuantumFormat) {\n          if ((long)number_pixels < 1) {\n            return;\n          }\n          MVar39 = 0;\n          do {\n            pPVar5 = image->channel_map;\n            uVar22 = SinglePrecisionToHalf\n                               ((float)((double)(DAT_0041abdc * p[pPVar5[1].offset] +\n                                                 DAT_0041abd8 * p[pPVar5->offset] +\n                                                DAT_0041abe0 * p[pPVar5[2].offset]) * DAT_003f9c60))\n            ;\n            uVar21 = (uchar)(uVar22 >> 8);\n            if (quantum_info->endian == LSBEndian) {\n              *q = (uchar)uVar22;\n              q[1] = uVar21;\n            }\n            else {\n              *q = uVar21;\n              q[1] = (uchar)uVar22;\n            }\n            QVar41 = _DAT_003fa400;\n            if (image->channel_map[4].traits != UndefinedPixelTrait) {\n              QVar41 = p[image->channel_map[4].offset];\n            }\n            uVar22 = SinglePrecisionToHalf((float)((double)QVar41 * DAT_003f9c60));\n            uVar21 = (uchar)(uVar22 >> 8);\n            if (quantum_info->endian == LSBEndian) {\n              q[2] = (uchar)uVar22;\n              q[3] = uVar21;\n            }\n            else {\n              q[2] = uVar21;\n              q[3] = (uchar)uVar22;\n            }\n            p = p + image->number_channels;\n            q = q + quantum_info->pad + 4;\n            MVar39 = MVar39 + 1;\n          } while (MVar39 != number_pixels);\n          return;\n        }\n        MVar39 = 0;\n        if ((long)number_pixels < 1) {\n          return;\n        }\n        do {\n          pPVar5 = image->channel_map;\n          fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                   fVar17 * p[pPVar5[2].offset];\n          if (NAN(fVar42)) {\n            uVar23 = 0;\n          }\n          else {\n            uVar23 = 0;\n            if ((0.0 < fVar42) && (uVar23 = 0xffff, fVar42 < _DAT_003fa400)) {\n              uVar23 = (undefined2)(int)((double)fVar42 + dVar9);\n            }\n          }\n          uVar21 = (uchar)((ushort)uVar23 >> 8);\n          if (quantum_info->endian == LSBEndian) {\n            *q = (uchar)uVar23;\n            q[1] = uVar21;\n          }\n          else {\n            *q = uVar21;\n            q[1] = (uchar)uVar23;\n          }\n          uVar23 = 0xffff;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            fVar42 = p[image->channel_map[4].offset];\n            if (NAN(fVar42)) {\n              uVar23 = 0;\n            }\n            else {\n              uVar23 = 0;\n              if ((0.0 < fVar42) && (uVar23 = 0xffff, fVar42 < _DAT_003fa400)) {\n                uVar23 = (short)(int)((double)fVar42 + dVar9);\n              }\n            }\n          }\n          uVar21 = (uchar)((ushort)uVar23 >> 8);\n          if (quantum_info->endian == LSBEndian) {\n            q[2] = (uchar)uVar23;\n            q[3] = uVar21;\n          }\n          else {\n            q[2] = uVar21;\n            q[3] = (uchar)uVar23;\n          }\n          p = p + image->number_channels;\n          q = q + quantum_info->pad + 4;\n          MVar39 = MVar39 + 1;\n        } while (MVar39 != number_pixels);\n        return;\n      }\n      goto LAB_002734da;\n    }" { (if_statement "if (uVar36 == 0x10) {\n        if (quantum_info->format == FloatingPointQuantumFormat) {\n          if ((long)number_pixels < 1) {\n            return;\n          }\n          MVar39 = 0;\n          do {\n            pPVar5 = image->channel_map;\n            uVar22 = SinglePrecisionToHalf\n                               ((float)((double)(DAT_0041abdc * p[pPVar5[1].offset] +\n                                                 DAT_0041abd8 * p[pPVar5->offset] +\n                                                DAT_0041abe0 * p[pPVar5[2].offset]) * DAT_003f9c60))\n            ;\n            uVar21 = (uchar)(uVar22 >> 8);\n            if (quantum_info->endian == LSBEndian) {\n              *q = (uchar)uVar22;\n              q[1] = uVar21;\n            }\n            else {\n              *q = uVar21;\n              q[1] = (uchar)uVar22;\n            }\n            QVar41 = _DAT_003fa400;\n            if (image->channel_map[4].traits != UndefinedPixelTrait) {\n              QVar41 = p[image->channel_map[4].offset];\n            }\n            uVar22 = SinglePrecisionToHalf((float)((double)QVar41 * DAT_003f9c60));\n            uVar21 = (uchar)(uVar22 >> 8);\n            if (quantum_info->endian == LSBEndian) {\n              q[2] = (uchar)uVar22;\n              q[3] = uVar21;\n            }\n            else {\n              q[2] = uVar21;\n              q[3] = (uchar)uVar22;\n            }\n            p = p + image->number_channels;\n            q = q + quantum_info->pad + 4;\n            MVar39 = MVar39 + 1;\n          } while (MVar39 != number_pixels);\n          return;\n        }\n        MVar39 = 0;\n        if ((long)number_pixels < 1) {\n          return;\n        }\n        do {\n          pPVar5 = image->channel_map;\n          fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                   fVar17 * p[pPVar5[2].offset];\n          if (NAN(fVar42)) {\n            uVar23 = 0;\n          }\n          else {\n            uVar23 = 0;\n            if ((0.0 < fVar42) && (uVar23 = 0xffff, fVar42 < _DAT_003fa400)) {\n              uVar23 = (undefined2)(int)((double)fVar42 + dVar9);\n            }\n          }\n          uVar21 = (uchar)((ushort)uVar23 >> 8);\n          if (quantum_info->endian == LSBEndian) {\n            *q = (uchar)uVar23;\n            q[1] = uVar21;\n          }\n          else {\n            *q = uVar21;\n            q[1] = (uchar)uVar23;\n          }\n          uVar23 = 0xffff;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            fVar42 = p[image->channel_map[4].offset];\n            if (NAN(fVar42)) {\n              uVar23 = 0;\n            }\n            else {\n              uVar23 = 0;\n              if ((0.0 < fVar42) && (uVar23 = 0xffff, fVar42 < _DAT_003fa400)) {\n                uVar23 = (short)(int)((double)fVar42 + dVar9);\n              }\n            }\n          }\n          uVar21 = (uchar)((ushort)uVar23 >> 8);\n          if (quantum_info->endian == LSBEndian) {\n            q[2] = (uchar)uVar23;\n            q[3] = uVar21;\n          }\n          else {\n            q[2] = uVar21;\n            q[3] = (uchar)uVar23;\n          }\n          p = p + image->number_channels;\n          q = q + quantum_info->pad + 4;\n          MVar39 = MVar39 + 1;\n        } while (MVar39 != number_pixels);\n        return;\n      }" if (parenthesized_expression "(uVar36 == 0x10)" ( (binary_expression "uVar36 == 0x10" identifier == number_literal) )) (compound_statement "{\n        if (quantum_info->format == FloatingPointQuantumFormat) {\n          if ((long)number_pixels < 1) {\n            return;\n          }\n          MVar39 = 0;\n          do {\n            pPVar5 = image->channel_map;\n            uVar22 = SinglePrecisionToHalf\n                               ((float)((double)(DAT_0041abdc * p[pPVar5[1].offset] +\n                                                 DAT_0041abd8 * p[pPVar5->offset] +\n                                                DAT_0041abe0 * p[pPVar5[2].offset]) * DAT_003f9c60))\n            ;\n            uVar21 = (uchar)(uVar22 >> 8);\n            if (quantum_info->endian == LSBEndian) {\n              *q = (uchar)uVar22;\n              q[1] = uVar21;\n            }\n            else {\n              *q = uVar21;\n              q[1] = (uchar)uVar22;\n            }\n            QVar41 = _DAT_003fa400;\n            if (image->channel_map[4].traits != UndefinedPixelTrait) {\n              QVar41 = p[image->channel_map[4].offset];\n            }\n            uVar22 = SinglePrecisionToHalf((float)((double)QVar41 * DAT_003f9c60));\n            uVar21 = (uchar)(uVar22 >> 8);\n            if (quantum_info->endian == LSBEndian) {\n              q[2] = (uchar)uVar22;\n              q[3] = uVar21;\n            }\n            else {\n              q[2] = uVar21;\n              q[3] = (uchar)uVar22;\n            }\n            p = p + image->number_channels;\n            q = q + quantum_info->pad + 4;\n            MVar39 = MVar39 + 1;\n          } while (MVar39 != number_pixels);\n          return;\n        }\n        MVar39 = 0;\n        if ((long)number_pixels < 1) {\n          return;\n        }\n        do {\n          pPVar5 = image->channel_map;\n          fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                   fVar17 * p[pPVar5[2].offset];\n          if (NAN(fVar42)) {\n            uVar23 = 0;\n          }\n          else {\n            uVar23 = 0;\n            if ((0.0 < fVar42) && (uVar23 = 0xffff, fVar42 < _DAT_003fa400)) {\n              uVar23 = (undefined2)(int)((double)fVar42 + dVar9);\n            }\n          }\n          uVar21 = (uchar)((ushort)uVar23 >> 8);\n          if (quantum_info->endian == LSBEndian) {\n            *q = (uchar)uVar23;\n            q[1] = uVar21;\n          }\n          else {\n            *q = uVar21;\n            q[1] = (uchar)uVar23;\n          }\n          uVar23 = 0xffff;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            fVar42 = p[image->channel_map[4].offset];\n            if (NAN(fVar42)) {\n              uVar23 = 0;\n            }\n            else {\n              uVar23 = 0;\n              if ((0.0 < fVar42) && (uVar23 = 0xffff, fVar42 < _DAT_003fa400)) {\n                uVar23 = (short)(int)((double)fVar42 + dVar9);\n              }\n            }\n          }\n          uVar21 = (uchar)((ushort)uVar23 >> 8);\n          if (quantum_info->endian == LSBEndian) {\n            q[2] = (uchar)uVar23;\n            q[3] = uVar21;\n          }\n          else {\n            q[2] = uVar21;\n            q[3] = (uchar)uVar23;\n          }\n          p = p + image->number_channels;\n          q = q + quantum_info->pad + 4;\n          MVar39 = MVar39 + 1;\n        } while (MVar39 != number_pixels);\n        return;\n      }" { (if_statement "if (quantum_info->format == FloatingPointQuantumFormat) {\n          if ((long)number_pixels < 1) {\n            return;\n          }\n          MVar39 = 0;\n          do {\n            pPVar5 = image->channel_map;\n            uVar22 = SinglePrecisionToHalf\n                               ((float)((double)(DAT_0041abdc * p[pPVar5[1].offset] +\n                                                 DAT_0041abd8 * p[pPVar5->offset] +\n                                                DAT_0041abe0 * p[pPVar5[2].offset]) * DAT_003f9c60))\n            ;\n            uVar21 = (uchar)(uVar22 >> 8);\n            if (quantum_info->endian == LSBEndian) {\n              *q = (uchar)uVar22;\n              q[1] = uVar21;\n            }\n            else {\n              *q = uVar21;\n              q[1] = (uchar)uVar22;\n            }\n            QVar41 = _DAT_003fa400;\n            if (image->channel_map[4].traits != UndefinedPixelTrait) {\n              QVar41 = p[image->channel_map[4].offset];\n            }\n            uVar22 = SinglePrecisionToHalf((float)((double)QVar41 * DAT_003f9c60));\n            uVar21 = (uchar)(uVar22 >> 8);\n            if (quantum_info->endian == LSBEndian) {\n              q[2] = (uchar)uVar22;\n              q[3] = uVar21;\n            }\n            else {\n              q[2] = uVar21;\n              q[3] = (uchar)uVar22;\n            }\n            p = p + image->number_channels;\n            q = q + quantum_info->pad + 4;\n            MVar39 = MVar39 + 1;\n          } while (MVar39 != number_pixels);\n          return;\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 ((long)number_pixels < 1) {\n            return;\n          }\n          MVar39 = 0;\n          do {\n            pPVar5 = image->channel_map;\n            uVar22 = SinglePrecisionToHalf\n                               ((float)((double)(DAT_0041abdc * p[pPVar5[1].offset] +\n                                                 DAT_0041abd8 * p[pPVar5->offset] +\n                                                DAT_0041abe0 * p[pPVar5[2].offset]) * DAT_003f9c60))\n            ;\n            uVar21 = (uchar)(uVar22 >> 8);\n            if (quantum_info->endian == LSBEndian) {\n              *q = (uchar)uVar22;\n              q[1] = uVar21;\n            }\n            else {\n              *q = uVar21;\n              q[1] = (uchar)uVar22;\n            }\n            QVar41 = _DAT_003fa400;\n            if (image->channel_map[4].traits != UndefinedPixelTrait) {\n              QVar41 = p[image->channel_map[4].offset];\n            }\n            uVar22 = SinglePrecisionToHalf((float)((double)QVar41 * DAT_003f9c60));\n            uVar21 = (uchar)(uVar22 >> 8);\n            if (quantum_info->endian == LSBEndian) {\n              q[2] = (uchar)uVar22;\n              q[3] = uVar21;\n            }\n            else {\n              q[2] = uVar21;\n              q[3] = (uchar)uVar22;\n            }\n            p = p + image->number_channels;\n            q = q + quantum_info->pad + 4;\n            MVar39 = MVar39 + 1;\n          } while (MVar39 != number_pixels);\n          return;\n        }" { (if_statement "if ((long)number_pixels < 1) {\n            return;\n          }" if (parenthesized_expression "((long)number_pixels < 1)" ( (binary_expression "(long)number_pixels < 1" (cast_expression "(long)number_pixels" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) (expression_statement "MVar39 = 0;" (assignment_expression "MVar39 = 0" identifier = number_literal) ;) (do_statement "do {\n            pPVar5 = image->channel_map;\n            uVar22 = SinglePrecisionToHalf\n                               ((float)((double)(DAT_0041abdc * p[pPVar5[1].offset] +\n                                                 DAT_0041abd8 * p[pPVar5->offset] +\n                                                DAT_0041abe0 * p[pPVar5[2].offset]) * DAT_003f9c60))\n            ;\n            uVar21 = (uchar)(uVar22 >> 8);\n            if (quantum_info->endian == LSBEndian) {\n              *q = (uchar)uVar22;\n              q[1] = uVar21;\n            }\n            else {\n              *q = uVar21;\n              q[1] = (uchar)uVar22;\n            }\n            QVar41 = _DAT_003fa400;\n            if (image->channel_map[4].traits != UndefinedPixelTrait) {\n              QVar41 = p[image->channel_map[4].offset];\n            }\n            uVar22 = SinglePrecisionToHalf((float)((double)QVar41 * DAT_003f9c60));\n            uVar21 = (uchar)(uVar22 >> 8);\n            if (quantum_info->endian == LSBEndian) {\n              q[2] = (uchar)uVar22;\n              q[3] = uVar21;\n            }\n            else {\n              q[2] = uVar21;\n              q[3] = (uchar)uVar22;\n            }\n            p = p + image->number_channels;\n            q = q + quantum_info->pad + 4;\n            MVar39 = MVar39 + 1;\n          } while (MVar39 != number_pixels);" do (compound_statement "{\n            pPVar5 = image->channel_map;\n            uVar22 = SinglePrecisionToHalf\n                               ((float)((double)(DAT_0041abdc * p[pPVar5[1].offset] +\n                                                 DAT_0041abd8 * p[pPVar5->offset] +\n                                                DAT_0041abe0 * p[pPVar5[2].offset]) * DAT_003f9c60))\n            ;\n            uVar21 = (uchar)(uVar22 >> 8);\n            if (quantum_info->endian == LSBEndian) {\n              *q = (uchar)uVar22;\n              q[1] = uVar21;\n            }\n            else {\n              *q = uVar21;\n              q[1] = (uchar)uVar22;\n            }\n            QVar41 = _DAT_003fa400;\n            if (image->channel_map[4].traits != UndefinedPixelTrait) {\n              QVar41 = p[image->channel_map[4].offset];\n            }\n            uVar22 = SinglePrecisionToHalf((float)((double)QVar41 * DAT_003f9c60));\n            uVar21 = (uchar)(uVar22 >> 8);\n            if (quantum_info->endian == LSBEndian) {\n              q[2] = (uchar)uVar22;\n              q[3] = uVar21;\n            }\n            else {\n              q[2] = uVar21;\n              q[3] = (uchar)uVar22;\n            }\n            p = p + image->number_channels;\n            q = q + quantum_info->pad + 4;\n            MVar39 = MVar39 + 1;\n          }" { (expression_statement "pPVar5 = image->channel_map;" (assignment_expression "pPVar5 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) (expression_statement "uVar22 = SinglePrecisionToHalf\n                               ((float)((double)(DAT_0041abdc * p[pPVar5[1].offset] +\n                                                 DAT_0041abd8 * p[pPVar5->offset] +\n                                                DAT_0041abe0 * p[pPVar5[2].offset]) * DAT_003f9c60))\n            ;" (assignment_expression "uVar22 = SinglePrecisionToHalf\n                               ((float)((double)(DAT_0041abdc * p[pPVar5[1].offset] +\n                                                 DAT_0041abd8 * p[pPVar5->offset] +\n                                                DAT_0041abe0 * p[pPVar5[2].offset]) * DAT_003f9c60))" identifier = (call_expression "SinglePrecisionToHalf\n                               ((float)((double)(DAT_0041abdc * p[pPVar5[1].offset] +\n                                                 DAT_0041abd8 * p[pPVar5->offset] +\n                                                DAT_0041abe0 * p[pPVar5[2].offset]) * DAT_003f9c60))" identifier (argument_list "((float)((double)(DAT_0041abdc * p[pPVar5[1].offset] +\n                                                 DAT_0041abd8 * p[pPVar5->offset] +\n                                                DAT_0041abe0 * p[pPVar5[2].offset]) * DAT_003f9c60))" ( (cast_expression "(float)((double)(DAT_0041abdc * p[pPVar5[1].offset] +\n                                                 DAT_0041abd8 * p[pPVar5->offset] +\n                                                DAT_0041abe0 * p[pPVar5[2].offset]) * DAT_003f9c60)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((double)(DAT_0041abdc * p[pPVar5[1].offset] +\n                                                 DAT_0041abd8 * p[pPVar5->offset] +\n                                                DAT_0041abe0 * p[pPVar5[2].offset]) * DAT_003f9c60)" ( (binary_expression "(double)(DAT_0041abdc * p[pPVar5[1].offset] +\n                                                 DAT_0041abd8 * p[pPVar5->offset] +\n                                                DAT_0041abe0 * p[pPVar5[2].offset]) * DAT_003f9c60" (cast_expression "(double)(DAT_0041abdc * p[pPVar5[1].offset] +\n                                                 DAT_0041abd8 * p[pPVar5->offset] +\n                                                DAT_0041abe0 * p[pPVar5[2].offset])" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(DAT_0041abdc * p[pPVar5[1].offset] +\n                                                 DAT_0041abd8 * p[pPVar5->offset] +\n                                                DAT_0041abe0 * p[pPVar5[2].offset])" ( (binary_expression "DAT_0041abdc * p[pPVar5[1].offset] +\n                                                 DAT_0041abd8 * p[pPVar5->offset] +\n                                                DAT_0041abe0 * p[pPVar5[2].offset]" (binary_expression "DAT_0041abdc * p[pPVar5[1].offset] +\n                                                 DAT_0041abd8 * p[pPVar5->offset]" (binary_expression "DAT_0041abdc * p[pPVar5[1].offset]" identifier * (subscript_expression "p[pPVar5[1].offset]" identifier [ (field_expression "pPVar5[1].offset" (subscript_expression "pPVar5[1]" identifier [ number_literal ]) . field_identifier) ])) + (binary_expression "DAT_0041abd8 * p[pPVar5->offset]" identifier * (subscript_expression "p[pPVar5->offset]" identifier [ (field_expression "pPVar5->offset" identifier -> field_identifier) ]))) + (binary_expression "DAT_0041abe0 * p[pPVar5[2].offset]" identifier * (subscript_expression "p[pPVar5[2].offset]" identifier [ (field_expression "pPVar5[2].offset" (subscript_expression "pPVar5[2]" identifier [ number_literal ]) . field_identifier) ]))) ))) * identifier) ))) )))) ;) (expression_statement "uVar21 = (uchar)(uVar22 >> 8);" (assignment_expression "uVar21 = (uchar)(uVar22 >> 8)" identifier = (call_expression "(uchar)(uVar22 >> 8)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "(uVar22 >> 8)" ( (binary_expression "uVar22 >> 8" identifier >> number_literal) )))) ;) (if_statement "if (quantum_info->endian == LSBEndian) {\n              *q = (uchar)uVar22;\n              q[1] = uVar21;\n            }\n            else {\n              *q = uVar21;\n              q[1] = (uchar)uVar22;\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              *q = (uchar)uVar22;\n              q[1] = uVar21;\n            }" { (expression_statement "*q = (uchar)uVar22;" (assignment_expression "*q = (uchar)uVar22" (pointer_expression "*q" * identifier) = (cast_expression "(uchar)uVar22" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "q[1] = uVar21;" (assignment_expression "q[1] = uVar21" (subscript_expression "q[1]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n              *q = uVar21;\n              q[1] = (uchar)uVar22;\n            }" else (compound_statement "{\n              *q = uVar21;\n              q[1] = (uchar)uVar22;\n            }" { (expression_statement "*q = uVar21;" (assignment_expression "*q = uVar21" (pointer_expression "*q" * identifier) = identifier) ;) (expression_statement "q[1] = (uchar)uVar22;" (assignment_expression "q[1] = (uchar)uVar22" (subscript_expression "q[1]" identifier [ number_literal ]) = (cast_expression "(uchar)uVar22" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) }))) (expression_statement "QVar41 = _DAT_003fa400;" (assignment_expression "QVar41 = _DAT_003fa400" identifier = identifier) ;) (if_statement "if (image->channel_map[4].traits != UndefinedPixelTrait) {\n              QVar41 = p[image->channel_map[4].offset];\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              QVar41 = p[image->channel_map[4].offset];\n            }" { (expression_statement "QVar41 = p[image->channel_map[4].offset];" (assignment_expression "QVar41 = p[image->channel_map[4].offset]" identifier = (subscript_expression "p[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) ])) ;) })) (expression_statement "uVar22 = SinglePrecisionToHalf((float)((double)QVar41 * DAT_003f9c60));" (assignment_expression "uVar22 = SinglePrecisionToHalf((float)((double)QVar41 * DAT_003f9c60))" identifier = (call_expression "SinglePrecisionToHalf((float)((double)QVar41 * DAT_003f9c60))" identifier (argument_list "((float)((double)QVar41 * DAT_003f9c60))" ( (cast_expression "(float)((double)QVar41 * DAT_003f9c60)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((double)QVar41 * DAT_003f9c60)" ( (binary_expression "(double)QVar41 * DAT_003f9c60" (cast_expression "(double)QVar41" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) ))) )))) ;) (expression_statement "uVar21 = (uchar)(uVar22 >> 8);" (assignment_expression "uVar21 = (uchar)(uVar22 >> 8)" identifier = (call_expression "(uchar)(uVar22 >> 8)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "(uVar22 >> 8)" ( (binary_expression "uVar22 >> 8" identifier >> number_literal) )))) ;) (if_statement "if (quantum_info->endian == LSBEndian) {\n              q[2] = (uchar)uVar22;\n              q[3] = uVar21;\n            }\n            else {\n              q[2] = uVar21;\n              q[3] = (uchar)uVar22;\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              q[2] = (uchar)uVar22;\n              q[3] = uVar21;\n            }" { (expression_statement "q[2] = (uchar)uVar22;" (assignment_expression "q[2] = (uchar)uVar22" (subscript_expression "q[2]" identifier [ number_literal ]) = (cast_expression "(uchar)uVar22" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "q[3] = uVar21;" (assignment_expression "q[3] = uVar21" (subscript_expression "q[3]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n              q[2] = uVar21;\n              q[3] = (uchar)uVar22;\n            }" else (compound_statement "{\n              q[2] = uVar21;\n              q[3] = (uchar)uVar22;\n            }" { (expression_statement "q[2] = uVar21;" (assignment_expression "q[2] = uVar21" (subscript_expression "q[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[3] = (uchar)uVar22;" (assignment_expression "q[3] = (uchar)uVar22" (subscript_expression "q[3]" identifier [ number_literal ]) = (cast_expression "(uchar)uVar22" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) }))) (expression_statement "p = p + image->number_channels;" (assignment_expression "p = p + image->number_channels" identifier = (binary_expression "p + image->number_channels" identifier + (field_expression "image->number_channels" identifier -> field_identifier))) ;) (expression_statement "q = q + quantum_info->pad + 4;" (assignment_expression "q = q + quantum_info->pad + 4" identifier = (binary_expression "q + quantum_info->pad + 4" (binary_expression "q + quantum_info->pad" identifier + (field_expression "quantum_info->pad" identifier -> field_identifier)) + number_literal)) ;) (expression_statement "MVar39 = MVar39 + 1;" (assignment_expression "MVar39 = MVar39 + 1" identifier = (binary_expression "MVar39 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(MVar39 != number_pixels)" ( (binary_expression "MVar39 != number_pixels" identifier != identifier) )) ;) (return_statement "return;" return ;) })) (expression_statement "MVar39 = 0;" (assignment_expression "MVar39 = 0" identifier = number_literal) ;) (if_statement "if ((long)number_pixels < 1) {\n          return;\n        }" if (parenthesized_expression "((long)number_pixels < 1)" ( (binary_expression "(long)number_pixels < 1" (cast_expression "(long)number_pixels" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (do_statement "do {\n          pPVar5 = image->channel_map;\n          fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                   fVar17 * p[pPVar5[2].offset];\n          if (NAN(fVar42)) {\n            uVar23 = 0;\n          }\n          else {\n            uVar23 = 0;\n            if ((0.0 < fVar42) && (uVar23 = 0xffff, fVar42 < _DAT_003fa400)) {\n              uVar23 = (undefined2)(int)((double)fVar42 + dVar9);\n            }\n          }\n          uVar21 = (uchar)((ushort)uVar23 >> 8);\n          if (quantum_info->endian == LSBEndian) {\n            *q = (uchar)uVar23;\n            q[1] = uVar21;\n          }\n          else {\n            *q = uVar21;\n            q[1] = (uchar)uVar23;\n          }\n          uVar23 = 0xffff;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            fVar42 = p[image->channel_map[4].offset];\n            if (NAN(fVar42)) {\n              uVar23 = 0;\n            }\n            else {\n              uVar23 = 0;\n              if ((0.0 < fVar42) && (uVar23 = 0xffff, fVar42 < _DAT_003fa400)) {\n                uVar23 = (short)(int)((double)fVar42 + dVar9);\n              }\n            }\n          }\n          uVar21 = (uchar)((ushort)uVar23 >> 8);\n          if (quantum_info->endian == LSBEndian) {\n            q[2] = (uchar)uVar23;\n            q[3] = uVar21;\n          }\n          else {\n            q[2] = uVar21;\n            q[3] = (uchar)uVar23;\n          }\n          p = p + image->number_channels;\n          q = q + quantum_info->pad + 4;\n          MVar39 = MVar39 + 1;\n        } while (MVar39 != number_pixels);" do (compound_statement "{\n          pPVar5 = image->channel_map;\n          fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                   fVar17 * p[pPVar5[2].offset];\n          if (NAN(fVar42)) {\n            uVar23 = 0;\n          }\n          else {\n            uVar23 = 0;\n            if ((0.0 < fVar42) && (uVar23 = 0xffff, fVar42 < _DAT_003fa400)) {\n              uVar23 = (undefined2)(int)((double)fVar42 + dVar9);\n            }\n          }\n          uVar21 = (uchar)((ushort)uVar23 >> 8);\n          if (quantum_info->endian == LSBEndian) {\n            *q = (uchar)uVar23;\n            q[1] = uVar21;\n          }\n          else {\n            *q = uVar21;\n            q[1] = (uchar)uVar23;\n          }\n          uVar23 = 0xffff;\n          if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            fVar42 = p[image->channel_map[4].offset];\n            if (NAN(fVar42)) {\n              uVar23 = 0;\n            }\n            else {\n              uVar23 = 0;\n              if ((0.0 < fVar42) && (uVar23 = 0xffff, fVar42 < _DAT_003fa400)) {\n                uVar23 = (short)(int)((double)fVar42 + dVar9);\n              }\n            }\n          }\n          uVar21 = (uchar)((ushort)uVar23 >> 8);\n          if (quantum_info->endian == LSBEndian) {\n            q[2] = (uchar)uVar23;\n            q[3] = uVar21;\n          }\n          else {\n            q[2] = uVar21;\n            q[3] = (uchar)uVar23;\n          }\n          p = p + image->number_channels;\n          q = q + quantum_info->pad + 4;\n          MVar39 = MVar39 + 1;\n        }" { (expression_statement "pPVar5 = image->channel_map;" (assignment_expression "pPVar5 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) (expression_statement "fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                   fVar17 * p[pPVar5[2].offset];" (assignment_expression "fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                   fVar17 * p[pPVar5[2].offset]" identifier = (binary_expression "fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                   fVar17 * p[pPVar5[2].offset]" (binary_expression "fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset]" (binary_expression "fVar16 * p[pPVar5[1].offset]" identifier * (subscript_expression "p[pPVar5[1].offset]" identifier [ (field_expression "pPVar5[1].offset" (subscript_expression "pPVar5[1]" identifier [ number_literal ]) . field_identifier) ])) + (binary_expression "fVar15 * p[pPVar5->offset]" identifier * (subscript_expression "p[pPVar5->offset]" identifier [ (field_expression "pPVar5->offset" identifier -> field_identifier) ]))) + (binary_expression "fVar17 * p[pPVar5[2].offset]" identifier * (subscript_expression "p[pPVar5[2].offset]" identifier [ (field_expression "pPVar5[2].offset" (subscript_expression "pPVar5[2]" identifier [ number_literal ]) . field_identifier) ])))) ;) (if_statement "if (NAN(fVar42)) {\n            uVar23 = 0;\n          }\n          else {\n            uVar23 = 0;\n            if ((0.0 < fVar42) && (uVar23 = 0xffff, fVar42 < _DAT_003fa400)) {\n              uVar23 = (undefined2)(int)((double)fVar42 + dVar9);\n            }\n          }" if (parenthesized_expression "(NAN(fVar42))" ( (call_expression "NAN(fVar42)" identifier (argument_list "(fVar42)" ( identifier ))) )) (compound_statement "{\n            uVar23 = 0;\n          }" { (expression_statement "uVar23 = 0;" (assignment_expression "uVar23 = 0" identifier = number_literal) ;) }) (else_clause "else {\n            uVar23 = 0;\n            if ((0.0 < fVar42) && (uVar23 = 0xffff, fVar42 < _DAT_003fa400)) {\n              uVar23 = (undefined2)(int)((double)fVar42 + dVar9);\n            }\n          }" else (compound_statement "{\n            uVar23 = 0;\n            if ((0.0 < fVar42) && (uVar23 = 0xffff, fVar42 < _DAT_003fa400)) {\n              uVar23 = (undefined2)(int)((double)fVar42 + dVar9);\n            }\n          }" { (expression_statement "uVar23 = 0;" (assignment_expression "uVar23 = 0" identifier = number_literal) ;) (if_statement "if ((0.0 < fVar42) && (uVar23 = 0xffff, fVar42 < _DAT_003fa400)) {\n              uVar23 = (undefined2)(int)((double)fVar42 + dVar9);\n            }" if (parenthesized_expression "((0.0 < fVar42) && (uVar23 = 0xffff, fVar42 < _DAT_003fa400))" ( (binary_expression "(0.0 < fVar42) && (uVar23 = 0xffff, fVar42 < _DAT_003fa400)" (parenthesized_expression "(0.0 < fVar42)" ( (binary_expression "0.0 < fVar42" number_literal < identifier) )) && (parenthesized_expression "(uVar23 = 0xffff, fVar42 < _DAT_003fa400)" ( (comma_expression "uVar23 = 0xffff, fVar42 < _DAT_003fa400" (assignment_expression "uVar23 = 0xffff" identifier = number_literal) , (binary_expression "fVar42 < _DAT_003fa400" identifier < identifier)) ))) )) (compound_statement "{\n              uVar23 = (undefined2)(int)((double)fVar42 + dVar9);\n            }" { (expression_statement "uVar23 = (undefined2)(int)((double)fVar42 + dVar9);" (assignment_expression "uVar23 = (undefined2)(int)((double)fVar42 + dVar9)" identifier = (call_expression "(undefined2)(int)((double)fVar42 + dVar9)" (call_expression "(undefined2)(int)" (parenthesized_expression "(undefined2)" ( identifier )) (argument_list "(int)" ( identifier ))) (argument_list "((double)fVar42 + dVar9)" ( (binary_expression "(double)fVar42 + dVar9" (cast_expression "(double)fVar42" ( (type_descriptor "double" primitive_type) ) identifier) + identifier) )))) ;) })) }))) (expression_statement "uVar21 = (uchar)((ushort)uVar23 >> 8);" (assignment_expression "uVar21 = (uchar)((ushort)uVar23 >> 8)" identifier = (call_expression "(uchar)((ushort)uVar23 >> 8)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ushort)uVar23 >> 8)" ( (binary_expression "(ushort)uVar23 >> 8" (cast_expression "(ushort)uVar23" ( (type_descriptor "ushort" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (quantum_info->endian == LSBEndian) {\n            *q = (uchar)uVar23;\n            q[1] = uVar21;\n          }\n          else {\n            *q = uVar21;\n            q[1] = (uchar)uVar23;\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            *q = (uchar)uVar23;\n            q[1] = uVar21;\n          }" { (expression_statement "*q = (uchar)uVar23;" (assignment_expression "*q = (uchar)uVar23" (pointer_expression "*q" * identifier) = (cast_expression "(uchar)uVar23" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "q[1] = uVar21;" (assignment_expression "q[1] = uVar21" (subscript_expression "q[1]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            *q = uVar21;\n            q[1] = (uchar)uVar23;\n          }" else (compound_statement "{\n            *q = uVar21;\n            q[1] = (uchar)uVar23;\n          }" { (expression_statement "*q = uVar21;" (assignment_expression "*q = uVar21" (pointer_expression "*q" * identifier) = identifier) ;) (expression_statement "q[1] = (uchar)uVar23;" (assignment_expression "q[1] = (uchar)uVar23" (subscript_expression "q[1]" identifier [ number_literal ]) = (cast_expression "(uchar)uVar23" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) }))) (expression_statement "uVar23 = 0xffff;" (assignment_expression "uVar23 = 0xffff" identifier = number_literal) ;) (if_statement "if (image->channel_map[4].traits != UndefinedPixelTrait) {\n            fVar42 = p[image->channel_map[4].offset];\n            if (NAN(fVar42)) {\n              uVar23 = 0;\n            }\n            else {\n              uVar23 = 0;\n              if ((0.0 < fVar42) && (uVar23 = 0xffff, fVar42 < _DAT_003fa400)) {\n                uVar23 = (short)(int)((double)fVar42 + dVar9);\n              }\n            }\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            fVar42 = p[image->channel_map[4].offset];\n            if (NAN(fVar42)) {\n              uVar23 = 0;\n            }\n            else {\n              uVar23 = 0;\n              if ((0.0 < fVar42) && (uVar23 = 0xffff, fVar42 < _DAT_003fa400)) {\n                uVar23 = (short)(int)((double)fVar42 + dVar9);\n              }\n            }\n          }" { (expression_statement "fVar42 = p[image->channel_map[4].offset];" (assignment_expression "fVar42 = p[image->channel_map[4].offset]" identifier = (subscript_expression "p[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) ])) ;) (if_statement "if (NAN(fVar42)) {\n              uVar23 = 0;\n            }\n            else {\n              uVar23 = 0;\n              if ((0.0 < fVar42) && (uVar23 = 0xffff, fVar42 < _DAT_003fa400)) {\n                uVar23 = (short)(int)((double)fVar42 + dVar9);\n              }\n            }" if (parenthesized_expression "(NAN(fVar42))" ( (call_expression "NAN(fVar42)" identifier (argument_list "(fVar42)" ( identifier ))) )) (compound_statement "{\n              uVar23 = 0;\n            }" { (expression_statement "uVar23 = 0;" (assignment_expression "uVar23 = 0" identifier = number_literal) ;) }) (else_clause "else {\n              uVar23 = 0;\n              if ((0.0 < fVar42) && (uVar23 = 0xffff, fVar42 < _DAT_003fa400)) {\n                uVar23 = (short)(int)((double)fVar42 + dVar9);\n              }\n            }" else (compound_statement "{\n              uVar23 = 0;\n              if ((0.0 < fVar42) && (uVar23 = 0xffff, fVar42 < _DAT_003fa400)) {\n                uVar23 = (short)(int)((double)fVar42 + dVar9);\n              }\n            }" { (expression_statement "uVar23 = 0;" (assignment_expression "uVar23 = 0" identifier = number_literal) ;) (if_statement "if ((0.0 < fVar42) && (uVar23 = 0xffff, fVar42 < _DAT_003fa400)) {\n                uVar23 = (short)(int)((double)fVar42 + dVar9);\n              }" if (parenthesized_expression "((0.0 < fVar42) && (uVar23 = 0xffff, fVar42 < _DAT_003fa400))" ( (binary_expression "(0.0 < fVar42) && (uVar23 = 0xffff, fVar42 < _DAT_003fa400)" (parenthesized_expression "(0.0 < fVar42)" ( (binary_expression "0.0 < fVar42" number_literal < identifier) )) && (parenthesized_expression "(uVar23 = 0xffff, fVar42 < _DAT_003fa400)" ( (comma_expression "uVar23 = 0xffff, fVar42 < _DAT_003fa400" (assignment_expression "uVar23 = 0xffff" identifier = number_literal) , (binary_expression "fVar42 < _DAT_003fa400" identifier < identifier)) ))) )) (compound_statement "{\n                uVar23 = (short)(int)((double)fVar42 + dVar9);\n              }" { (expression_statement "uVar23 = (short)(int)((double)fVar42 + dVar9);" (assignment_expression "uVar23 = (short)(int)((double)fVar42 + dVar9)" identifier = (cast_expression "(short)(int)((double)fVar42 + dVar9)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (cast_expression "(int)((double)fVar42 + dVar9)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((double)fVar42 + dVar9)" ( (binary_expression "(double)fVar42 + dVar9" (cast_expression "(double)fVar42" ( (type_descriptor "double" primitive_type) ) identifier) + identifier) ))))) ;) })) }))) })) (expression_statement "uVar21 = (uchar)((ushort)uVar23 >> 8);" (assignment_expression "uVar21 = (uchar)((ushort)uVar23 >> 8)" identifier = (call_expression "(uchar)((ushort)uVar23 >> 8)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ushort)uVar23 >> 8)" ( (binary_expression "(ushort)uVar23 >> 8" (cast_expression "(ushort)uVar23" ( (type_descriptor "ushort" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (quantum_info->endian == LSBEndian) {\n            q[2] = (uchar)uVar23;\n            q[3] = uVar21;\n          }\n          else {\n            q[2] = uVar21;\n            q[3] = (uchar)uVar23;\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            q[2] = (uchar)uVar23;\n            q[3] = uVar21;\n          }" { (expression_statement "q[2] = (uchar)uVar23;" (assignment_expression "q[2] = (uchar)uVar23" (subscript_expression "q[2]" identifier [ number_literal ]) = (cast_expression "(uchar)uVar23" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "q[3] = uVar21;" (assignment_expression "q[3] = uVar21" (subscript_expression "q[3]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            q[2] = uVar21;\n            q[3] = (uchar)uVar23;\n          }" else (compound_statement "{\n            q[2] = uVar21;\n            q[3] = (uchar)uVar23;\n          }" { (expression_statement "q[2] = uVar21;" (assignment_expression "q[2] = uVar21" (subscript_expression "q[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[3] = (uchar)uVar23;" (assignment_expression "q[3] = (uchar)uVar23" (subscript_expression "q[3]" identifier [ number_literal ]) = (cast_expression "(uchar)uVar23" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) }))) (expression_statement "p = p + image->number_channels;" (assignment_expression "p = p + image->number_channels" identifier = (binary_expression "p + image->number_channels" identifier + (field_expression "image->number_channels" identifier -> field_identifier))) ;) (expression_statement "q = q + quantum_info->pad + 4;" (assignment_expression "q = q + quantum_info->pad + 4" identifier = (binary_expression "q + quantum_info->pad + 4" (binary_expression "q + quantum_info->pad" identifier + (field_expression "quantum_info->pad" identifier -> field_identifier)) + number_literal)) ;) (expression_statement "MVar39 = MVar39 + 1;" (assignment_expression "MVar39 = MVar39 + 1" identifier = (binary_expression "MVar39 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(MVar39 != number_pixels)" ( (binary_expression "MVar39 != number_pixels" identifier != identifier) )) ;) (return_statement "return;" return ;) })) (goto_statement "goto LAB_002734da;" goto statement_identifier ;) })) (if_statement "if (quantum_info->format == FloatingPointQuantumFormat) {\n      if ((long)number_pixels < 1) {\n        return;\n      }\n      MVar39 = 0;\n      do {\n        pPVar5 = image->channel_map;\n        dVar6 = (double)(fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                        fVar17 * p[pPVar5[2].offset]) * (quantum_info->state).inverse_scale +\n                quantum_info->minimum;\n        uVar25 = (uchar)((ulong)dVar6 >> 8);\n        uVar28 = (uchar)((ulong)dVar6 >> 0x10);\n        uVar29 = (uchar)((ulong)dVar6 >> 0x18);\n        uVar30 = (uchar)((ulong)dVar6 >> 0x20);\n        uVar31 = (uchar)((ulong)dVar6 >> 0x28);\n        uVar32 = (uchar)((ulong)dVar6 >> 0x30);\n        uVar21 = (uchar)((ulong)dVar6 >> 0x38);\n        if (quantum_info->endian == LSBEndian) {\n          *q = SUB81(dVar6,0);\n          q[1] = uVar25;\n          q[2] = uVar28;\n          q[3] = uVar29;\n          q[4] = uVar30;\n          q[5] = uVar31;\n          q[6] = uVar32;\n          q[7] = uVar21;\n        }\n        else {\n          *q = uVar21;\n          q[1] = uVar32;\n          q[2] = uVar31;\n          q[3] = uVar30;\n          q[4] = uVar29;\n          q[5] = uVar28;\n          q[6] = uVar25;\n          q[7] = SUB81(dVar6,0);\n        }\n        QVar41 = fVar42;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          QVar41 = p[image->channel_map[4].offset];\n        }\n        dVar6 = (double)QVar41 * (quantum_info->state).inverse_scale + quantum_info->minimum;\n        uVar21 = (uchar)((ulong)dVar6 >> 8);\n        uVar25 = (uchar)((ulong)dVar6 >> 0x10);\n        uVar31 = (uchar)((ulong)dVar6 >> 0x18);\n        uVar32 = (uchar)((ulong)dVar6 >> 0x20);\n        uVar30 = (uchar)((ulong)dVar6 >> 0x28);\n        uVar29 = (uchar)((ulong)dVar6 >> 0x30);\n        uVar28 = (uchar)((ulong)dVar6 >> 0x38);\n        if (quantum_info->endian == LSBEndian) {\n          q[8] = SUB81(dVar6,0);\n          q[9] = uVar21;\n          q[10] = uVar25;\n          q[0xb] = uVar31;\n          q[0xc] = uVar32;\n          q[0xd] = uVar30;\n          q[0xe] = uVar29;\n          q[0xf] = uVar28;\n        }\n        else {\n          q[8] = uVar28;\n          q[9] = uVar29;\n          q[10] = uVar30;\n          q[0xb] = uVar32;\n          q[0xc] = uVar31;\n          q[0xd] = uVar25;\n          q[0xe] = uVar21;\n          q[0xf] = SUB81(dVar6,0);\n        }\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 0x10;\n        MVar39 = MVar39 + 1;\n      } while (MVar39 != number_pixels);\n      return;\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 ((long)number_pixels < 1) {\n        return;\n      }\n      MVar39 = 0;\n      do {\n        pPVar5 = image->channel_map;\n        dVar6 = (double)(fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                        fVar17 * p[pPVar5[2].offset]) * (quantum_info->state).inverse_scale +\n                quantum_info->minimum;\n        uVar25 = (uchar)((ulong)dVar6 >> 8);\n        uVar28 = (uchar)((ulong)dVar6 >> 0x10);\n        uVar29 = (uchar)((ulong)dVar6 >> 0x18);\n        uVar30 = (uchar)((ulong)dVar6 >> 0x20);\n        uVar31 = (uchar)((ulong)dVar6 >> 0x28);\n        uVar32 = (uchar)((ulong)dVar6 >> 0x30);\n        uVar21 = (uchar)((ulong)dVar6 >> 0x38);\n        if (quantum_info->endian == LSBEndian) {\n          *q = SUB81(dVar6,0);\n          q[1] = uVar25;\n          q[2] = uVar28;\n          q[3] = uVar29;\n          q[4] = uVar30;\n          q[5] = uVar31;\n          q[6] = uVar32;\n          q[7] = uVar21;\n        }\n        else {\n          *q = uVar21;\n          q[1] = uVar32;\n          q[2] = uVar31;\n          q[3] = uVar30;\n          q[4] = uVar29;\n          q[5] = uVar28;\n          q[6] = uVar25;\n          q[7] = SUB81(dVar6,0);\n        }\n        QVar41 = fVar42;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          QVar41 = p[image->channel_map[4].offset];\n        }\n        dVar6 = (double)QVar41 * (quantum_info->state).inverse_scale + quantum_info->minimum;\n        uVar21 = (uchar)((ulong)dVar6 >> 8);\n        uVar25 = (uchar)((ulong)dVar6 >> 0x10);\n        uVar31 = (uchar)((ulong)dVar6 >> 0x18);\n        uVar32 = (uchar)((ulong)dVar6 >> 0x20);\n        uVar30 = (uchar)((ulong)dVar6 >> 0x28);\n        uVar29 = (uchar)((ulong)dVar6 >> 0x30);\n        uVar28 = (uchar)((ulong)dVar6 >> 0x38);\n        if (quantum_info->endian == LSBEndian) {\n          q[8] = SUB81(dVar6,0);\n          q[9] = uVar21;\n          q[10] = uVar25;\n          q[0xb] = uVar31;\n          q[0xc] = uVar32;\n          q[0xd] = uVar30;\n          q[0xe] = uVar29;\n          q[0xf] = uVar28;\n        }\n        else {\n          q[8] = uVar28;\n          q[9] = uVar29;\n          q[10] = uVar30;\n          q[0xb] = uVar32;\n          q[0xc] = uVar31;\n          q[0xd] = uVar25;\n          q[0xe] = uVar21;\n          q[0xf] = SUB81(dVar6,0);\n        }\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 0x10;\n        MVar39 = MVar39 + 1;\n      } while (MVar39 != number_pixels);\n      return;\n    }" { (if_statement "if ((long)number_pixels < 1) {\n        return;\n      }" if (parenthesized_expression "((long)number_pixels < 1)" ( (binary_expression "(long)number_pixels < 1" (cast_expression "(long)number_pixels" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "MVar39 = 0;" (assignment_expression "MVar39 = 0" identifier = number_literal) ;) (do_statement "do {\n        pPVar5 = image->channel_map;\n        dVar6 = (double)(fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                        fVar17 * p[pPVar5[2].offset]) * (quantum_info->state).inverse_scale +\n                quantum_info->minimum;\n        uVar25 = (uchar)((ulong)dVar6 >> 8);\n        uVar28 = (uchar)((ulong)dVar6 >> 0x10);\n        uVar29 = (uchar)((ulong)dVar6 >> 0x18);\n        uVar30 = (uchar)((ulong)dVar6 >> 0x20);\n        uVar31 = (uchar)((ulong)dVar6 >> 0x28);\n        uVar32 = (uchar)((ulong)dVar6 >> 0x30);\n        uVar21 = (uchar)((ulong)dVar6 >> 0x38);\n        if (quantum_info->endian == LSBEndian) {\n          *q = SUB81(dVar6,0);\n          q[1] = uVar25;\n          q[2] = uVar28;\n          q[3] = uVar29;\n          q[4] = uVar30;\n          q[5] = uVar31;\n          q[6] = uVar32;\n          q[7] = uVar21;\n        }\n        else {\n          *q = uVar21;\n          q[1] = uVar32;\n          q[2] = uVar31;\n          q[3] = uVar30;\n          q[4] = uVar29;\n          q[5] = uVar28;\n          q[6] = uVar25;\n          q[7] = SUB81(dVar6,0);\n        }\n        QVar41 = fVar42;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          QVar41 = p[image->channel_map[4].offset];\n        }\n        dVar6 = (double)QVar41 * (quantum_info->state).inverse_scale + quantum_info->minimum;\n        uVar21 = (uchar)((ulong)dVar6 >> 8);\n        uVar25 = (uchar)((ulong)dVar6 >> 0x10);\n        uVar31 = (uchar)((ulong)dVar6 >> 0x18);\n        uVar32 = (uchar)((ulong)dVar6 >> 0x20);\n        uVar30 = (uchar)((ulong)dVar6 >> 0x28);\n        uVar29 = (uchar)((ulong)dVar6 >> 0x30);\n        uVar28 = (uchar)((ulong)dVar6 >> 0x38);\n        if (quantum_info->endian == LSBEndian) {\n          q[8] = SUB81(dVar6,0);\n          q[9] = uVar21;\n          q[10] = uVar25;\n          q[0xb] = uVar31;\n          q[0xc] = uVar32;\n          q[0xd] = uVar30;\n          q[0xe] = uVar29;\n          q[0xf] = uVar28;\n        }\n        else {\n          q[8] = uVar28;\n          q[9] = uVar29;\n          q[10] = uVar30;\n          q[0xb] = uVar32;\n          q[0xc] = uVar31;\n          q[0xd] = uVar25;\n          q[0xe] = uVar21;\n          q[0xf] = SUB81(dVar6,0);\n        }\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 0x10;\n        MVar39 = MVar39 + 1;\n      } while (MVar39 != number_pixels);" do (compound_statement "{\n        pPVar5 = image->channel_map;\n        dVar6 = (double)(fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                        fVar17 * p[pPVar5[2].offset]) * (quantum_info->state).inverse_scale +\n                quantum_info->minimum;\n        uVar25 = (uchar)((ulong)dVar6 >> 8);\n        uVar28 = (uchar)((ulong)dVar6 >> 0x10);\n        uVar29 = (uchar)((ulong)dVar6 >> 0x18);\n        uVar30 = (uchar)((ulong)dVar6 >> 0x20);\n        uVar31 = (uchar)((ulong)dVar6 >> 0x28);\n        uVar32 = (uchar)((ulong)dVar6 >> 0x30);\n        uVar21 = (uchar)((ulong)dVar6 >> 0x38);\n        if (quantum_info->endian == LSBEndian) {\n          *q = SUB81(dVar6,0);\n          q[1] = uVar25;\n          q[2] = uVar28;\n          q[3] = uVar29;\n          q[4] = uVar30;\n          q[5] = uVar31;\n          q[6] = uVar32;\n          q[7] = uVar21;\n        }\n        else {\n          *q = uVar21;\n          q[1] = uVar32;\n          q[2] = uVar31;\n          q[3] = uVar30;\n          q[4] = uVar29;\n          q[5] = uVar28;\n          q[6] = uVar25;\n          q[7] = SUB81(dVar6,0);\n        }\n        QVar41 = fVar42;\n        if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          QVar41 = p[image->channel_map[4].offset];\n        }\n        dVar6 = (double)QVar41 * (quantum_info->state).inverse_scale + quantum_info->minimum;\n        uVar21 = (uchar)((ulong)dVar6 >> 8);\n        uVar25 = (uchar)((ulong)dVar6 >> 0x10);\n        uVar31 = (uchar)((ulong)dVar6 >> 0x18);\n        uVar32 = (uchar)((ulong)dVar6 >> 0x20);\n        uVar30 = (uchar)((ulong)dVar6 >> 0x28);\n        uVar29 = (uchar)((ulong)dVar6 >> 0x30);\n        uVar28 = (uchar)((ulong)dVar6 >> 0x38);\n        if (quantum_info->endian == LSBEndian) {\n          q[8] = SUB81(dVar6,0);\n          q[9] = uVar21;\n          q[10] = uVar25;\n          q[0xb] = uVar31;\n          q[0xc] = uVar32;\n          q[0xd] = uVar30;\n          q[0xe] = uVar29;\n          q[0xf] = uVar28;\n        }\n        else {\n          q[8] = uVar28;\n          q[9] = uVar29;\n          q[10] = uVar30;\n          q[0xb] = uVar32;\n          q[0xc] = uVar31;\n          q[0xd] = uVar25;\n          q[0xe] = uVar21;\n          q[0xf] = SUB81(dVar6,0);\n        }\n        p = p + image->number_channels;\n        q = q + quantum_info->pad + 0x10;\n        MVar39 = MVar39 + 1;\n      }" { (expression_statement "pPVar5 = image->channel_map;" (assignment_expression "pPVar5 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) (expression_statement "dVar6 = (double)(fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                        fVar17 * p[pPVar5[2].offset]) * (quantum_info->state).inverse_scale +\n                quantum_info->minimum;" (assignment_expression "dVar6 = (double)(fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                        fVar17 * p[pPVar5[2].offset]) * (quantum_info->state).inverse_scale +\n                quantum_info->minimum" identifier = (binary_expression "(double)(fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                        fVar17 * p[pPVar5[2].offset]) * (quantum_info->state).inverse_scale +\n                quantum_info->minimum" (binary_expression "(double)(fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                        fVar17 * p[pPVar5[2].offset]) * (quantum_info->state).inverse_scale" (cast_expression "(double)(fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                        fVar17 * p[pPVar5[2].offset])" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                        fVar17 * p[pPVar5[2].offset])" ( (binary_expression "fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n                        fVar17 * p[pPVar5[2].offset]" (binary_expression "fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset]" (binary_expression "fVar16 * p[pPVar5[1].offset]" identifier * (subscript_expression "p[pPVar5[1].offset]" identifier [ (field_expression "pPVar5[1].offset" (subscript_expression "pPVar5[1]" identifier [ number_literal ]) . field_identifier) ])) + (binary_expression "fVar15 * p[pPVar5->offset]" identifier * (subscript_expression "p[pPVar5->offset]" identifier [ (field_expression "pPVar5->offset" identifier -> field_identifier) ]))) + (binary_expression "fVar17 * p[pPVar5[2].offset]" identifier * (subscript_expression "p[pPVar5[2].offset]" identifier [ (field_expression "pPVar5[2].offset" (subscript_expression "pPVar5[2]" identifier [ number_literal ]) . field_identifier) ]))) ))) * (field_expression "(quantum_info->state).inverse_scale" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier)) + (field_expression "quantum_info->minimum" identifier -> field_identifier))) ;) (expression_statement "uVar25 = (uchar)((ulong)dVar6 >> 8);" (assignment_expression "uVar25 = (uchar)((ulong)dVar6 >> 8)" identifier = (call_expression "(uchar)((ulong)dVar6 >> 8)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulong)dVar6 >> 8)" ( (binary_expression "(ulong)dVar6 >> 8" (cast_expression "(ulong)dVar6" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar28 = (uchar)((ulong)dVar6 >> 0x10);" (assignment_expression "uVar28 = (uchar)((ulong)dVar6 >> 0x10)" identifier = (call_expression "(uchar)((ulong)dVar6 >> 0x10)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulong)dVar6 >> 0x10)" ( (binary_expression "(ulong)dVar6 >> 0x10" (cast_expression "(ulong)dVar6" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar29 = (uchar)((ulong)dVar6 >> 0x18);" (assignment_expression "uVar29 = (uchar)((ulong)dVar6 >> 0x18)" identifier = (call_expression "(uchar)((ulong)dVar6 >> 0x18)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulong)dVar6 >> 0x18)" ( (binary_expression "(ulong)dVar6 >> 0x18" (cast_expression "(ulong)dVar6" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar30 = (uchar)((ulong)dVar6 >> 0x20);" (assignment_expression "uVar30 = (uchar)((ulong)dVar6 >> 0x20)" identifier = (call_expression "(uchar)((ulong)dVar6 >> 0x20)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulong)dVar6 >> 0x20)" ( (binary_expression "(ulong)dVar6 >> 0x20" (cast_expression "(ulong)dVar6" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar31 = (uchar)((ulong)dVar6 >> 0x28);" (assignment_expression "uVar31 = (uchar)((ulong)dVar6 >> 0x28)" identifier = (call_expression "(uchar)((ulong)dVar6 >> 0x28)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulong)dVar6 >> 0x28)" ( (binary_expression "(ulong)dVar6 >> 0x28" (cast_expression "(ulong)dVar6" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar32 = (uchar)((ulong)dVar6 >> 0x30);" (assignment_expression "uVar32 = (uchar)((ulong)dVar6 >> 0x30)" identifier = (call_expression "(uchar)((ulong)dVar6 >> 0x30)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulong)dVar6 >> 0x30)" ( (binary_expression "(ulong)dVar6 >> 0x30" (cast_expression "(ulong)dVar6" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar21 = (uchar)((ulong)dVar6 >> 0x38);" (assignment_expression "uVar21 = (uchar)((ulong)dVar6 >> 0x38)" identifier = (call_expression "(uchar)((ulong)dVar6 >> 0x38)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulong)dVar6 >> 0x38)" ( (binary_expression "(ulong)dVar6 >> 0x38" (cast_expression "(ulong)dVar6" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (quantum_info->endian == LSBEndian) {\n          *q = SUB81(dVar6,0);\n          q[1] = uVar25;\n          q[2] = uVar28;\n          q[3] = uVar29;\n          q[4] = uVar30;\n          q[5] = uVar31;\n          q[6] = uVar32;\n          q[7] = uVar21;\n        }\n        else {\n          *q = uVar21;\n          q[1] = uVar32;\n          q[2] = uVar31;\n          q[3] = uVar30;\n          q[4] = uVar29;\n          q[5] = uVar28;\n          q[6] = uVar25;\n          q[7] = SUB81(dVar6,0);\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          *q = SUB81(dVar6,0);\n          q[1] = uVar25;\n          q[2] = uVar28;\n          q[3] = uVar29;\n          q[4] = uVar30;\n          q[5] = uVar31;\n          q[6] = uVar32;\n          q[7] = uVar21;\n        }" { (expression_statement "*q = SUB81(dVar6,0);" (assignment_expression "*q = SUB81(dVar6,0)" (pointer_expression "*q" * identifier) = (call_expression "SUB81(dVar6,0)" identifier (argument_list "(dVar6,0)" ( identifier , number_literal )))) ;) (expression_statement "q[1] = uVar25;" (assignment_expression "q[1] = uVar25" (subscript_expression "q[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[2] = uVar28;" (assignment_expression "q[2] = uVar28" (subscript_expression "q[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[3] = uVar29;" (assignment_expression "q[3] = uVar29" (subscript_expression "q[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[4] = uVar30;" (assignment_expression "q[4] = uVar30" (subscript_expression "q[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[5] = uVar31;" (assignment_expression "q[5] = uVar31" (subscript_expression "q[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[6] = uVar32;" (assignment_expression "q[6] = uVar32" (subscript_expression "q[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[7] = uVar21;" (assignment_expression "q[7] = uVar21" (subscript_expression "q[7]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n          *q = uVar21;\n          q[1] = uVar32;\n          q[2] = uVar31;\n          q[3] = uVar30;\n          q[4] = uVar29;\n          q[5] = uVar28;\n          q[6] = uVar25;\n          q[7] = SUB81(dVar6,0);\n        }" else (compound_statement "{\n          *q = uVar21;\n          q[1] = uVar32;\n          q[2] = uVar31;\n          q[3] = uVar30;\n          q[4] = uVar29;\n          q[5] = uVar28;\n          q[6] = uVar25;\n          q[7] = SUB81(dVar6,0);\n        }" { (expression_statement "*q = uVar21;" (assignment_expression "*q = uVar21" (pointer_expression "*q" * identifier) = identifier) ;) (expression_statement "q[1] = uVar32;" (assignment_expression "q[1] = uVar32" (subscript_expression "q[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[2] = uVar31;" (assignment_expression "q[2] = uVar31" (subscript_expression "q[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[3] = uVar30;" (assignment_expression "q[3] = uVar30" (subscript_expression "q[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[4] = uVar29;" (assignment_expression "q[4] = uVar29" (subscript_expression "q[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[5] = uVar28;" (assignment_expression "q[5] = uVar28" (subscript_expression "q[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[6] = uVar25;" (assignment_expression "q[6] = uVar25" (subscript_expression "q[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[7] = SUB81(dVar6,0);" (assignment_expression "q[7] = SUB81(dVar6,0)" (subscript_expression "q[7]" identifier [ number_literal ]) = (call_expression "SUB81(dVar6,0)" identifier (argument_list "(dVar6,0)" ( identifier , number_literal )))) ;) }))) (expression_statement "QVar41 = fVar42;" (assignment_expression "QVar41 = fVar42" identifier = identifier) ;) (if_statement "if (image->channel_map[4].traits != UndefinedPixelTrait) {\n          QVar41 = p[image->channel_map[4].offset];\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          QVar41 = p[image->channel_map[4].offset];\n        }" { (expression_statement "QVar41 = p[image->channel_map[4].offset];" (assignment_expression "QVar41 = p[image->channel_map[4].offset]" identifier = (subscript_expression "p[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) ])) ;) })) (expression_statement "dVar6 = (double)QVar41 * (quantum_info->state).inverse_scale + quantum_info->minimum;" (assignment_expression "dVar6 = (double)QVar41 * (quantum_info->state).inverse_scale + quantum_info->minimum" identifier = (binary_expression "(double)QVar41 * (quantum_info->state).inverse_scale + quantum_info->minimum" (binary_expression "(double)QVar41 * (quantum_info->state).inverse_scale" (cast_expression "(double)QVar41" ( (type_descriptor "double" primitive_type) ) identifier) * (field_expression "(quantum_info->state).inverse_scale" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier)) + (field_expression "quantum_info->minimum" identifier -> field_identifier))) ;) (expression_statement "uVar21 = (uchar)((ulong)dVar6 >> 8);" (assignment_expression "uVar21 = (uchar)((ulong)dVar6 >> 8)" identifier = (call_expression "(uchar)((ulong)dVar6 >> 8)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulong)dVar6 >> 8)" ( (binary_expression "(ulong)dVar6 >> 8" (cast_expression "(ulong)dVar6" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar25 = (uchar)((ulong)dVar6 >> 0x10);" (assignment_expression "uVar25 = (uchar)((ulong)dVar6 >> 0x10)" identifier = (call_expression "(uchar)((ulong)dVar6 >> 0x10)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulong)dVar6 >> 0x10)" ( (binary_expression "(ulong)dVar6 >> 0x10" (cast_expression "(ulong)dVar6" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar31 = (uchar)((ulong)dVar6 >> 0x18);" (assignment_expression "uVar31 = (uchar)((ulong)dVar6 >> 0x18)" identifier = (call_expression "(uchar)((ulong)dVar6 >> 0x18)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulong)dVar6 >> 0x18)" ( (binary_expression "(ulong)dVar6 >> 0x18" (cast_expression "(ulong)dVar6" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar32 = (uchar)((ulong)dVar6 >> 0x20);" (assignment_expression "uVar32 = (uchar)((ulong)dVar6 >> 0x20)" identifier = (call_expression "(uchar)((ulong)dVar6 >> 0x20)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulong)dVar6 >> 0x20)" ( (binary_expression "(ulong)dVar6 >> 0x20" (cast_expression "(ulong)dVar6" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar30 = (uchar)((ulong)dVar6 >> 0x28);" (assignment_expression "uVar30 = (uchar)((ulong)dVar6 >> 0x28)" identifier = (call_expression "(uchar)((ulong)dVar6 >> 0x28)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulong)dVar6 >> 0x28)" ( (binary_expression "(ulong)dVar6 >> 0x28" (cast_expression "(ulong)dVar6" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar29 = (uchar)((ulong)dVar6 >> 0x30);" (assignment_expression "uVar29 = (uchar)((ulong)dVar6 >> 0x30)" identifier = (call_expression "(uchar)((ulong)dVar6 >> 0x30)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulong)dVar6 >> 0x30)" ( (binary_expression "(ulong)dVar6 >> 0x30" (cast_expression "(ulong)dVar6" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar28 = (uchar)((ulong)dVar6 >> 0x38);" (assignment_expression "uVar28 = (uchar)((ulong)dVar6 >> 0x38)" identifier = (call_expression "(uchar)((ulong)dVar6 >> 0x38)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulong)dVar6 >> 0x38)" ( (binary_expression "(ulong)dVar6 >> 0x38" (cast_expression "(ulong)dVar6" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (quantum_info->endian == LSBEndian) {\n          q[8] = SUB81(dVar6,0);\n          q[9] = uVar21;\n          q[10] = uVar25;\n          q[0xb] = uVar31;\n          q[0xc] = uVar32;\n          q[0xd] = uVar30;\n          q[0xe] = uVar29;\n          q[0xf] = uVar28;\n        }\n        else {\n          q[8] = uVar28;\n          q[9] = uVar29;\n          q[10] = uVar30;\n          q[0xb] = uVar32;\n          q[0xc] = uVar31;\n          q[0xd] = uVar25;\n          q[0xe] = uVar21;\n          q[0xf] = SUB81(dVar6,0);\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          q[8] = SUB81(dVar6,0);\n          q[9] = uVar21;\n          q[10] = uVar25;\n          q[0xb] = uVar31;\n          q[0xc] = uVar32;\n          q[0xd] = uVar30;\n          q[0xe] = uVar29;\n          q[0xf] = uVar28;\n        }" { (expression_statement "q[8] = SUB81(dVar6,0);" (assignment_expression "q[8] = SUB81(dVar6,0)" (subscript_expression "q[8]" identifier [ number_literal ]) = (call_expression "SUB81(dVar6,0)" identifier (argument_list "(dVar6,0)" ( identifier , number_literal )))) ;) (expression_statement "q[9] = uVar21;" (assignment_expression "q[9] = uVar21" (subscript_expression "q[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[10] = uVar25;" (assignment_expression "q[10] = uVar25" (subscript_expression "q[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0xb] = uVar31;" (assignment_expression "q[0xb] = uVar31" (subscript_expression "q[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0xc] = uVar32;" (assignment_expression "q[0xc] = uVar32" (subscript_expression "q[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0xd] = uVar30;" (assignment_expression "q[0xd] = uVar30" (subscript_expression "q[0xd]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0xe] = uVar29;" (assignment_expression "q[0xe] = uVar29" (subscript_expression "q[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0xf] = uVar28;" (assignment_expression "q[0xf] = uVar28" (subscript_expression "q[0xf]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n          q[8] = uVar28;\n          q[9] = uVar29;\n          q[10] = uVar30;\n          q[0xb] = uVar32;\n          q[0xc] = uVar31;\n          q[0xd] = uVar25;\n          q[0xe] = uVar21;\n          q[0xf] = SUB81(dVar6,0);\n        }" else (compound_statement "{\n          q[8] = uVar28;\n          q[9] = uVar29;\n          q[10] = uVar30;\n          q[0xb] = uVar32;\n          q[0xc] = uVar31;\n          q[0xd] = uVar25;\n          q[0xe] = uVar21;\n          q[0xf] = SUB81(dVar6,0);\n        }" { (expression_statement "q[8] = uVar28;" (assignment_expression "q[8] = uVar28" (subscript_expression "q[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[9] = uVar29;" (assignment_expression "q[9] = uVar29" (subscript_expression "q[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[10] = uVar30;" (assignment_expression "q[10] = uVar30" (subscript_expression "q[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0xb] = uVar32;" (assignment_expression "q[0xb] = uVar32" (subscript_expression "q[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0xc] = uVar31;" (assignment_expression "q[0xc] = uVar31" (subscript_expression "q[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0xd] = uVar25;" (assignment_expression "q[0xd] = uVar25" (subscript_expression "q[0xd]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0xe] = uVar21;" (assignment_expression "q[0xe] = uVar21" (subscript_expression "q[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "q[0xf] = SUB81(dVar6,0);" (assignment_expression "q[0xf] = SUB81(dVar6,0)" (subscript_expression "q[0xf]" identifier [ number_literal ]) = (call_expression "SUB81(dVar6,0)" identifier (argument_list "(dVar6,0)" ( identifier , number_literal )))) ;) }))) (expression_statement "p = p + image->number_channels;" (assignment_expression "p = p + image->number_channels" identifier = (binary_expression "p + image->number_channels" identifier + (field_expression "image->number_channels" identifier -> field_identifier))) ;) (expression_statement "q = q + quantum_info->pad + 0x10;" (assignment_expression "q = q + quantum_info->pad + 0x10" identifier = (binary_expression "q + quantum_info->pad + 0x10" (binary_expression "q + quantum_info->pad" identifier + (field_expression "quantum_info->pad" identifier -> field_identifier)) + number_literal)) ;) (expression_statement "MVar39 = MVar39 + 1;" (assignment_expression "MVar39 = MVar39 + 1" identifier = (binary_expression "MVar39 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(MVar39 != number_pixels)" ( (binary_expression "MVar39 != number_pixels" identifier != identifier) )) ;) (return_statement "return;" return ;) })) }))) (if_statement "if (0x40 < uVar36) {\n    uVar36 = 0;\n  }" if (parenthesized_expression "(0x40 < uVar36)" ( (binary_expression "0x40 < uVar36" number_literal < identifier) )) (compound_statement "{\n    uVar36 = 0;\n  }" { (expression_statement "uVar36 = 0;" (assignment_expression "uVar36 = 0" identifier = number_literal) ;) })) (expression_statement "uVar38 = (2L << ((char)uVar36 - 1U & 0x3f)) - 1;" (assignment_expression "uVar38 = (2L << ((char)uVar36 - 1U & 0x3f)) - 1" identifier = (binary_expression "(2L << ((char)uVar36 - 1U & 0x3f)) - 1" (parenthesized_expression "(2L << ((char)uVar36 - 1U & 0x3f))" ( (binary_expression "2L << ((char)uVar36 - 1U & 0x3f)" number_literal << (parenthesized_expression "((char)uVar36 - 1U & 0x3f)" ( (binary_expression "(char)uVar36 - 1U & 0x3f" (binary_expression "(char)uVar36 - 1U" (cast_expression "(char)uVar36" ( (type_descriptor "char" primitive_type) ) identifier) - number_literal) & number_literal) ))) )) - number_literal)) ;) (labeled_statement "LAB_002734e9:\n  if (0 < (long)number_pixels) {\n    MVar39 = 0;\n    do {\n      pPVar5 = image->channel_map;\n      fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n               fVar17 * p[pPVar5[2].offset];\n      if (NAN(fVar42)) {\n        uVar36 = 0;\n      }\n      else {\n        uVar36 = 0;\n        if (0.0 < fVar42) {\n          dVar7 = ((double)fVar42 * (double)uVar38) / dVar6;\n          uVar36 = 0xffffffffffffffff;\n          if (dVar7 < dVar11) {\n            dVar7 = dVar7 + dVar9;\n            if (dVar10 <= dVar7) {\n              uVar36 = (long)(dVar7 - dVar10) ^ 0x8000000000000000;\n            }\n            else {\n              uVar36 = (ulong)dVar7;\n            }\n          }\n        }\n      }\n      if ((quantum_info->state).bits == 0) {\n        (quantum_info->state).bits = 8;\n      }\n      sVar34 = quantum_info->depth;\n      if (0 < (long)sVar34) {\n        uVar27 = (quantum_info->state).bits;\n        do {\n          uVar26 = sVar34;\n          if (uVar27 <= sVar34) {\n            uVar26 = uVar27;\n          }\n          uVar35 = sVar34 - uVar26;\n          sVar34 = 0;\n          if (-1 < (long)uVar35) {\n            sVar34 = uVar35;\n          }\n          if (uVar27 == 8) {\n            *q = 0;\n          }\n          uVar27 = uVar27 - uVar26;\n          *q = *q | (byte)((~(-1L << ((byte)uVar26 & 0x3f)) & uVar36 >> ((byte)sVar34 & 0x3f)) <<\n                          ((byte)uVar27 & 0x3f));\n          if (uVar27 == 0) {\n            q = q + 1;\n            uVar27 = 8;\n          }\n        } while (0 < (long)uVar35);\n        (quantum_info->state).bits = uVar27;\n      }\n      fVar42 = _DAT_003fa400;\n      if (image->channel_map[4].traits == UndefinedPixelTrait) {\nLAB_002745f5:\n        dVar7 = ((double)fVar42 * (double)uVar38) / DAT_003f95f8;\n        uVar36 = 0xffffffffffffffff;\n        if (dVar7 < DAT_003fa3a0) {\n          dVar7 = dVar7 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar7) {\n            uVar36 = (long)(dVar7 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar36 = (ulong)dVar7;\n          }\n        }\n      }\n      else {\n        fVar42 = p[image->channel_map[4].offset];\n        if (NAN(fVar42)) {\n          uVar36 = 0;\n        }\n        else {\n          uVar36 = 0;\n          if (0.0 < fVar42) goto LAB_002745f5;\n        }\n      }\n      if ((quantum_info->state).bits == 0) {\n        (quantum_info->state).bits = 8;\n      }\n      sVar34 = quantum_info->depth;\n      if (0 < (long)sVar34) {\n        uVar27 = (quantum_info->state).bits;\n        do {\n          uVar26 = sVar34;\n          if (uVar27 <= sVar34) {\n            uVar26 = uVar27;\n          }\n          uVar35 = sVar34 - uVar26;\n          sVar34 = 0;\n          if (-1 < (long)uVar35) {\n            sVar34 = uVar35;\n          }\n          if (uVar27 == 8) {\n            *q = 0;\n          }\n          uVar27 = uVar27 - uVar26;\n          *q = *q | (byte)((~(-1L << ((byte)uVar26 & 0x3f)) & uVar36 >> ((byte)sVar34 & 0x3f)) <<\n                          ((byte)uVar27 & 0x3f));\n          if (uVar27 == 0) {\n            q = q + 1;\n            uVar27 = 8;\n          }\n        } while (0 < (long)uVar35);\n        (quantum_info->state).bits = uVar27;\n      }\n      p = p + image->number_channels;\n      q = q + quantum_info->pad;\n      MVar39 = MVar39 + 1;\n    } while (number_pixels != MVar39);\n  }" statement_identifier : (if_statement "if (0 < (long)number_pixels) {\n    MVar39 = 0;\n    do {\n      pPVar5 = image->channel_map;\n      fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n               fVar17 * p[pPVar5[2].offset];\n      if (NAN(fVar42)) {\n        uVar36 = 0;\n      }\n      else {\n        uVar36 = 0;\n        if (0.0 < fVar42) {\n          dVar7 = ((double)fVar42 * (double)uVar38) / dVar6;\n          uVar36 = 0xffffffffffffffff;\n          if (dVar7 < dVar11) {\n            dVar7 = dVar7 + dVar9;\n            if (dVar10 <= dVar7) {\n              uVar36 = (long)(dVar7 - dVar10) ^ 0x8000000000000000;\n            }\n            else {\n              uVar36 = (ulong)dVar7;\n            }\n          }\n        }\n      }\n      if ((quantum_info->state).bits == 0) {\n        (quantum_info->state).bits = 8;\n      }\n      sVar34 = quantum_info->depth;\n      if (0 < (long)sVar34) {\n        uVar27 = (quantum_info->state).bits;\n        do {\n          uVar26 = sVar34;\n          if (uVar27 <= sVar34) {\n            uVar26 = uVar27;\n          }\n          uVar35 = sVar34 - uVar26;\n          sVar34 = 0;\n          if (-1 < (long)uVar35) {\n            sVar34 = uVar35;\n          }\n          if (uVar27 == 8) {\n            *q = 0;\n          }\n          uVar27 = uVar27 - uVar26;\n          *q = *q | (byte)((~(-1L << ((byte)uVar26 & 0x3f)) & uVar36 >> ((byte)sVar34 & 0x3f)) <<\n                          ((byte)uVar27 & 0x3f));\n          if (uVar27 == 0) {\n            q = q + 1;\n            uVar27 = 8;\n          }\n        } while (0 < (long)uVar35);\n        (quantum_info->state).bits = uVar27;\n      }\n      fVar42 = _DAT_003fa400;\n      if (image->channel_map[4].traits == UndefinedPixelTrait) {\nLAB_002745f5:\n        dVar7 = ((double)fVar42 * (double)uVar38) / DAT_003f95f8;\n        uVar36 = 0xffffffffffffffff;\n        if (dVar7 < DAT_003fa3a0) {\n          dVar7 = dVar7 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar7) {\n            uVar36 = (long)(dVar7 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar36 = (ulong)dVar7;\n          }\n        }\n      }\n      else {\n        fVar42 = p[image->channel_map[4].offset];\n        if (NAN(fVar42)) {\n          uVar36 = 0;\n        }\n        else {\n          uVar36 = 0;\n          if (0.0 < fVar42) goto LAB_002745f5;\n        }\n      }\n      if ((quantum_info->state).bits == 0) {\n        (quantum_info->state).bits = 8;\n      }\n      sVar34 = quantum_info->depth;\n      if (0 < (long)sVar34) {\n        uVar27 = (quantum_info->state).bits;\n        do {\n          uVar26 = sVar34;\n          if (uVar27 <= sVar34) {\n            uVar26 = uVar27;\n          }\n          uVar35 = sVar34 - uVar26;\n          sVar34 = 0;\n          if (-1 < (long)uVar35) {\n            sVar34 = uVar35;\n          }\n          if (uVar27 == 8) {\n            *q = 0;\n          }\n          uVar27 = uVar27 - uVar26;\n          *q = *q | (byte)((~(-1L << ((byte)uVar26 & 0x3f)) & uVar36 >> ((byte)sVar34 & 0x3f)) <<\n                          ((byte)uVar27 & 0x3f));\n          if (uVar27 == 0) {\n            q = q + 1;\n            uVar27 = 8;\n          }\n        } while (0 < (long)uVar35);\n        (quantum_info->state).bits = uVar27;\n      }\n      p = p + image->number_channels;\n      q = q + quantum_info->pad;\n      MVar39 = MVar39 + 1;\n    } while (number_pixels != MVar39);\n  }" if (parenthesized_expression "(0 < (long)number_pixels)" ( (binary_expression "0 < (long)number_pixels" number_literal < (cast_expression "(long)number_pixels" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n    MVar39 = 0;\n    do {\n      pPVar5 = image->channel_map;\n      fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n               fVar17 * p[pPVar5[2].offset];\n      if (NAN(fVar42)) {\n        uVar36 = 0;\n      }\n      else {\n        uVar36 = 0;\n        if (0.0 < fVar42) {\n          dVar7 = ((double)fVar42 * (double)uVar38) / dVar6;\n          uVar36 = 0xffffffffffffffff;\n          if (dVar7 < dVar11) {\n            dVar7 = dVar7 + dVar9;\n            if (dVar10 <= dVar7) {\n              uVar36 = (long)(dVar7 - dVar10) ^ 0x8000000000000000;\n            }\n            else {\n              uVar36 = (ulong)dVar7;\n            }\n          }\n        }\n      }\n      if ((quantum_info->state).bits == 0) {\n        (quantum_info->state).bits = 8;\n      }\n      sVar34 = quantum_info->depth;\n      if (0 < (long)sVar34) {\n        uVar27 = (quantum_info->state).bits;\n        do {\n          uVar26 = sVar34;\n          if (uVar27 <= sVar34) {\n            uVar26 = uVar27;\n          }\n          uVar35 = sVar34 - uVar26;\n          sVar34 = 0;\n          if (-1 < (long)uVar35) {\n            sVar34 = uVar35;\n          }\n          if (uVar27 == 8) {\n            *q = 0;\n          }\n          uVar27 = uVar27 - uVar26;\n          *q = *q | (byte)((~(-1L << ((byte)uVar26 & 0x3f)) & uVar36 >> ((byte)sVar34 & 0x3f)) <<\n                          ((byte)uVar27 & 0x3f));\n          if (uVar27 == 0) {\n            q = q + 1;\n            uVar27 = 8;\n          }\n        } while (0 < (long)uVar35);\n        (quantum_info->state).bits = uVar27;\n      }\n      fVar42 = _DAT_003fa400;\n      if (image->channel_map[4].traits == UndefinedPixelTrait) {\nLAB_002745f5:\n        dVar7 = ((double)fVar42 * (double)uVar38) / DAT_003f95f8;\n        uVar36 = 0xffffffffffffffff;\n        if (dVar7 < DAT_003fa3a0) {\n          dVar7 = dVar7 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar7) {\n            uVar36 = (long)(dVar7 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar36 = (ulong)dVar7;\n          }\n        }\n      }\n      else {\n        fVar42 = p[image->channel_map[4].offset];\n        if (NAN(fVar42)) {\n          uVar36 = 0;\n        }\n        else {\n          uVar36 = 0;\n          if (0.0 < fVar42) goto LAB_002745f5;\n        }\n      }\n      if ((quantum_info->state).bits == 0) {\n        (quantum_info->state).bits = 8;\n      }\n      sVar34 = quantum_info->depth;\n      if (0 < (long)sVar34) {\n        uVar27 = (quantum_info->state).bits;\n        do {\n          uVar26 = sVar34;\n          if (uVar27 <= sVar34) {\n            uVar26 = uVar27;\n          }\n          uVar35 = sVar34 - uVar26;\n          sVar34 = 0;\n          if (-1 < (long)uVar35) {\n            sVar34 = uVar35;\n          }\n          if (uVar27 == 8) {\n            *q = 0;\n          }\n          uVar27 = uVar27 - uVar26;\n          *q = *q | (byte)((~(-1L << ((byte)uVar26 & 0x3f)) & uVar36 >> ((byte)sVar34 & 0x3f)) <<\n                          ((byte)uVar27 & 0x3f));\n          if (uVar27 == 0) {\n            q = q + 1;\n            uVar27 = 8;\n          }\n        } while (0 < (long)uVar35);\n        (quantum_info->state).bits = uVar27;\n      }\n      p = p + image->number_channels;\n      q = q + quantum_info->pad;\n      MVar39 = MVar39 + 1;\n    } while (number_pixels != MVar39);\n  }" { (expression_statement "MVar39 = 0;" (assignment_expression "MVar39 = 0" identifier = number_literal) ;) (do_statement "do {\n      pPVar5 = image->channel_map;\n      fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n               fVar17 * p[pPVar5[2].offset];\n      if (NAN(fVar42)) {\n        uVar36 = 0;\n      }\n      else {\n        uVar36 = 0;\n        if (0.0 < fVar42) {\n          dVar7 = ((double)fVar42 * (double)uVar38) / dVar6;\n          uVar36 = 0xffffffffffffffff;\n          if (dVar7 < dVar11) {\n            dVar7 = dVar7 + dVar9;\n            if (dVar10 <= dVar7) {\n              uVar36 = (long)(dVar7 - dVar10) ^ 0x8000000000000000;\n            }\n            else {\n              uVar36 = (ulong)dVar7;\n            }\n          }\n        }\n      }\n      if ((quantum_info->state).bits == 0) {\n        (quantum_info->state).bits = 8;\n      }\n      sVar34 = quantum_info->depth;\n      if (0 < (long)sVar34) {\n        uVar27 = (quantum_info->state).bits;\n        do {\n          uVar26 = sVar34;\n          if (uVar27 <= sVar34) {\n            uVar26 = uVar27;\n          }\n          uVar35 = sVar34 - uVar26;\n          sVar34 = 0;\n          if (-1 < (long)uVar35) {\n            sVar34 = uVar35;\n          }\n          if (uVar27 == 8) {\n            *q = 0;\n          }\n          uVar27 = uVar27 - uVar26;\n          *q = *q | (byte)((~(-1L << ((byte)uVar26 & 0x3f)) & uVar36 >> ((byte)sVar34 & 0x3f)) <<\n                          ((byte)uVar27 & 0x3f));\n          if (uVar27 == 0) {\n            q = q + 1;\n            uVar27 = 8;\n          }\n        } while (0 < (long)uVar35);\n        (quantum_info->state).bits = uVar27;\n      }\n      fVar42 = _DAT_003fa400;\n      if (image->channel_map[4].traits == UndefinedPixelTrait) {\nLAB_002745f5:\n        dVar7 = ((double)fVar42 * (double)uVar38) / DAT_003f95f8;\n        uVar36 = 0xffffffffffffffff;\n        if (dVar7 < DAT_003fa3a0) {\n          dVar7 = dVar7 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar7) {\n            uVar36 = (long)(dVar7 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar36 = (ulong)dVar7;\n          }\n        }\n      }\n      else {\n        fVar42 = p[image->channel_map[4].offset];\n        if (NAN(fVar42)) {\n          uVar36 = 0;\n        }\n        else {\n          uVar36 = 0;\n          if (0.0 < fVar42) goto LAB_002745f5;\n        }\n      }\n      if ((quantum_info->state).bits == 0) {\n        (quantum_info->state).bits = 8;\n      }\n      sVar34 = quantum_info->depth;\n      if (0 < (long)sVar34) {\n        uVar27 = (quantum_info->state).bits;\n        do {\n          uVar26 = sVar34;\n          if (uVar27 <= sVar34) {\n            uVar26 = uVar27;\n          }\n          uVar35 = sVar34 - uVar26;\n          sVar34 = 0;\n          if (-1 < (long)uVar35) {\n            sVar34 = uVar35;\n          }\n          if (uVar27 == 8) {\n            *q = 0;\n          }\n          uVar27 = uVar27 - uVar26;\n          *q = *q | (byte)((~(-1L << ((byte)uVar26 & 0x3f)) & uVar36 >> ((byte)sVar34 & 0x3f)) <<\n                          ((byte)uVar27 & 0x3f));\n          if (uVar27 == 0) {\n            q = q + 1;\n            uVar27 = 8;\n          }\n        } while (0 < (long)uVar35);\n        (quantum_info->state).bits = uVar27;\n      }\n      p = p + image->number_channels;\n      q = q + quantum_info->pad;\n      MVar39 = MVar39 + 1;\n    } while (number_pixels != MVar39);" do (compound_statement "{\n      pPVar5 = image->channel_map;\n      fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n               fVar17 * p[pPVar5[2].offset];\n      if (NAN(fVar42)) {\n        uVar36 = 0;\n      }\n      else {\n        uVar36 = 0;\n        if (0.0 < fVar42) {\n          dVar7 = ((double)fVar42 * (double)uVar38) / dVar6;\n          uVar36 = 0xffffffffffffffff;\n          if (dVar7 < dVar11) {\n            dVar7 = dVar7 + dVar9;\n            if (dVar10 <= dVar7) {\n              uVar36 = (long)(dVar7 - dVar10) ^ 0x8000000000000000;\n            }\n            else {\n              uVar36 = (ulong)dVar7;\n            }\n          }\n        }\n      }\n      if ((quantum_info->state).bits == 0) {\n        (quantum_info->state).bits = 8;\n      }\n      sVar34 = quantum_info->depth;\n      if (0 < (long)sVar34) {\n        uVar27 = (quantum_info->state).bits;\n        do {\n          uVar26 = sVar34;\n          if (uVar27 <= sVar34) {\n            uVar26 = uVar27;\n          }\n          uVar35 = sVar34 - uVar26;\n          sVar34 = 0;\n          if (-1 < (long)uVar35) {\n            sVar34 = uVar35;\n          }\n          if (uVar27 == 8) {\n            *q = 0;\n          }\n          uVar27 = uVar27 - uVar26;\n          *q = *q | (byte)((~(-1L << ((byte)uVar26 & 0x3f)) & uVar36 >> ((byte)sVar34 & 0x3f)) <<\n                          ((byte)uVar27 & 0x3f));\n          if (uVar27 == 0) {\n            q = q + 1;\n            uVar27 = 8;\n          }\n        } while (0 < (long)uVar35);\n        (quantum_info->state).bits = uVar27;\n      }\n      fVar42 = _DAT_003fa400;\n      if (image->channel_map[4].traits == UndefinedPixelTrait) {\nLAB_002745f5:\n        dVar7 = ((double)fVar42 * (double)uVar38) / DAT_003f95f8;\n        uVar36 = 0xffffffffffffffff;\n        if (dVar7 < DAT_003fa3a0) {\n          dVar7 = dVar7 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar7) {\n            uVar36 = (long)(dVar7 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar36 = (ulong)dVar7;\n          }\n        }\n      }\n      else {\n        fVar42 = p[image->channel_map[4].offset];\n        if (NAN(fVar42)) {\n          uVar36 = 0;\n        }\n        else {\n          uVar36 = 0;\n          if (0.0 < fVar42) goto LAB_002745f5;\n        }\n      }\n      if ((quantum_info->state).bits == 0) {\n        (quantum_info->state).bits = 8;\n      }\n      sVar34 = quantum_info->depth;\n      if (0 < (long)sVar34) {\n        uVar27 = (quantum_info->state).bits;\n        do {\n          uVar26 = sVar34;\n          if (uVar27 <= sVar34) {\n            uVar26 = uVar27;\n          }\n          uVar35 = sVar34 - uVar26;\n          sVar34 = 0;\n          if (-1 < (long)uVar35) {\n            sVar34 = uVar35;\n          }\n          if (uVar27 == 8) {\n            *q = 0;\n          }\n          uVar27 = uVar27 - uVar26;\n          *q = *q | (byte)((~(-1L << ((byte)uVar26 & 0x3f)) & uVar36 >> ((byte)sVar34 & 0x3f)) <<\n                          ((byte)uVar27 & 0x3f));\n          if (uVar27 == 0) {\n            q = q + 1;\n            uVar27 = 8;\n          }\n        } while (0 < (long)uVar35);\n        (quantum_info->state).bits = uVar27;\n      }\n      p = p + image->number_channels;\n      q = q + quantum_info->pad;\n      MVar39 = MVar39 + 1;\n    }" { (expression_statement "pPVar5 = image->channel_map;" (assignment_expression "pPVar5 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) (expression_statement "fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n               fVar17 * p[pPVar5[2].offset];" (assignment_expression "fVar42 = fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n               fVar17 * p[pPVar5[2].offset]" identifier = (binary_expression "fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset] +\n               fVar17 * p[pPVar5[2].offset]" (binary_expression "fVar16 * p[pPVar5[1].offset] + fVar15 * p[pPVar5->offset]" (binary_expression "fVar16 * p[pPVar5[1].offset]" identifier * (subscript_expression "p[pPVar5[1].offset]" identifier [ (field_expression "pPVar5[1].offset" (subscript_expression "pPVar5[1]" identifier [ number_literal ]) . field_identifier) ])) + (binary_expression "fVar15 * p[pPVar5->offset]" identifier * (subscript_expression "p[pPVar5->offset]" identifier [ (field_expression "pPVar5->offset" identifier -> field_identifier) ]))) + (binary_expression "fVar17 * p[pPVar5[2].offset]" identifier * (subscript_expression "p[pPVar5[2].offset]" identifier [ (field_expression "pPVar5[2].offset" (subscript_expression "pPVar5[2]" identifier [ number_literal ]) . field_identifier) ])))) ;) (if_statement "if (NAN(fVar42)) {\n        uVar36 = 0;\n      }\n      else {\n        uVar36 = 0;\n        if (0.0 < fVar42) {\n          dVar7 = ((double)fVar42 * (double)uVar38) / dVar6;\n          uVar36 = 0xffffffffffffffff;\n          if (dVar7 < dVar11) {\n            dVar7 = dVar7 + dVar9;\n            if (dVar10 <= dVar7) {\n              uVar36 = (long)(dVar7 - dVar10) ^ 0x8000000000000000;\n            }\n            else {\n              uVar36 = (ulong)dVar7;\n            }\n          }\n        }\n      }" if (parenthesized_expression "(NAN(fVar42))" ( (call_expression "NAN(fVar42)" identifier (argument_list "(fVar42)" ( identifier ))) )) (compound_statement "{\n        uVar36 = 0;\n      }" { (expression_statement "uVar36 = 0;" (assignment_expression "uVar36 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        uVar36 = 0;\n        if (0.0 < fVar42) {\n          dVar7 = ((double)fVar42 * (double)uVar38) / dVar6;\n          uVar36 = 0xffffffffffffffff;\n          if (dVar7 < dVar11) {\n            dVar7 = dVar7 + dVar9;\n            if (dVar10 <= dVar7) {\n              uVar36 = (long)(dVar7 - dVar10) ^ 0x8000000000000000;\n            }\n            else {\n              uVar36 = (ulong)dVar7;\n            }\n          }\n        }\n      }" else (compound_statement "{\n        uVar36 = 0;\n        if (0.0 < fVar42) {\n          dVar7 = ((double)fVar42 * (double)uVar38) / dVar6;\n          uVar36 = 0xffffffffffffffff;\n          if (dVar7 < dVar11) {\n            dVar7 = dVar7 + dVar9;\n            if (dVar10 <= dVar7) {\n              uVar36 = (long)(dVar7 - dVar10) ^ 0x8000000000000000;\n            }\n            else {\n              uVar36 = (ulong)dVar7;\n            }\n          }\n        }\n      }" { (expression_statement "uVar36 = 0;" (assignment_expression "uVar36 = 0" identifier = number_literal) ;) (if_statement "if (0.0 < fVar42) {\n          dVar7 = ((double)fVar42 * (double)uVar38) / dVar6;\n          uVar36 = 0xffffffffffffffff;\n          if (dVar7 < dVar11) {\n            dVar7 = dVar7 + dVar9;\n            if (dVar10 <= dVar7) {\n              uVar36 = (long)(dVar7 - dVar10) ^ 0x8000000000000000;\n            }\n            else {\n              uVar36 = (ulong)dVar7;\n            }\n          }\n        }" if (parenthesized_expression "(0.0 < fVar42)" ( (binary_expression "0.0 < fVar42" number_literal < identifier) )) (compound_statement "{\n          dVar7 = ((double)fVar42 * (double)uVar38) / dVar6;\n          uVar36 = 0xffffffffffffffff;\n          if (dVar7 < dVar11) {\n            dVar7 = dVar7 + dVar9;\n            if (dVar10 <= dVar7) {\n              uVar36 = (long)(dVar7 - dVar10) ^ 0x8000000000000000;\n            }\n            else {\n              uVar36 = (ulong)dVar7;\n            }\n          }\n        }" { (expression_statement "dVar7 = ((double)fVar42 * (double)uVar38) / dVar6;" (assignment_expression "dVar7 = ((double)fVar42 * (double)uVar38) / dVar6" identifier = (binary_expression "((double)fVar42 * (double)uVar38) / dVar6" (parenthesized_expression "((double)fVar42 * (double)uVar38)" ( (binary_expression "(double)fVar42 * (double)uVar38" (cast_expression "(double)fVar42" ( (type_descriptor "double" primitive_type) ) identifier) * (cast_expression "(double)uVar38" ( (type_descriptor "double" primitive_type) ) identifier)) )) / identifier)) ;) (expression_statement "uVar36 = 0xffffffffffffffff;" (assignment_expression "uVar36 = 0xffffffffffffffff" identifier = number_literal) ;) (if_statement "if (dVar7 < dVar11) {\n            dVar7 = dVar7 + dVar9;\n            if (dVar10 <= dVar7) {\n              uVar36 = (long)(dVar7 - dVar10) ^ 0x8000000000000000;\n            }\n            else {\n              uVar36 = (ulong)dVar7;\n            }\n          }" if (parenthesized_expression "(dVar7 < dVar11)" ( (binary_expression "dVar7 < dVar11" identifier < identifier) )) (compound_statement "{\n            dVar7 = dVar7 + dVar9;\n            if (dVar10 <= dVar7) {\n              uVar36 = (long)(dVar7 - dVar10) ^ 0x8000000000000000;\n            }\n            else {\n              uVar36 = (ulong)dVar7;\n            }\n          }" { (expression_statement "dVar7 = dVar7 + dVar9;" (assignment_expression "dVar7 = dVar7 + dVar9" identifier = (binary_expression "dVar7 + dVar9" identifier + identifier)) ;) (if_statement "if (dVar10 <= dVar7) {\n              uVar36 = (long)(dVar7 - dVar10) ^ 0x8000000000000000;\n            }\n            else {\n              uVar36 = (ulong)dVar7;\n            }" if (parenthesized_expression "(dVar10 <= dVar7)" ( (binary_expression "dVar10 <= dVar7" identifier <= identifier) )) (compound_statement "{\n              uVar36 = (long)(dVar7 - dVar10) ^ 0x8000000000000000;\n            }" { (expression_statement "uVar36 = (long)(dVar7 - dVar10) ^ 0x8000000000000000;" (assignment_expression "uVar36 = (long)(dVar7 - dVar10) ^ 0x8000000000000000" identifier = (binary_expression "(long)(dVar7 - dVar10) ^ 0x8000000000000000" (cast_expression "(long)(dVar7 - dVar10)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(dVar7 - dVar10)" ( (binary_expression "dVar7 - dVar10" identifier - identifier) ))) ^ number_literal)) ;) }) (else_clause "else {\n              uVar36 = (ulong)dVar7;\n            }" else (compound_statement "{\n              uVar36 = (ulong)dVar7;\n            }" { (expression_statement "uVar36 = (ulong)dVar7;" (assignment_expression "uVar36 = (ulong)dVar7" identifier = (cast_expression "(ulong)dVar7" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) }))) })) })) }))) (if_statement "if ((quantum_info->state).bits == 0) {\n        (quantum_info->state).bits = 8;\n      }" if (parenthesized_expression "((quantum_info->state).bits == 0)" ( (binary_expression "(quantum_info->state).bits == 0" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) == number_literal) )) (compound_statement "{\n        (quantum_info->state).bits = 8;\n      }" { (expression_statement "(quantum_info->state).bits = 8;" (assignment_expression "(quantum_info->state).bits = 8" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) })) (expression_statement "sVar34 = quantum_info->depth;" (assignment_expression "sVar34 = quantum_info->depth" identifier = (field_expression "quantum_info->depth" identifier -> field_identifier)) ;) (if_statement "if (0 < (long)sVar34) {\n        uVar27 = (quantum_info->state).bits;\n        do {\n          uVar26 = sVar34;\n          if (uVar27 <= sVar34) {\n            uVar26 = uVar27;\n          }\n          uVar35 = sVar34 - uVar26;\n          sVar34 = 0;\n          if (-1 < (long)uVar35) {\n            sVar34 = uVar35;\n          }\n          if (uVar27 == 8) {\n            *q = 0;\n          }\n          uVar27 = uVar27 - uVar26;\n          *q = *q | (byte)((~(-1L << ((byte)uVar26 & 0x3f)) & uVar36 >> ((byte)sVar34 & 0x3f)) <<\n                          ((byte)uVar27 & 0x3f));\n          if (uVar27 == 0) {\n            q = q + 1;\n            uVar27 = 8;\n          }\n        } while (0 < (long)uVar35);\n        (quantum_info->state).bits = uVar27;\n      }" if (parenthesized_expression "(0 < (long)sVar34)" ( (binary_expression "0 < (long)sVar34" number_literal < (cast_expression "(long)sVar34" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n        uVar27 = (quantum_info->state).bits;\n        do {\n          uVar26 = sVar34;\n          if (uVar27 <= sVar34) {\n            uVar26 = uVar27;\n          }\n          uVar35 = sVar34 - uVar26;\n          sVar34 = 0;\n          if (-1 < (long)uVar35) {\n            sVar34 = uVar35;\n          }\n          if (uVar27 == 8) {\n            *q = 0;\n          }\n          uVar27 = uVar27 - uVar26;\n          *q = *q | (byte)((~(-1L << ((byte)uVar26 & 0x3f)) & uVar36 >> ((byte)sVar34 & 0x3f)) <<\n                          ((byte)uVar27 & 0x3f));\n          if (uVar27 == 0) {\n            q = q + 1;\n            uVar27 = 8;\n          }\n        } while (0 < (long)uVar35);\n        (quantum_info->state).bits = uVar27;\n      }" { (expression_statement "uVar27 = (quantum_info->state).bits;" (assignment_expression "uVar27 = (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          uVar26 = sVar34;\n          if (uVar27 <= sVar34) {\n            uVar26 = uVar27;\n          }\n          uVar35 = sVar34 - uVar26;\n          sVar34 = 0;\n          if (-1 < (long)uVar35) {\n            sVar34 = uVar35;\n          }\n          if (uVar27 == 8) {\n            *q = 0;\n          }\n          uVar27 = uVar27 - uVar26;\n          *q = *q | (byte)((~(-1L << ((byte)uVar26 & 0x3f)) & uVar36 >> ((byte)sVar34 & 0x3f)) <<\n                          ((byte)uVar27 & 0x3f));\n          if (uVar27 == 0) {\n            q = q + 1;\n            uVar27 = 8;\n          }\n        } while (0 < (long)uVar35);" do (compound_statement "{\n          uVar26 = sVar34;\n          if (uVar27 <= sVar34) {\n            uVar26 = uVar27;\n          }\n          uVar35 = sVar34 - uVar26;\n          sVar34 = 0;\n          if (-1 < (long)uVar35) {\n            sVar34 = uVar35;\n          }\n          if (uVar27 == 8) {\n            *q = 0;\n          }\n          uVar27 = uVar27 - uVar26;\n          *q = *q | (byte)((~(-1L << ((byte)uVar26 & 0x3f)) & uVar36 >> ((byte)sVar34 & 0x3f)) <<\n                          ((byte)uVar27 & 0x3f));\n          if (uVar27 == 0) {\n            q = q + 1;\n            uVar27 = 8;\n          }\n        }" { (expression_statement "uVar26 = sVar34;" (assignment_expression "uVar26 = sVar34" identifier = identifier) ;) (if_statement "if (uVar27 <= sVar34) {\n            uVar26 = uVar27;\n          }" if (parenthesized_expression "(uVar27 <= sVar34)" ( (binary_expression "uVar27 <= sVar34" identifier <= identifier) )) (compound_statement "{\n            uVar26 = uVar27;\n          }" { (expression_statement "uVar26 = uVar27;" (assignment_expression "uVar26 = uVar27" identifier = identifier) ;) })) (expression_statement "uVar35 = sVar34 - uVar26;" (assignment_expression "uVar35 = sVar34 - uVar26" identifier = (binary_expression "sVar34 - uVar26" identifier - identifier)) ;) (expression_statement "sVar34 = 0;" (assignment_expression "sVar34 = 0" identifier = number_literal) ;) (if_statement "if (-1 < (long)uVar35) {\n            sVar34 = uVar35;\n          }" if (parenthesized_expression "(-1 < (long)uVar35)" ( (binary_expression "-1 < (long)uVar35" number_literal < (cast_expression "(long)uVar35" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n            sVar34 = uVar35;\n          }" { (expression_statement "sVar34 = uVar35;" (assignment_expression "sVar34 = uVar35" identifier = identifier) ;) })) (if_statement "if (uVar27 == 8) {\n            *q = 0;\n          }" if (parenthesized_expression "(uVar27 == 8)" ( (binary_expression "uVar27 == 8" identifier == number_literal) )) (compound_statement "{\n            *q = 0;\n          }" { (expression_statement "*q = 0;" (assignment_expression "*q = 0" (pointer_expression "*q" * identifier) = number_literal) ;) })) (expression_statement "uVar27 = uVar27 - uVar26;" (assignment_expression "uVar27 = uVar27 - uVar26" identifier = (binary_expression "uVar27 - uVar26" identifier - identifier)) ;) (expression_statement "*q = *q | (byte)((~(-1L << ((byte)uVar26 & 0x3f)) & uVar36 >> ((byte)sVar34 & 0x3f)) <<\n                          ((byte)uVar27 & 0x3f));" (assignment_expression "*q = *q | (byte)((~(-1L << ((byte)uVar26 & 0x3f)) & uVar36 >> ((byte)sVar34 & 0x3f)) <<\n                          ((byte)uVar27 & 0x3f))" (pointer_expression "*q" * identifier) = (binary_expression "*q | (byte)((~(-1L << ((byte)uVar26 & 0x3f)) & uVar36 >> ((byte)sVar34 & 0x3f)) <<\n                          ((byte)uVar27 & 0x3f))" (pointer_expression "*q" * identifier) | (call_expression "(byte)((~(-1L << ((byte)uVar26 & 0x3f)) & uVar36 >> ((byte)sVar34 & 0x3f)) <<\n                          ((byte)uVar27 & 0x3f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((~(-1L << ((byte)uVar26 & 0x3f)) & uVar36 >> ((byte)sVar34 & 0x3f)) <<\n                          ((byte)uVar27 & 0x3f))" ( (binary_expression "(~(-1L << ((byte)uVar26 & 0x3f)) & uVar36 >> ((byte)sVar34 & 0x3f)) <<\n                          ((byte)uVar27 & 0x3f)" (parenthesized_expression "(~(-1L << ((byte)uVar26 & 0x3f)) & uVar36 >> ((byte)sVar34 & 0x3f))" ( (binary_expression "~(-1L << ((byte)uVar26 & 0x3f)) & uVar36 >> ((byte)sVar34 & 0x3f)" (unary_expression "~(-1L << ((byte)uVar26 & 0x3f))" ~ (parenthesized_expression "(-1L << ((byte)uVar26 & 0x3f))" ( (binary_expression "-1L << ((byte)uVar26 & 0x3f)" number_literal << (parenthesized_expression "((byte)uVar26 & 0x3f)" ( (binary_expression "(byte)uVar26 & 0x3f" (cast_expression "(byte)uVar26" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & (binary_expression "uVar36 >> ((byte)sVar34 & 0x3f)" identifier >> (parenthesized_expression "((byte)sVar34 & 0x3f)" ( (binary_expression "(byte)sVar34 & 0x3f" (cast_expression "(byte)sVar34" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) )) << (parenthesized_expression "((byte)uVar27 & 0x3f)" ( (binary_expression "(byte)uVar27 & 0x3f" (cast_expression "(byte)uVar27" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))))) ;) (if_statement "if (uVar27 == 0) {\n            q = q + 1;\n            uVar27 = 8;\n          }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n            q = q + 1;\n            uVar27 = 8;\n          }" { (expression_statement "q = q + 1;" (assignment_expression "q = q + 1" identifier = (binary_expression "q + 1" identifier + number_literal)) ;) (expression_statement "uVar27 = 8;" (assignment_expression "uVar27 = 8" identifier = number_literal) ;) })) }) while (parenthesized_expression "(0 < (long)uVar35)" ( (binary_expression "0 < (long)uVar35" number_literal < (cast_expression "(long)uVar35" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) ;) (expression_statement "(quantum_info->state).bits = uVar27;" (assignment_expression "(quantum_info->state).bits = uVar27" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) })) (expression_statement "fVar42 = _DAT_003fa400;" (assignment_expression "fVar42 = _DAT_003fa400" identifier = identifier) ;) (if_statement "if (image->channel_map[4].traits == UndefinedPixelTrait) {\nLAB_002745f5:\n        dVar7 = ((double)fVar42 * (double)uVar38) / DAT_003f95f8;\n        uVar36 = 0xffffffffffffffff;\n        if (dVar7 < DAT_003fa3a0) {\n          dVar7 = dVar7 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar7) {\n            uVar36 = (long)(dVar7 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar36 = (ulong)dVar7;\n          }\n        }\n      }\n      else {\n        fVar42 = p[image->channel_map[4].offset];\n        if (NAN(fVar42)) {\n          uVar36 = 0;\n        }\n        else {\n          uVar36 = 0;\n          if (0.0 < fVar42) goto LAB_002745f5;\n        }\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 "{\nLAB_002745f5:\n        dVar7 = ((double)fVar42 * (double)uVar38) / DAT_003f95f8;\n        uVar36 = 0xffffffffffffffff;\n        if (dVar7 < DAT_003fa3a0) {\n          dVar7 = dVar7 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar7) {\n            uVar36 = (long)(dVar7 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar36 = (ulong)dVar7;\n          }\n        }\n      }" { (labeled_statement "LAB_002745f5:\n        dVar7 = ((double)fVar42 * (double)uVar38) / DAT_003f95f8;" statement_identifier : (expression_statement "dVar7 = ((double)fVar42 * (double)uVar38) / DAT_003f95f8;" (assignment_expression "dVar7 = ((double)fVar42 * (double)uVar38) / DAT_003f95f8" identifier = (binary_expression "((double)fVar42 * (double)uVar38) / DAT_003f95f8" (parenthesized_expression "((double)fVar42 * (double)uVar38)" ( (binary_expression "(double)fVar42 * (double)uVar38" (cast_expression "(double)fVar42" ( (type_descriptor "double" primitive_type) ) identifier) * (cast_expression "(double)uVar38" ( (type_descriptor "double" primitive_type) ) identifier)) )) / identifier)) ;)) (expression_statement "uVar36 = 0xffffffffffffffff;" (assignment_expression "uVar36 = 0xffffffffffffffff" identifier = number_literal) ;) (if_statement "if (dVar7 < DAT_003fa3a0) {\n          dVar7 = dVar7 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar7) {\n            uVar36 = (long)(dVar7 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar36 = (ulong)dVar7;\n          }\n        }" if (parenthesized_expression "(dVar7 < DAT_003fa3a0)" ( (binary_expression "dVar7 < DAT_003fa3a0" identifier < identifier) )) (compound_statement "{\n          dVar7 = dVar7 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar7) {\n            uVar36 = (long)(dVar7 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar36 = (ulong)dVar7;\n          }\n        }" { (expression_statement "dVar7 = dVar7 + DAT_003f9c28;" (assignment_expression "dVar7 = dVar7 + DAT_003f9c28" identifier = (binary_expression "dVar7 + DAT_003f9c28" identifier + identifier)) ;) (if_statement "if (DAT_003f9c40 <= dVar7) {\n            uVar36 = (long)(dVar7 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar36 = (ulong)dVar7;\n          }" if (parenthesized_expression "(DAT_003f9c40 <= dVar7)" ( (binary_expression "DAT_003f9c40 <= dVar7" identifier <= identifier) )) (compound_statement "{\n            uVar36 = (long)(dVar7 - DAT_003f9c40) ^ 0x8000000000000000;\n          }" { (expression_statement "uVar36 = (long)(dVar7 - DAT_003f9c40) ^ 0x8000000000000000;" (assignment_expression "uVar36 = (long)(dVar7 - DAT_003f9c40) ^ 0x8000000000000000" identifier = (binary_expression "(long)(dVar7 - DAT_003f9c40) ^ 0x8000000000000000" (cast_expression "(long)(dVar7 - DAT_003f9c40)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(dVar7 - DAT_003f9c40)" ( (binary_expression "dVar7 - DAT_003f9c40" identifier - identifier) ))) ^ number_literal)) ;) }) (else_clause "else {\n            uVar36 = (ulong)dVar7;\n          }" else (compound_statement "{\n            uVar36 = (ulong)dVar7;\n          }" { (expression_statement "uVar36 = (ulong)dVar7;" (assignment_expression "uVar36 = (ulong)dVar7" identifier = (cast_expression "(ulong)dVar7" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) }))) })) }) (else_clause "else {\n        fVar42 = p[image->channel_map[4].offset];\n        if (NAN(fVar42)) {\n          uVar36 = 0;\n        }\n        else {\n          uVar36 = 0;\n          if (0.0 < fVar42) goto LAB_002745f5;\n        }\n      }" else (compound_statement "{\n        fVar42 = p[image->channel_map[4].offset];\n        if (NAN(fVar42)) {\n          uVar36 = 0;\n        }\n        else {\n          uVar36 = 0;\n          if (0.0 < fVar42) goto LAB_002745f5;\n        }\n      }" { (expression_statement "fVar42 = p[image->channel_map[4].offset];" (assignment_expression "fVar42 = p[image->channel_map[4].offset]" identifier = (subscript_expression "p[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) ])) ;) (if_statement "if (NAN(fVar42)) {\n          uVar36 = 0;\n        }\n        else {\n          uVar36 = 0;\n          if (0.0 < fVar42) goto LAB_002745f5;\n        }" if (parenthesized_expression "(NAN(fVar42))" ( (call_expression "NAN(fVar42)" identifier (argument_list "(fVar42)" ( identifier ))) )) (compound_statement "{\n          uVar36 = 0;\n        }" { (expression_statement "uVar36 = 0;" (assignment_expression "uVar36 = 0" identifier = number_literal) ;) }) (else_clause "else {\n          uVar36 = 0;\n          if (0.0 < fVar42) goto LAB_002745f5;\n        }" else (compound_statement "{\n          uVar36 = 0;\n          if (0.0 < fVar42) goto LAB_002745f5;\n        }" { (expression_statement "uVar36 = 0;" (assignment_expression "uVar36 = 0" identifier = number_literal) ;) (if_statement "if (0.0 < fVar42) goto LAB_002745f5;" if (parenthesized_expression "(0.0 < fVar42)" ( (binary_expression "0.0 < fVar42" number_literal < identifier) )) (goto_statement "goto LAB_002745f5;" goto statement_identifier ;)) }))) }))) (if_statement "if ((quantum_info->state).bits == 0) {\n        (quantum_info->state).bits = 8;\n      }" if (parenthesized_expression "((quantum_info->state).bits == 0)" ( (binary_expression "(quantum_info->state).bits == 0" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) == number_literal) )) (compound_statement "{\n        (quantum_info->state).bits = 8;\n      }" { (expression_statement "(quantum_info->state).bits = 8;" (assignment_expression "(quantum_info->state).bits = 8" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) })) (expression_statement "sVar34 = quantum_info->depth;" (assignment_expression "sVar34 = quantum_info->depth" identifier = (field_expression "quantum_info->depth" identifier -> field_identifier)) ;) (if_statement "if (0 < (long)sVar34) {\n        uVar27 = (quantum_info->state).bits;\n        do {\n          uVar26 = sVar34;\n          if (uVar27 <= sVar34) {\n            uVar26 = uVar27;\n          }\n          uVar35 = sVar34 - uVar26;\n          sVar34 = 0;\n          if (-1 < (long)uVar35) {\n            sVar34 = uVar35;\n          }\n          if (uVar27 == 8) {\n            *q = 0;\n          }\n          uVar27 = uVar27 - uVar26;\n          *q = *q | (byte)((~(-1L << ((byte)uVar26 & 0x3f)) & uVar36 >> ((byte)sVar34 & 0x3f)) <<\n                          ((byte)uVar27 & 0x3f));\n          if (uVar27 == 0) {\n            q = q + 1;\n            uVar27 = 8;\n          }\n        } while (0 < (long)uVar35);\n        (quantum_info->state).bits = uVar27;\n      }" if (parenthesized_expression "(0 < (long)sVar34)" ( (binary_expression "0 < (long)sVar34" number_literal < (cast_expression "(long)sVar34" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n        uVar27 = (quantum_info->state).bits;\n        do {\n          uVar26 = sVar34;\n          if (uVar27 <= sVar34) {\n            uVar26 = uVar27;\n          }\n          uVar35 = sVar34 - uVar26;\n          sVar34 = 0;\n          if (-1 < (long)uVar35) {\n            sVar34 = uVar35;\n          }\n          if (uVar27 == 8) {\n            *q = 0;\n          }\n          uVar27 = uVar27 - uVar26;\n          *q = *q | (byte)((~(-1L << ((byte)uVar26 & 0x3f)) & uVar36 >> ((byte)sVar34 & 0x3f)) <<\n                          ((byte)uVar27 & 0x3f));\n          if (uVar27 == 0) {\n            q = q + 1;\n            uVar27 = 8;\n          }\n        } while (0 < (long)uVar35);\n        (quantum_info->state).bits = uVar27;\n      }" { (expression_statement "uVar27 = (quantum_info->state).bits;" (assignment_expression "uVar27 = (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          uVar26 = sVar34;\n          if (uVar27 <= sVar34) {\n            uVar26 = uVar27;\n          }\n          uVar35 = sVar34 - uVar26;\n          sVar34 = 0;\n          if (-1 < (long)uVar35) {\n            sVar34 = uVar35;\n          }\n          if (uVar27 == 8) {\n            *q = 0;\n          }\n          uVar27 = uVar27 - uVar26;\n          *q = *q | (byte)((~(-1L << ((byte)uVar26 & 0x3f)) & uVar36 >> ((byte)sVar34 & 0x3f)) <<\n                          ((byte)uVar27 & 0x3f));\n          if (uVar27 == 0) {\n            q = q + 1;\n            uVar27 = 8;\n          }\n        } while (0 < (long)uVar35);" do (compound_statement "{\n          uVar26 = sVar34;\n          if (uVar27 <= sVar34) {\n            uVar26 = uVar27;\n          }\n          uVar35 = sVar34 - uVar26;\n          sVar34 = 0;\n          if (-1 < (long)uVar35) {\n            sVar34 = uVar35;\n          }\n          if (uVar27 == 8) {\n            *q = 0;\n          }\n          uVar27 = uVar27 - uVar26;\n          *q = *q | (byte)((~(-1L << ((byte)uVar26 & 0x3f)) & uVar36 >> ((byte)sVar34 & 0x3f)) <<\n                          ((byte)uVar27 & 0x3f));\n          if (uVar27 == 0) {\n            q = q + 1;\n            uVar27 = 8;\n          }\n        }" { (expression_statement "uVar26 = sVar34;" (assignment_expression "uVar26 = sVar34" identifier = identifier) ;) (if_statement "if (uVar27 <= sVar34) {\n            uVar26 = uVar27;\n          }" if (parenthesized_expression "(uVar27 <= sVar34)" ( (binary_expression "uVar27 <= sVar34" identifier <= identifier) )) (compound_statement "{\n            uVar26 = uVar27;\n          }" { (expression_statement "uVar26 = uVar27;" (assignment_expression "uVar26 = uVar27" identifier = identifier) ;) })) (expression_statement "uVar35 = sVar34 - uVar26;" (assignment_expression "uVar35 = sVar34 - uVar26" identifier = (binary_expression "sVar34 - uVar26" identifier - identifier)) ;) (expression_statement "sVar34 = 0;" (assignment_expression "sVar34 = 0" identifier = number_literal) ;) (if_statement "if (-1 < (long)uVar35) {\n            sVar34 = uVar35;\n          }" if (parenthesized_expression "(-1 < (long)uVar35)" ( (binary_expression "-1 < (long)uVar35" number_literal < (cast_expression "(long)uVar35" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n            sVar34 = uVar35;\n          }" { (expression_statement "sVar34 = uVar35;" (assignment_expression "sVar34 = uVar35" identifier = identifier) ;) })) (if_statement "if (uVar27 == 8) {\n            *q = 0;\n          }" if (parenthesized_expression "(uVar27 == 8)" ( (binary_expression "uVar27 == 8" identifier == number_literal) )) (compound_statement "{\n            *q = 0;\n          }" { (expression_statement "*q = 0;" (assignment_expression "*q = 0" (pointer_expression "*q" * identifier) = number_literal) ;) })) (expression_statement "uVar27 = uVar27 - uVar26;" (assignment_expression "uVar27 = uVar27 - uVar26" identifier = (binary_expression "uVar27 - uVar26" identifier - identifier)) ;) (expression_statement "*q = *q | (byte)((~(-1L << ((byte)uVar26 & 0x3f)) & uVar36 >> ((byte)sVar34 & 0x3f)) <<\n                          ((byte)uVar27 & 0x3f));" (assignment_expression "*q = *q | (byte)((~(-1L << ((byte)uVar26 & 0x3f)) & uVar36 >> ((byte)sVar34 & 0x3f)) <<\n                          ((byte)uVar27 & 0x3f))" (pointer_expression "*q" * identifier) = (binary_expression "*q | (byte)((~(-1L << ((byte)uVar26 & 0x3f)) & uVar36 >> ((byte)sVar34 & 0x3f)) <<\n                          ((byte)uVar27 & 0x3f))" (pointer_expression "*q" * identifier) | (call_expression "(byte)((~(-1L << ((byte)uVar26 & 0x3f)) & uVar36 >> ((byte)sVar34 & 0x3f)) <<\n                          ((byte)uVar27 & 0x3f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((~(-1L << ((byte)uVar26 & 0x3f)) & uVar36 >> ((byte)sVar34 & 0x3f)) <<\n                          ((byte)uVar27 & 0x3f))" ( (binary_expression "(~(-1L << ((byte)uVar26 & 0x3f)) & uVar36 >> ((byte)sVar34 & 0x3f)) <<\n                          ((byte)uVar27 & 0x3f)" (parenthesized_expression "(~(-1L << ((byte)uVar26 & 0x3f)) & uVar36 >> ((byte)sVar34 & 0x3f))" ( (binary_expression "~(-1L << ((byte)uVar26 & 0x3f)) & uVar36 >> ((byte)sVar34 & 0x3f)" (unary_expression "~(-1L << ((byte)uVar26 & 0x3f))" ~ (parenthesized_expression "(-1L << ((byte)uVar26 & 0x3f))" ( (binary_expression "-1L << ((byte)uVar26 & 0x3f)" number_literal << (parenthesized_expression "((byte)uVar26 & 0x3f)" ( (binary_expression "(byte)uVar26 & 0x3f" (cast_expression "(byte)uVar26" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & (binary_expression "uVar36 >> ((byte)sVar34 & 0x3f)" identifier >> (parenthesized_expression "((byte)sVar34 & 0x3f)" ( (binary_expression "(byte)sVar34 & 0x3f" (cast_expression "(byte)sVar34" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) )) << (parenthesized_expression "((byte)uVar27 & 0x3f)" ( (binary_expression "(byte)uVar27 & 0x3f" (cast_expression "(byte)uVar27" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))))) ;) (if_statement "if (uVar27 == 0) {\n            q = q + 1;\n            uVar27 = 8;\n          }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n            q = q + 1;\n            uVar27 = 8;\n          }" { (expression_statement "q = q + 1;" (assignment_expression "q = q + 1" identifier = (binary_expression "q + 1" identifier + number_literal)) ;) (expression_statement "uVar27 = 8;" (assignment_expression "uVar27 = 8" identifier = number_literal) ;) })) }) while (parenthesized_expression "(0 < (long)uVar35)" ( (binary_expression "0 < (long)uVar35" number_literal < (cast_expression "(long)uVar35" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) ;) (expression_statement "(quantum_info->state).bits = uVar27;" (assignment_expression "(quantum_info->state).bits = uVar27" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) })) (expression_statement "p = p + image->number_channels;" (assignment_expression "p = p + image->number_channels" identifier = (binary_expression "p + image->number_channels" identifier + (field_expression "image->number_channels" identifier -> field_identifier))) ;) (expression_statement "q = q + quantum_info->pad;" (assignment_expression "q = q + quantum_info->pad" identifier = (binary_expression "q + quantum_info->pad" identifier + (field_expression "quantum_info->pad" identifier -> field_identifier))) ;) (expression_statement "MVar39 = MVar39 + 1;" (assignment_expression "MVar39 = MVar39 + 1" identifier = (binary_expression "MVar39 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(number_pixels != MVar39)" ( (binary_expression "number_pixels != MVar39" identifier != identifier) )) ;) }))) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00273473(long param_1,ulong *param_2,ulong param_3,long param_4,byte *param_5,long param_6)\n\n{\n  byte *pbVar1;\n  bool bVar2;\n  long lVar3;\n  double dVar4;\n  double dVar5;\n  bool bVar6;\n  double dVar7;\n  double dVar8;\n  double dVar9;\n  double dVar10;\n  double dVar11;\n  double dVar12;\n  float fVar13;\n  float fVar14;\n  float fVar15;\n  double dVar16;\n  byte bVar17;\n  byte bVar18;\n  undefined2 uVar19;\n  undefined4 uVar20;\n  ulong uVar21;\n  ulong uVar22;\n  byte bVar23;\n  uint uVar28;\n  ulong uVar29;\n  ulong uVar30;\n  ulong uVar31;\n  long lVar32;\n  ulong uVar33;\n  ulong uVar34;\n  bool bVar35;\n  float fVar36;\n  float fVar37;\n  byte bVar24;\n  byte bVar25;\n  byte bVar26;\n  byte bVar27;\n  \n  dVar16 = DAT_0042f2e8;\n  fVar15 = DAT_0041abe0;\n  fVar14 = DAT_0041abdc;\n  fVar13 = DAT_0041abd8;\n  dVar12 = DAT_00404938;\n  dVar11 = DAT_00404930;\n  dVar10 = DAT_00404928;\n  dVar5 = DAT_00404920;\n  fVar36 = _DAT_003fa400;\n  dVar9 = DAT_003fa3a0;\n  dVar8 = DAT_003f9c40;\n  dVar7 = DAT_003f9c28;\n  dVar4 = DAT_003f95f8;\n  if (param_6 == 0) {\n                    \n    __assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x89f,\n                  "ExportGrayAlphaQuantum");\n  }\n  if (*(long *)(param_6 + 0x30) != 0xabacadab) {\n                    \n    __assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x8a0,\n                  "ExportGrayAlphaQuantum");\n  }\n  uVar34 = *param_2;\n  if (uVar34 == 8) {\n    uVar34 = 0;\n    if ((long)param_3 < 1) {\n      return;\n    }\n    do {\n      lVar32 = *(long *)(param_1 + 0x360);\n      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n      if (NAN(fVar36)) {\n        bVar17 = 0;\n      }\n      else {\n        bVar17 = 0;\n        if ((0.0 < fVar36) && (dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12)) {\n          bVar17 = (byte)(int)(dVar4 + dVar7);\n        }\n      }\n      *param_5 = bVar17;\n      bVar17 = 0xff;\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if ((0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)) {\n            bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);\n          }\n        }\n      }\n      param_5[1] = bVar17;\n      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n      param_5 = param_5 + param_2[6] + 2;\n      uVar34 = uVar34 + 1;\n    } while (uVar34 != param_3);\n    return;\n  }\n  if (uVar34 < 9) {\n    if (uVar34 == 1) {\n      bVar35 = (int)param_2[7] == 0;\n      bVar6 = !bVar35;\n      if (param_3 != 3 && -1 < (long)(param_3 - 3)) {\n        pbVar1 = param_5 + (param_3 - 4 >> 2) + 1;\n        do {\n          *param_5 = 0;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar18 = (byte)(uVar28 << 7);\n          *param_5 = bVar18;\n          bVar17 = 0x40;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar17 = 0x40;\n            }\n            else {\n              bVar17 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar17 = bVar17 | (byte)(uVar28 << 5);\n          *param_5 = bVar17;\n          bVar18 = 0x10;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 0x10;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            bVar2 = bVar6;\n          }\n          bVar17 = bVar17 | bVar2 * '\b';\n          *param_5 = bVar17;\n          bVar18 = 4;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 4;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar6;\n          if (DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) <= DAT_003fc580) {\n            bVar2 = bVar35;\n          }\n          bVar17 = bVar17 | bVar2 * '\x02';\n          *param_5 = bVar17;\n          fVar36 = _DAT_003fa400;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          *param_5 = bVar17 | fVar36 == _DAT_003fa400;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + 1;\n        } while (param_5 != pbVar1);\n      }\n      if ((param_3 & 3) == 0) {\n        return;\n      }\n      *param_5 = 0;\n      fVar15 = DAT_0041abe0;\n      fVar14 = DAT_0041abdc;\n      fVar13 = DAT_0041abd8;\n      fVar36 = _DAT_003fa400;\n      bVar17 = 7;\n      lVar32 = 0;\n      do {\n        lVar3 = *(long *)(param_1 + 0x360);\n        bVar2 = bVar35;\n        if (DAT_003fc580 <\n            fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4) +\n            fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4) +\n            fVar15 * *(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)) {\n          bVar2 = bVar6;\n        }\n        bVar18 = bVar2 << (bVar17 & 0x1f) | *param_5;\n        *param_5 = bVar18;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        uVar28 = (uint)(!NAN(fVar37) && !NAN(_DAT_003fa400));\n        if (fVar37 != _DAT_003fa400) {\n          uVar28 = 0;\n        }\n        *param_5 = (byte)(uVar28 << (bVar17 - 1 & 0x1f)) | bVar18;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        lVar32 = lVar32 + 2;\n        bVar17 = bVar17 - 2;\n      } while (lVar32 <= (long)(ulong)((uint)param_3 & 3));\n      return;\n    }\n    if (uVar34 == 4) {\n      pbVar1 = param_5 + param_3;\n      if ((long)param_3 < 1) {\n        return;\n      }\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar37 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar37)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if (0.0 < fVar37) {\n            dVar4 = (double)fVar37 / dVar11;\n            bVar17 = 0xff;\n            if (dVar4 < dVar12) {\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }\n          }\n        }\n        *param_5 = bVar17 & 0xf0;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        *param_5 = bVar17 & 0xf0 | (byte)(int)((double)fVar37 * dVar16 + dVar7) & 0xf;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + 1;\n      } while (param_5 != pbVar1);\n      return;\n    }\nLAB_002734da:\n    uVar33 = 0;\n    if (uVar34 == 0) goto LAB_002734e9;\n  }\n  else {\n    if (uVar34 == 0x20) {\n      if ((int)param_2[2] == 1) {\n        if ((long)param_3 < 1) {\n          return;\n        }\n        uVar34 = 0;\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar37 = (float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3]);\n          bVar18 = (byte)((uint)fVar37 >> 8);\n          bVar27 = (byte)((uint)fVar37 >> 0x10);\n          bVar17 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = SUB41(fVar37,0);\n            param_5[1] = bVar18;\n            param_5[2] = bVar27;\n            param_5[3] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = bVar27;\n            param_5[2] = bVar18;\n            param_5[3] = SUB41(fVar37,0);\n          }\n          fVar37 = fVar36;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          fVar37 = (float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3]);\n          bVar17 = (byte)((uint)fVar37 >> 8);\n          bVar18 = (byte)((uint)fVar37 >> 0x10);\n          bVar27 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            param_5[4] = SUB41(fVar37,0);\n            param_5[5] = bVar17;\n            param_5[6] = bVar18;\n            param_5[7] = bVar27;\n          }\n          else {\n            param_5[4] = bVar27;\n            param_5[5] = bVar18;\n            param_5[6] = bVar17;\n            param_5[7] = SUB41(fVar37,0);\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 8;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      uVar34 = 0;\n      if ((long)param_3 < 1) {\n        return;\n      }\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar36)) {\n          uVar20 = 0;\n        }\n        else {\n          uVar20 = 0;\n          if ((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)) {\n            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = (byte)uVar20;\n          param_5[1] = bVar17;\n          param_5[2] = bVar18;\n          param_5[3] = bVar27;\n        }\n        else {\n          *param_5 = bVar27;\n          param_5[1] = bVar18;\n          param_5[2] = bVar17;\n          param_5[3] = (byte)uVar20;\n        }\n        uVar20 = 0xffffffff;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          if (NAN(fVar36)) {\n            uVar20 = 0;\n          }\n          else {\n            uVar20 = 0;\n            if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          param_5[4] = (byte)uVar20;\n          param_5[5] = bVar17;\n          param_5[6] = bVar18;\n          param_5[7] = bVar27;\n        }\n        else {\n          param_5[4] = bVar27;\n          param_5[5] = bVar18;\n          param_5[6] = bVar17;\n          param_5[7] = (byte)uVar20;\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 8;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }\n    if (uVar34 != 0x40) {\n      if (uVar34 == 0x10) {\n        if ((int)param_2[2] == 1) {\n          if ((long)param_3 < 1) {\n            return;\n          }\n          uVar34 = 0;\n          do {\n            lVar32 = *(long *)(param_1 + 0x360);\n            uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }\n            else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }\n            fVar36 = _DAT_003fa400;\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }\n            uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }\n            else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }\n            param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n            param_5 = param_5 + param_2[6] + 4;\n            uVar34 = uVar34 + 1;\n          } while (uVar34 != param_3);\n          return;\n        }\n        uVar34 = 0;\n        if ((long)param_3 < 1) {\n          return;\n        }\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n          if (NAN(fVar36)) {\n            uVar19 = 0;\n          }\n          else {\n            uVar19 = 0;\n            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = (byte)uVar19;\n            param_5[1] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = (byte)uVar19;\n          }\n          uVar19 = 0xffff;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            if (NAN(fVar36)) {\n              uVar19 = 0;\n            }\n            else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            param_5[2] = (byte)uVar19;\n            param_5[3] = bVar17;\n          }\n          else {\n            param_5[2] = bVar17;\n            param_5[3] = (byte)uVar19;\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 4;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      goto LAB_002734da;\n    }\n    if ((int)param_2[2] == 1) {\n      if ((long)param_3 < 1) {\n        return;\n      }\n      uVar34 = 0;\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        dVar4 = (double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                (double)param_2[0xd] + (double)param_2[3];\n        bVar18 = (byte)((ulong)dVar4 >> 8);\n        bVar23 = (byte)((ulong)dVar4 >> 0x10);\n        bVar24 = (byte)((ulong)dVar4 >> 0x18);\n        bVar25 = (byte)((ulong)dVar4 >> 0x20);\n        bVar26 = (byte)((ulong)dVar4 >> 0x28);\n        bVar27 = (byte)((ulong)dVar4 >> 0x30);\n        bVar17 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = SUB81(dVar4,0);\n          param_5[1] = bVar18;\n          param_5[2] = bVar23;\n          param_5[3] = bVar24;\n          param_5[4] = bVar25;\n          param_5[5] = bVar26;\n          param_5[6] = bVar27;\n          param_5[7] = bVar17;\n        }\n        else {\n          *param_5 = bVar17;\n          param_5[1] = bVar27;\n          param_5[2] = bVar26;\n          param_5[3] = bVar25;\n          param_5[4] = bVar24;\n          param_5[5] = bVar23;\n          param_5[6] = bVar18;\n          param_5[7] = SUB81(dVar4,0);\n        }\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        dVar4 = (double)fVar37 * (double)param_2[0xd] + (double)param_2[3];\n        bVar17 = (byte)((ulong)dVar4 >> 8);\n        bVar18 = (byte)((ulong)dVar4 >> 0x10);\n        bVar27 = (byte)((ulong)dVar4 >> 0x18);\n        bVar26 = (byte)((ulong)dVar4 >> 0x20);\n        bVar25 = (byte)((ulong)dVar4 >> 0x28);\n        bVar24 = (byte)((ulong)dVar4 >> 0x30);\n        bVar23 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          param_5[8] = SUB81(dVar4,0);\n          param_5[9] = bVar17;\n          param_5[10] = bVar18;\n          param_5[0xb] = bVar27;\n          param_5[0xc] = bVar26;\n          param_5[0xd] = bVar25;\n          param_5[0xe] = bVar24;\n          param_5[0xf] = bVar23;\n        }\n        else {\n          param_5[8] = bVar23;\n          param_5[9] = bVar24;\n          param_5[10] = bVar25;\n          param_5[0xb] = bVar26;\n          param_5[0xc] = bVar27;\n          param_5[0xd] = bVar18;\n          param_5[0xe] = bVar17;\n          param_5[0xf] = SUB81(dVar4,0);\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 0x10;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }\n  }\n  if (0x40 < uVar34) {\n    uVar34 = 0;\n  }\n  uVar33 = (2L << ((char)uVar34 - 1U & 0x3f)) - 1;\nLAB_002734e9:\n  if (0 < (long)param_3) {\n    uVar34 = 0;\n    do {\n      lVar32 = *(long *)(param_1 + 0x360);\n      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n      if (NAN(fVar36)) {\n        uVar31 = 0;\n      }\n      else {\n        uVar31 = 0;\n        if (0.0 < fVar36) {\n          dVar5 = ((double)fVar36 * (double)uVar33) / dVar4;\n          uVar31 = 0xffffffffffffffff;\n          if (dVar5 < dVar9) {\n            dVar5 = dVar5 + dVar7;\n            if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }\n          }\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      fVar36 = _DAT_003fa400;\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) == 0) {\nLAB_002745f5:\n        dVar5 = ((double)fVar36 * (double)uVar33) / DAT_003f95f8;\n        uVar31 = 0xffffffffffffffff;\n        if (dVar5 < DAT_003fa3a0) {\n          dVar5 = dVar5 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar5) {\n            uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar31 = (ulong)dVar5;\n          }\n        }\n      }\n      else {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          uVar31 = 0;\n        }\n        else {\n          uVar31 = 0;\n          if (0.0 < fVar36) goto LAB_002745f5;\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n      param_5 = param_5 + param_2[6];\n      uVar34 = uVar34 + 1;\n    } while (param_3 != uVar34);\n  }\n  return;\n}\n\n" (function_definition "void FUN_00273473(long param_1,ulong *param_2,ulong param_3,long param_4,byte *param_5,long param_6)\n\n{\n  byte *pbVar1;\n  bool bVar2;\n  long lVar3;\n  double dVar4;\n  double dVar5;\n  bool bVar6;\n  double dVar7;\n  double dVar8;\n  double dVar9;\n  double dVar10;\n  double dVar11;\n  double dVar12;\n  float fVar13;\n  float fVar14;\n  float fVar15;\n  double dVar16;\n  byte bVar17;\n  byte bVar18;\n  undefined2 uVar19;\n  undefined4 uVar20;\n  ulong uVar21;\n  ulong uVar22;\n  byte bVar23;\n  uint uVar28;\n  ulong uVar29;\n  ulong uVar30;\n  ulong uVar31;\n  long lVar32;\n  ulong uVar33;\n  ulong uVar34;\n  bool bVar35;\n  float fVar36;\n  float fVar37;\n  byte bVar24;\n  byte bVar25;\n  byte bVar26;\n  byte bVar27;\n  \n  dVar16 = DAT_0042f2e8;\n  fVar15 = DAT_0041abe0;\n  fVar14 = DAT_0041abdc;\n  fVar13 = DAT_0041abd8;\n  dVar12 = DAT_00404938;\n  dVar11 = DAT_00404930;\n  dVar10 = DAT_00404928;\n  dVar5 = DAT_00404920;\n  fVar36 = _DAT_003fa400;\n  dVar9 = DAT_003fa3a0;\n  dVar8 = DAT_003f9c40;\n  dVar7 = DAT_003f9c28;\n  dVar4 = DAT_003f95f8;\n  if (param_6 == 0) {\n                    \n    __assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x89f,\n                  "ExportGrayAlphaQuantum");\n  }\n  if (*(long *)(param_6 + 0x30) != 0xabacadab) {\n                    \n    __assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x8a0,\n                  "ExportGrayAlphaQuantum");\n  }\n  uVar34 = *param_2;\n  if (uVar34 == 8) {\n    uVar34 = 0;\n    if ((long)param_3 < 1) {\n      return;\n    }\n    do {\n      lVar32 = *(long *)(param_1 + 0x360);\n      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n      if (NAN(fVar36)) {\n        bVar17 = 0;\n      }\n      else {\n        bVar17 = 0;\n        if ((0.0 < fVar36) && (dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12)) {\n          bVar17 = (byte)(int)(dVar4 + dVar7);\n        }\n      }\n      *param_5 = bVar17;\n      bVar17 = 0xff;\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if ((0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)) {\n            bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);\n          }\n        }\n      }\n      param_5[1] = bVar17;\n      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n      param_5 = param_5 + param_2[6] + 2;\n      uVar34 = uVar34 + 1;\n    } while (uVar34 != param_3);\n    return;\n  }\n  if (uVar34 < 9) {\n    if (uVar34 == 1) {\n      bVar35 = (int)param_2[7] == 0;\n      bVar6 = !bVar35;\n      if (param_3 != 3 && -1 < (long)(param_3 - 3)) {\n        pbVar1 = param_5 + (param_3 - 4 >> 2) + 1;\n        do {\n          *param_5 = 0;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar18 = (byte)(uVar28 << 7);\n          *param_5 = bVar18;\n          bVar17 = 0x40;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar17 = 0x40;\n            }\n            else {\n              bVar17 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar17 = bVar17 | (byte)(uVar28 << 5);\n          *param_5 = bVar17;\n          bVar18 = 0x10;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 0x10;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            bVar2 = bVar6;\n          }\n          bVar17 = bVar17 | bVar2 * '\b';\n          *param_5 = bVar17;\n          bVar18 = 4;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 4;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar6;\n          if (DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) <= DAT_003fc580) {\n            bVar2 = bVar35;\n          }\n          bVar17 = bVar17 | bVar2 * '\x02';\n          *param_5 = bVar17;\n          fVar36 = _DAT_003fa400;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          *param_5 = bVar17 | fVar36 == _DAT_003fa400;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + 1;\n        } while (param_5 != pbVar1);\n      }\n      if ((param_3 & 3) == 0) {\n        return;\n      }\n      *param_5 = 0;\n      fVar15 = DAT_0041abe0;\n      fVar14 = DAT_0041abdc;\n      fVar13 = DAT_0041abd8;\n      fVar36 = _DAT_003fa400;\n      bVar17 = 7;\n      lVar32 = 0;\n      do {\n        lVar3 = *(long *)(param_1 + 0x360);\n        bVar2 = bVar35;\n        if (DAT_003fc580 <\n            fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4) +\n            fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4) +\n            fVar15 * *(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)) {\n          bVar2 = bVar6;\n        }\n        bVar18 = bVar2 << (bVar17 & 0x1f) | *param_5;\n        *param_5 = bVar18;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        uVar28 = (uint)(!NAN(fVar37) && !NAN(_DAT_003fa400));\n        if (fVar37 != _DAT_003fa400) {\n          uVar28 = 0;\n        }\n        *param_5 = (byte)(uVar28 << (bVar17 - 1 & 0x1f)) | bVar18;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        lVar32 = lVar32 + 2;\n        bVar17 = bVar17 - 2;\n      } while (lVar32 <= (long)(ulong)((uint)param_3 & 3));\n      return;\n    }\n    if (uVar34 == 4) {\n      pbVar1 = param_5 + param_3;\n      if ((long)param_3 < 1) {\n        return;\n      }\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar37 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar37)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if (0.0 < fVar37) {\n            dVar4 = (double)fVar37 / dVar11;\n            bVar17 = 0xff;\n            if (dVar4 < dVar12) {\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }\n          }\n        }\n        *param_5 = bVar17 & 0xf0;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        *param_5 = bVar17 & 0xf0 | (byte)(int)((double)fVar37 * dVar16 + dVar7) & 0xf;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + 1;\n      } while (param_5 != pbVar1);\n      return;\n    }\nLAB_002734da:\n    uVar33 = 0;\n    if (uVar34 == 0) goto LAB_002734e9;\n  }\n  else {\n    if (uVar34 == 0x20) {\n      if ((int)param_2[2] == 1) {\n        if ((long)param_3 < 1) {\n          return;\n        }\n        uVar34 = 0;\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar37 = (float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3]);\n          bVar18 = (byte)((uint)fVar37 >> 8);\n          bVar27 = (byte)((uint)fVar37 >> 0x10);\n          bVar17 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = SUB41(fVar37,0);\n            param_5[1] = bVar18;\n            param_5[2] = bVar27;\n            param_5[3] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = bVar27;\n            param_5[2] = bVar18;\n            param_5[3] = SUB41(fVar37,0);\n          }\n          fVar37 = fVar36;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          fVar37 = (float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3]);\n          bVar17 = (byte)((uint)fVar37 >> 8);\n          bVar18 = (byte)((uint)fVar37 >> 0x10);\n          bVar27 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            param_5[4] = SUB41(fVar37,0);\n            param_5[5] = bVar17;\n            param_5[6] = bVar18;\n            param_5[7] = bVar27;\n          }\n          else {\n            param_5[4] = bVar27;\n            param_5[5] = bVar18;\n            param_5[6] = bVar17;\n            param_5[7] = SUB41(fVar37,0);\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 8;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      uVar34 = 0;\n      if ((long)param_3 < 1) {\n        return;\n      }\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar36)) {\n          uVar20 = 0;\n        }\n        else {\n          uVar20 = 0;\n          if ((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)) {\n            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = (byte)uVar20;\n          param_5[1] = bVar17;\n          param_5[2] = bVar18;\n          param_5[3] = bVar27;\n        }\n        else {\n          *param_5 = bVar27;\n          param_5[1] = bVar18;\n          param_5[2] = bVar17;\n          param_5[3] = (byte)uVar20;\n        }\n        uVar20 = 0xffffffff;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          if (NAN(fVar36)) {\n            uVar20 = 0;\n          }\n          else {\n            uVar20 = 0;\n            if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          param_5[4] = (byte)uVar20;\n          param_5[5] = bVar17;\n          param_5[6] = bVar18;\n          param_5[7] = bVar27;\n        }\n        else {\n          param_5[4] = bVar27;\n          param_5[5] = bVar18;\n          param_5[6] = bVar17;\n          param_5[7] = (byte)uVar20;\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 8;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }\n    if (uVar34 != 0x40) {\n      if (uVar34 == 0x10) {\n        if ((int)param_2[2] == 1) {\n          if ((long)param_3 < 1) {\n            return;\n          }\n          uVar34 = 0;\n          do {\n            lVar32 = *(long *)(param_1 + 0x360);\n            uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }\n            else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }\n            fVar36 = _DAT_003fa400;\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }\n            uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }\n            else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }\n            param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n            param_5 = param_5 + param_2[6] + 4;\n            uVar34 = uVar34 + 1;\n          } while (uVar34 != param_3);\n          return;\n        }\n        uVar34 = 0;\n        if ((long)param_3 < 1) {\n          return;\n        }\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n          if (NAN(fVar36)) {\n            uVar19 = 0;\n          }\n          else {\n            uVar19 = 0;\n            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = (byte)uVar19;\n            param_5[1] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = (byte)uVar19;\n          }\n          uVar19 = 0xffff;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            if (NAN(fVar36)) {\n              uVar19 = 0;\n            }\n            else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            param_5[2] = (byte)uVar19;\n            param_5[3] = bVar17;\n          }\n          else {\n            param_5[2] = bVar17;\n            param_5[3] = (byte)uVar19;\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 4;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      goto LAB_002734da;\n    }\n    if ((int)param_2[2] == 1) {\n      if ((long)param_3 < 1) {\n        return;\n      }\n      uVar34 = 0;\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        dVar4 = (double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                (double)param_2[0xd] + (double)param_2[3];\n        bVar18 = (byte)((ulong)dVar4 >> 8);\n        bVar23 = (byte)((ulong)dVar4 >> 0x10);\n        bVar24 = (byte)((ulong)dVar4 >> 0x18);\n        bVar25 = (byte)((ulong)dVar4 >> 0x20);\n        bVar26 = (byte)((ulong)dVar4 >> 0x28);\n        bVar27 = (byte)((ulong)dVar4 >> 0x30);\n        bVar17 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = SUB81(dVar4,0);\n          param_5[1] = bVar18;\n          param_5[2] = bVar23;\n          param_5[3] = bVar24;\n          param_5[4] = bVar25;\n          param_5[5] = bVar26;\n          param_5[6] = bVar27;\n          param_5[7] = bVar17;\n        }\n        else {\n          *param_5 = bVar17;\n          param_5[1] = bVar27;\n          param_5[2] = bVar26;\n          param_5[3] = bVar25;\n          param_5[4] = bVar24;\n          param_5[5] = bVar23;\n          param_5[6] = bVar18;\n          param_5[7] = SUB81(dVar4,0);\n        }\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        dVar4 = (double)fVar37 * (double)param_2[0xd] + (double)param_2[3];\n        bVar17 = (byte)((ulong)dVar4 >> 8);\n        bVar18 = (byte)((ulong)dVar4 >> 0x10);\n        bVar27 = (byte)((ulong)dVar4 >> 0x18);\n        bVar26 = (byte)((ulong)dVar4 >> 0x20);\n        bVar25 = (byte)((ulong)dVar4 >> 0x28);\n        bVar24 = (byte)((ulong)dVar4 >> 0x30);\n        bVar23 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          param_5[8] = SUB81(dVar4,0);\n          param_5[9] = bVar17;\n          param_5[10] = bVar18;\n          param_5[0xb] = bVar27;\n          param_5[0xc] = bVar26;\n          param_5[0xd] = bVar25;\n          param_5[0xe] = bVar24;\n          param_5[0xf] = bVar23;\n        }\n        else {\n          param_5[8] = bVar23;\n          param_5[9] = bVar24;\n          param_5[10] = bVar25;\n          param_5[0xb] = bVar26;\n          param_5[0xc] = bVar27;\n          param_5[0xd] = bVar18;\n          param_5[0xe] = bVar17;\n          param_5[0xf] = SUB81(dVar4,0);\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 0x10;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }\n  }\n  if (0x40 < uVar34) {\n    uVar34 = 0;\n  }\n  uVar33 = (2L << ((char)uVar34 - 1U & 0x3f)) - 1;\nLAB_002734e9:\n  if (0 < (long)param_3) {\n    uVar34 = 0;\n    do {\n      lVar32 = *(long *)(param_1 + 0x360);\n      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n      if (NAN(fVar36)) {\n        uVar31 = 0;\n      }\n      else {\n        uVar31 = 0;\n        if (0.0 < fVar36) {\n          dVar5 = ((double)fVar36 * (double)uVar33) / dVar4;\n          uVar31 = 0xffffffffffffffff;\n          if (dVar5 < dVar9) {\n            dVar5 = dVar5 + dVar7;\n            if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }\n          }\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      fVar36 = _DAT_003fa400;\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) == 0) {\nLAB_002745f5:\n        dVar5 = ((double)fVar36 * (double)uVar33) / DAT_003f95f8;\n        uVar31 = 0xffffffffffffffff;\n        if (dVar5 < DAT_003fa3a0) {\n          dVar5 = dVar5 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar5) {\n            uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar31 = (ulong)dVar5;\n          }\n        }\n      }\n      else {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          uVar31 = 0;\n        }\n        else {\n          uVar31 = 0;\n          if (0.0 < fVar36) goto LAB_002745f5;\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n      param_5 = param_5 + param_2[6];\n      uVar34 = uVar34 + 1;\n    } while (param_3 != uVar34);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00273473(long param_1,ulong *param_2,ulong param_3,long param_4,byte *param_5,long param_6)" identifier (parameter_list "(long param_1,ulong *param_2,ulong param_3,long param_4,byte *param_5,long param_6)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "ulong *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "ulong param_3" type_identifier identifier) , (parameter_declaration "long param_4" (sized_type_specifier "long" long) identifier) , (parameter_declaration "byte *param_5" type_identifier (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "long param_6" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  byte *pbVar1;\n  bool bVar2;\n  long lVar3;\n  double dVar4;\n  double dVar5;\n  bool bVar6;\n  double dVar7;\n  double dVar8;\n  double dVar9;\n  double dVar10;\n  double dVar11;\n  double dVar12;\n  float fVar13;\n  float fVar14;\n  float fVar15;\n  double dVar16;\n  byte bVar17;\n  byte bVar18;\n  undefined2 uVar19;\n  undefined4 uVar20;\n  ulong uVar21;\n  ulong uVar22;\n  byte bVar23;\n  uint uVar28;\n  ulong uVar29;\n  ulong uVar30;\n  ulong uVar31;\n  long lVar32;\n  ulong uVar33;\n  ulong uVar34;\n  bool bVar35;\n  float fVar36;\n  float fVar37;\n  byte bVar24;\n  byte bVar25;\n  byte bVar26;\n  byte bVar27;\n  \n  dVar16 = DAT_0042f2e8;\n  fVar15 = DAT_0041abe0;\n  fVar14 = DAT_0041abdc;\n  fVar13 = DAT_0041abd8;\n  dVar12 = DAT_00404938;\n  dVar11 = DAT_00404930;\n  dVar10 = DAT_00404928;\n  dVar5 = DAT_00404920;\n  fVar36 = _DAT_003fa400;\n  dVar9 = DAT_003fa3a0;\n  dVar8 = DAT_003f9c40;\n  dVar7 = DAT_003f9c28;\n  dVar4 = DAT_003f95f8;\n  if (param_6 == 0) {\n                    \n    __assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x89f,\n                  "ExportGrayAlphaQuantum");\n  }\n  if (*(long *)(param_6 + 0x30) != 0xabacadab) {\n                    \n    __assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x8a0,\n                  "ExportGrayAlphaQuantum");\n  }\n  uVar34 = *param_2;\n  if (uVar34 == 8) {\n    uVar34 = 0;\n    if ((long)param_3 < 1) {\n      return;\n    }\n    do {\n      lVar32 = *(long *)(param_1 + 0x360);\n      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n      if (NAN(fVar36)) {\n        bVar17 = 0;\n      }\n      else {\n        bVar17 = 0;\n        if ((0.0 < fVar36) && (dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12)) {\n          bVar17 = (byte)(int)(dVar4 + dVar7);\n        }\n      }\n      *param_5 = bVar17;\n      bVar17 = 0xff;\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if ((0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)) {\n            bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);\n          }\n        }\n      }\n      param_5[1] = bVar17;\n      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n      param_5 = param_5 + param_2[6] + 2;\n      uVar34 = uVar34 + 1;\n    } while (uVar34 != param_3);\n    return;\n  }\n  if (uVar34 < 9) {\n    if (uVar34 == 1) {\n      bVar35 = (int)param_2[7] == 0;\n      bVar6 = !bVar35;\n      if (param_3 != 3 && -1 < (long)(param_3 - 3)) {\n        pbVar1 = param_5 + (param_3 - 4 >> 2) + 1;\n        do {\n          *param_5 = 0;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar18 = (byte)(uVar28 << 7);\n          *param_5 = bVar18;\n          bVar17 = 0x40;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar17 = 0x40;\n            }\n            else {\n              bVar17 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar17 = bVar17 | (byte)(uVar28 << 5);\n          *param_5 = bVar17;\n          bVar18 = 0x10;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 0x10;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            bVar2 = bVar6;\n          }\n          bVar17 = bVar17 | bVar2 * '\b';\n          *param_5 = bVar17;\n          bVar18 = 4;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 4;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar6;\n          if (DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) <= DAT_003fc580) {\n            bVar2 = bVar35;\n          }\n          bVar17 = bVar17 | bVar2 * '\x02';\n          *param_5 = bVar17;\n          fVar36 = _DAT_003fa400;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          *param_5 = bVar17 | fVar36 == _DAT_003fa400;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + 1;\n        } while (param_5 != pbVar1);\n      }\n      if ((param_3 & 3) == 0) {\n        return;\n      }\n      *param_5 = 0;\n      fVar15 = DAT_0041abe0;\n      fVar14 = DAT_0041abdc;\n      fVar13 = DAT_0041abd8;\n      fVar36 = _DAT_003fa400;\n      bVar17 = 7;\n      lVar32 = 0;\n      do {\n        lVar3 = *(long *)(param_1 + 0x360);\n        bVar2 = bVar35;\n        if (DAT_003fc580 <\n            fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4) +\n            fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4) +\n            fVar15 * *(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)) {\n          bVar2 = bVar6;\n        }\n        bVar18 = bVar2 << (bVar17 & 0x1f) | *param_5;\n        *param_5 = bVar18;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        uVar28 = (uint)(!NAN(fVar37) && !NAN(_DAT_003fa400));\n        if (fVar37 != _DAT_003fa400) {\n          uVar28 = 0;\n        }\n        *param_5 = (byte)(uVar28 << (bVar17 - 1 & 0x1f)) | bVar18;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        lVar32 = lVar32 + 2;\n        bVar17 = bVar17 - 2;\n      } while (lVar32 <= (long)(ulong)((uint)param_3 & 3));\n      return;\n    }\n    if (uVar34 == 4) {\n      pbVar1 = param_5 + param_3;\n      if ((long)param_3 < 1) {\n        return;\n      }\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar37 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar37)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if (0.0 < fVar37) {\n            dVar4 = (double)fVar37 / dVar11;\n            bVar17 = 0xff;\n            if (dVar4 < dVar12) {\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }\n          }\n        }\n        *param_5 = bVar17 & 0xf0;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        *param_5 = bVar17 & 0xf0 | (byte)(int)((double)fVar37 * dVar16 + dVar7) & 0xf;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + 1;\n      } while (param_5 != pbVar1);\n      return;\n    }\nLAB_002734da:\n    uVar33 = 0;\n    if (uVar34 == 0) goto LAB_002734e9;\n  }\n  else {\n    if (uVar34 == 0x20) {\n      if ((int)param_2[2] == 1) {\n        if ((long)param_3 < 1) {\n          return;\n        }\n        uVar34 = 0;\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar37 = (float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3]);\n          bVar18 = (byte)((uint)fVar37 >> 8);\n          bVar27 = (byte)((uint)fVar37 >> 0x10);\n          bVar17 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = SUB41(fVar37,0);\n            param_5[1] = bVar18;\n            param_5[2] = bVar27;\n            param_5[3] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = bVar27;\n            param_5[2] = bVar18;\n            param_5[3] = SUB41(fVar37,0);\n          }\n          fVar37 = fVar36;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          fVar37 = (float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3]);\n          bVar17 = (byte)((uint)fVar37 >> 8);\n          bVar18 = (byte)((uint)fVar37 >> 0x10);\n          bVar27 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            param_5[4] = SUB41(fVar37,0);\n            param_5[5] = bVar17;\n            param_5[6] = bVar18;\n            param_5[7] = bVar27;\n          }\n          else {\n            param_5[4] = bVar27;\n            param_5[5] = bVar18;\n            param_5[6] = bVar17;\n            param_5[7] = SUB41(fVar37,0);\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 8;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      uVar34 = 0;\n      if ((long)param_3 < 1) {\n        return;\n      }\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar36)) {\n          uVar20 = 0;\n        }\n        else {\n          uVar20 = 0;\n          if ((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)) {\n            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = (byte)uVar20;\n          param_5[1] = bVar17;\n          param_5[2] = bVar18;\n          param_5[3] = bVar27;\n        }\n        else {\n          *param_5 = bVar27;\n          param_5[1] = bVar18;\n          param_5[2] = bVar17;\n          param_5[3] = (byte)uVar20;\n        }\n        uVar20 = 0xffffffff;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          if (NAN(fVar36)) {\n            uVar20 = 0;\n          }\n          else {\n            uVar20 = 0;\n            if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          param_5[4] = (byte)uVar20;\n          param_5[5] = bVar17;\n          param_5[6] = bVar18;\n          param_5[7] = bVar27;\n        }\n        else {\n          param_5[4] = bVar27;\n          param_5[5] = bVar18;\n          param_5[6] = bVar17;\n          param_5[7] = (byte)uVar20;\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 8;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }\n    if (uVar34 != 0x40) {\n      if (uVar34 == 0x10) {\n        if ((int)param_2[2] == 1) {\n          if ((long)param_3 < 1) {\n            return;\n          }\n          uVar34 = 0;\n          do {\n            lVar32 = *(long *)(param_1 + 0x360);\n            uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }\n            else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }\n            fVar36 = _DAT_003fa400;\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }\n            uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }\n            else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }\n            param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n            param_5 = param_5 + param_2[6] + 4;\n            uVar34 = uVar34 + 1;\n          } while (uVar34 != param_3);\n          return;\n        }\n        uVar34 = 0;\n        if ((long)param_3 < 1) {\n          return;\n        }\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n          if (NAN(fVar36)) {\n            uVar19 = 0;\n          }\n          else {\n            uVar19 = 0;\n            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = (byte)uVar19;\n            param_5[1] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = (byte)uVar19;\n          }\n          uVar19 = 0xffff;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            if (NAN(fVar36)) {\n              uVar19 = 0;\n            }\n            else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            param_5[2] = (byte)uVar19;\n            param_5[3] = bVar17;\n          }\n          else {\n            param_5[2] = bVar17;\n            param_5[3] = (byte)uVar19;\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 4;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      goto LAB_002734da;\n    }\n    if ((int)param_2[2] == 1) {\n      if ((long)param_3 < 1) {\n        return;\n      }\n      uVar34 = 0;\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        dVar4 = (double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                (double)param_2[0xd] + (double)param_2[3];\n        bVar18 = (byte)((ulong)dVar4 >> 8);\n        bVar23 = (byte)((ulong)dVar4 >> 0x10);\n        bVar24 = (byte)((ulong)dVar4 >> 0x18);\n        bVar25 = (byte)((ulong)dVar4 >> 0x20);\n        bVar26 = (byte)((ulong)dVar4 >> 0x28);\n        bVar27 = (byte)((ulong)dVar4 >> 0x30);\n        bVar17 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = SUB81(dVar4,0);\n          param_5[1] = bVar18;\n          param_5[2] = bVar23;\n          param_5[3] = bVar24;\n          param_5[4] = bVar25;\n          param_5[5] = bVar26;\n          param_5[6] = bVar27;\n          param_5[7] = bVar17;\n        }\n        else {\n          *param_5 = bVar17;\n          param_5[1] = bVar27;\n          param_5[2] = bVar26;\n          param_5[3] = bVar25;\n          param_5[4] = bVar24;\n          param_5[5] = bVar23;\n          param_5[6] = bVar18;\n          param_5[7] = SUB81(dVar4,0);\n        }\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        dVar4 = (double)fVar37 * (double)param_2[0xd] + (double)param_2[3];\n        bVar17 = (byte)((ulong)dVar4 >> 8);\n        bVar18 = (byte)((ulong)dVar4 >> 0x10);\n        bVar27 = (byte)((ulong)dVar4 >> 0x18);\n        bVar26 = (byte)((ulong)dVar4 >> 0x20);\n        bVar25 = (byte)((ulong)dVar4 >> 0x28);\n        bVar24 = (byte)((ulong)dVar4 >> 0x30);\n        bVar23 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          param_5[8] = SUB81(dVar4,0);\n          param_5[9] = bVar17;\n          param_5[10] = bVar18;\n          param_5[0xb] = bVar27;\n          param_5[0xc] = bVar26;\n          param_5[0xd] = bVar25;\n          param_5[0xe] = bVar24;\n          param_5[0xf] = bVar23;\n        }\n        else {\n          param_5[8] = bVar23;\n          param_5[9] = bVar24;\n          param_5[10] = bVar25;\n          param_5[0xb] = bVar26;\n          param_5[0xc] = bVar27;\n          param_5[0xd] = bVar18;\n          param_5[0xe] = bVar17;\n          param_5[0xf] = SUB81(dVar4,0);\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 0x10;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }\n  }\n  if (0x40 < uVar34) {\n    uVar34 = 0;\n  }\n  uVar33 = (2L << ((char)uVar34 - 1U & 0x3f)) - 1;\nLAB_002734e9:\n  if (0 < (long)param_3) {\n    uVar34 = 0;\n    do {\n      lVar32 = *(long *)(param_1 + 0x360);\n      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n      if (NAN(fVar36)) {\n        uVar31 = 0;\n      }\n      else {\n        uVar31 = 0;\n        if (0.0 < fVar36) {\n          dVar5 = ((double)fVar36 * (double)uVar33) / dVar4;\n          uVar31 = 0xffffffffffffffff;\n          if (dVar5 < dVar9) {\n            dVar5 = dVar5 + dVar7;\n            if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }\n          }\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      fVar36 = _DAT_003fa400;\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) == 0) {\nLAB_002745f5:\n        dVar5 = ((double)fVar36 * (double)uVar33) / DAT_003f95f8;\n        uVar31 = 0xffffffffffffffff;\n        if (dVar5 < DAT_003fa3a0) {\n          dVar5 = dVar5 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar5) {\n            uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar31 = (ulong)dVar5;\n          }\n        }\n      }\n      else {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          uVar31 = 0;\n        }\n        else {\n          uVar31 = 0;\n          if (0.0 < fVar36) goto LAB_002745f5;\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n      param_5 = param_5 + param_2[6];\n      uVar34 = uVar34 + 1;\n    } while (param_3 != uVar34);\n  }\n  return;\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "double dVar4;" primitive_type identifier ;) (declaration "double dVar5;" primitive_type identifier ;) (declaration "bool bVar6;" primitive_type identifier ;) (declaration "double dVar7;" primitive_type identifier ;) (declaration "double dVar8;" primitive_type identifier ;) (declaration "double dVar9;" primitive_type 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 "float fVar15;" primitive_type identifier ;) (declaration "double dVar16;" primitive_type identifier ;) (declaration "byte bVar17;" type_identifier identifier ;) (declaration "byte bVar18;" type_identifier identifier ;) (declaration "undefined2 uVar19;" type_identifier identifier ;) (declaration "undefined4 uVar20;" type_identifier identifier ;) (declaration "ulong uVar21;" type_identifier identifier ;) (declaration "ulong uVar22;" type_identifier identifier ;) (declaration "byte bVar23;" type_identifier identifier ;) (declaration "uint uVar28;" type_identifier identifier ;) (declaration "ulong uVar29;" type_identifier identifier ;) (declaration "ulong uVar30;" type_identifier identifier ;) (declaration "ulong uVar31;" type_identifier identifier ;) (declaration "long lVar32;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar33;" type_identifier identifier ;) (declaration "ulong uVar34;" type_identifier identifier ;) (declaration "bool bVar35;" primitive_type identifier ;) (declaration "float fVar36;" primitive_type identifier ;) (declaration "float fVar37;" primitive_type identifier ;) (declaration "byte bVar24;" type_identifier identifier ;) (declaration "byte bVar25;" type_identifier identifier ;) (declaration "byte bVar26;" type_identifier identifier ;) (declaration "byte bVar27;" type_identifier identifier ;) (expression_statement "dVar16 = DAT_0042f2e8;" (assignment_expression "dVar16 = DAT_0042f2e8" identifier = identifier) ;) (expression_statement "fVar15 = DAT_0041abe0;" (assignment_expression "fVar15 = DAT_0041abe0" identifier = identifier) ;) (expression_statement "fVar14 = DAT_0041abdc;" (assignment_expression "fVar14 = DAT_0041abdc" identifier = identifier) ;) (expression_statement "fVar13 = DAT_0041abd8;" (assignment_expression "fVar13 = DAT_0041abd8" identifier = identifier) ;) (expression_statement "dVar12 = DAT_00404938;" (assignment_expression "dVar12 = DAT_00404938" identifier = identifier) ;) (expression_statement "dVar11 = DAT_00404930;" (assignment_expression "dVar11 = DAT_00404930" identifier = identifier) ;) (expression_statement "dVar10 = DAT_00404928;" (assignment_expression "dVar10 = DAT_00404928" identifier = identifier) ;) (expression_statement "dVar5 = DAT_00404920;" (assignment_expression "dVar5 = DAT_00404920" identifier = identifier) ;) (expression_statement "fVar36 = _DAT_003fa400;" (assignment_expression "fVar36 = _DAT_003fa400" identifier = identifier) ;) (expression_statement "dVar9 = DAT_003fa3a0;" (assignment_expression "dVar9 = DAT_003fa3a0" identifier = identifier) ;) (expression_statement "dVar8 = DAT_003f9c40;" (assignment_expression "dVar8 = DAT_003f9c40" identifier = identifier) ;) (expression_statement "dVar7 = DAT_003f9c28;" (assignment_expression "dVar7 = DAT_003f9c28" identifier = identifier) ;) (expression_statement "dVar4 = DAT_003f95f8;" (assignment_expression "dVar4 = DAT_003f95f8" identifier = identifier) ;) (if_statement "if (param_6 == 0) {\n                    \n    __assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x89f,\n                  "ExportGrayAlphaQuantum");\n  }" if (parenthesized_expression "(param_6 == 0)" ( (binary_expression "param_6 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n    __assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x89f,\n                  "ExportGrayAlphaQuantum");\n  }" { (expression_statement "__assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x89f,\n                  "ExportGrayAlphaQuantum");" (call_expression "__assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x89f,\n                  "ExportGrayAlphaQuantum")" identifier (argument_list "("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x89f,\n                  "ExportGrayAlphaQuantum")" ( (string_literal ""exception != (ExceptionInfo *) NULL"" " string_content ") , (string_literal ""MagickCore/quantum-export.c"" " string_content ") , number_literal , (string_literal ""ExportGrayAlphaQuantum"" " string_content ") ))) ;) })) (if_statement "if (*(long *)(param_6 + 0x30) != 0xabacadab) {\n                    \n    __assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x8a0,\n                  "ExportGrayAlphaQuantum");\n  }" if (parenthesized_expression "(*(long *)(param_6 + 0x30) != 0xabacadab)" ( (binary_expression "*(long *)(param_6 + 0x30) != 0xabacadab" (pointer_expression "*(long *)(param_6 + 0x30)" * (cast_expression "(long *)(param_6 + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + 0x30)" ( (binary_expression "param_6 + 0x30" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                    \n    __assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x8a0,\n                  "ExportGrayAlphaQuantum");\n  }" { (expression_statement "__assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x8a0,\n                  "ExportGrayAlphaQuantum");" (call_expression "__assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x8a0,\n                  "ExportGrayAlphaQuantum")" identifier (argument_list "("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x8a0,\n                  "ExportGrayAlphaQuantum")" ( (string_literal ""exception->signature == MagickCoreSignature"" " string_content ") , (string_literal ""MagickCore/quantum-export.c"" " string_content ") , number_literal , (string_literal ""ExportGrayAlphaQuantum"" " string_content ") ))) ;) })) (expression_statement "uVar34 = *param_2;" (assignment_expression "uVar34 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (uVar34 == 8) {\n    uVar34 = 0;\n    if ((long)param_3 < 1) {\n      return;\n    }\n    do {\n      lVar32 = *(long *)(param_1 + 0x360);\n      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n      if (NAN(fVar36)) {\n        bVar17 = 0;\n      }\n      else {\n        bVar17 = 0;\n        if ((0.0 < fVar36) && (dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12)) {\n          bVar17 = (byte)(int)(dVar4 + dVar7);\n        }\n      }\n      *param_5 = bVar17;\n      bVar17 = 0xff;\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if ((0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)) {\n            bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);\n          }\n        }\n      }\n      param_5[1] = bVar17;\n      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n      param_5 = param_5 + param_2[6] + 2;\n      uVar34 = uVar34 + 1;\n    } while (uVar34 != param_3);\n    return;\n  }" if (parenthesized_expression "(uVar34 == 8)" ( (binary_expression "uVar34 == 8" identifier == number_literal) )) (compound_statement "{\n    uVar34 = 0;\n    if ((long)param_3 < 1) {\n      return;\n    }\n    do {\n      lVar32 = *(long *)(param_1 + 0x360);\n      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n      if (NAN(fVar36)) {\n        bVar17 = 0;\n      }\n      else {\n        bVar17 = 0;\n        if ((0.0 < fVar36) && (dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12)) {\n          bVar17 = (byte)(int)(dVar4 + dVar7);\n        }\n      }\n      *param_5 = bVar17;\n      bVar17 = 0xff;\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if ((0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)) {\n            bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);\n          }\n        }\n      }\n      param_5[1] = bVar17;\n      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n      param_5 = param_5 + param_2[6] + 2;\n      uVar34 = uVar34 + 1;\n    } while (uVar34 != param_3);\n    return;\n  }" { (expression_statement "uVar34 = 0;" (assignment_expression "uVar34 = 0" identifier = number_literal) ;) (if_statement "if ((long)param_3 < 1) {\n      return;\n    }" if (parenthesized_expression "((long)param_3 < 1)" ( (binary_expression "(long)param_3 < 1" (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (do_statement "do {\n      lVar32 = *(long *)(param_1 + 0x360);\n      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n      if (NAN(fVar36)) {\n        bVar17 = 0;\n      }\n      else {\n        bVar17 = 0;\n        if ((0.0 < fVar36) && (dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12)) {\n          bVar17 = (byte)(int)(dVar4 + dVar7);\n        }\n      }\n      *param_5 = bVar17;\n      bVar17 = 0xff;\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if ((0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)) {\n            bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);\n          }\n        }\n      }\n      param_5[1] = bVar17;\n      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n      param_5 = param_5 + param_2[6] + 2;\n      uVar34 = uVar34 + 1;\n    } while (uVar34 != param_3);" do (compound_statement "{\n      lVar32 = *(long *)(param_1 + 0x360);\n      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n      if (NAN(fVar36)) {\n        bVar17 = 0;\n      }\n      else {\n        bVar17 = 0;\n        if ((0.0 < fVar36) && (dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12)) {\n          bVar17 = (byte)(int)(dVar4 + dVar7);\n        }\n      }\n      *param_5 = bVar17;\n      bVar17 = 0xff;\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if ((0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)) {\n            bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);\n          }\n        }\n      }\n      param_5[1] = bVar17;\n      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n      param_5 = param_5 + param_2[6] + 2;\n      uVar34 = uVar34 + 1;\n    }" { (expression_statement "lVar32 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar32 = *(long *)(param_1 + 0x360)" identifier = (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);" (assignment_expression "fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" identifier = (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x18) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x18) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x18) * 4" (pointer_expression "*(long *)(lVar32 + 0x18)" * (cast_expression "(long *)(lVar32 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x18)" ( (binary_expression "lVar32 + 0x18" identifier + number_literal) )))) * number_literal)) ))))) + (binary_expression "fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 8) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 8) * 4" identifier + (binary_expression "*(long *)(lVar32 + 8) * 4" (pointer_expression "*(long *)(lVar32 + 8)" * (cast_expression "(long *)(lVar32 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 8)" ( (binary_expression "lVar32 + 8" identifier + number_literal) )))) * number_literal)) )))))) + (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x28) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x28) * 4" (pointer_expression "*(long *)(lVar32 + 0x28)" * (cast_expression "(long *)(lVar32 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x28)" ( (binary_expression "lVar32 + 0x28" identifier + number_literal) )))) * number_literal)) ))))))) ;) (if_statement "if (NAN(fVar36)) {\n        bVar17 = 0;\n      }\n      else {\n        bVar17 = 0;\n        if ((0.0 < fVar36) && (dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12)) {\n          bVar17 = (byte)(int)(dVar4 + dVar7);\n        }\n      }" if (parenthesized_expression "(NAN(fVar36))" ( (call_expression "NAN(fVar36)" identifier (argument_list "(fVar36)" ( identifier ))) )) (compound_statement "{\n        bVar17 = 0;\n      }" { (expression_statement "bVar17 = 0;" (assignment_expression "bVar17 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        bVar17 = 0;\n        if ((0.0 < fVar36) && (dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12)) {\n          bVar17 = (byte)(int)(dVar4 + dVar7);\n        }\n      }" else (compound_statement "{\n        bVar17 = 0;\n        if ((0.0 < fVar36) && (dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12)) {\n          bVar17 = (byte)(int)(dVar4 + dVar7);\n        }\n      }" { (expression_statement "bVar17 = 0;" (assignment_expression "bVar17 = 0" identifier = number_literal) ;) (if_statement "if ((0.0 < fVar36) && (dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12)) {\n          bVar17 = (byte)(int)(dVar4 + dVar7);\n        }" if (parenthesized_expression "((0.0 < fVar36) && (dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12))" ( (binary_expression "(0.0 < fVar36) && (dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12)" (parenthesized_expression "(0.0 < fVar36)" ( (binary_expression "0.0 < fVar36" number_literal < identifier) )) && (parenthesized_expression "(dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12)" ( (comma_expression "dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12" (assignment_expression "dVar4 = (double)fVar36 / dVar11" identifier = (binary_expression "(double)fVar36 / dVar11" (cast_expression "(double)fVar36" ( (type_descriptor "double" primitive_type) ) identifier) / identifier)) , (comma_expression "bVar17 = 0xff, dVar4 < dVar12" (assignment_expression "bVar17 = 0xff" identifier = number_literal) , (binary_expression "dVar4 < dVar12" identifier < identifier))) ))) )) (compound_statement "{\n          bVar17 = (byte)(int)(dVar4 + dVar7);\n        }" { (expression_statement "bVar17 = (byte)(int)(dVar4 + dVar7);" (assignment_expression "bVar17 = (byte)(int)(dVar4 + dVar7)" identifier = (call_expression "(byte)(int)(dVar4 + dVar7)" (call_expression "(byte)(int)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(int)" ( identifier ))) (argument_list "(dVar4 + dVar7)" ( (binary_expression "dVar4 + dVar7" identifier + identifier) )))) ;) })) }))) (expression_statement "*param_5 = bVar17;" (assignment_expression "*param_5 = bVar17" (pointer_expression "*param_5" * identifier) = identifier) ;) (expression_statement "bVar17 = 0xff;" (assignment_expression "bVar17 = 0xff" identifier = number_literal) ;) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if ((0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)) {\n            bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);\n          }\n        }\n      }" if (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0)" ( (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44)" * (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x44)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x44" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if ((0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)) {\n            bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);\n          }\n        }\n      }" { (expression_statement "fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);" (assignment_expression "fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" identifier = (pointer_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (binary_expression "param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" identifier + (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48)" * (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x48)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x48" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (NAN(fVar36)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if ((0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)) {\n            bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);\n          }\n        }" if (parenthesized_expression "(NAN(fVar36))" ( (call_expression "NAN(fVar36)" identifier (argument_list "(fVar36)" ( identifier ))) )) (compound_statement "{\n          bVar17 = 0;\n        }" { (expression_statement "bVar17 = 0;" (assignment_expression "bVar17 = 0" identifier = number_literal) ;) }) (else_clause "else {\n          bVar17 = 0;\n          if ((0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)) {\n            bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);\n          }\n        }" else (compound_statement "{\n          bVar17 = 0;\n          if ((0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)) {\n            bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);\n          }\n        }" { (expression_statement "bVar17 = 0;" (assignment_expression "bVar17 = 0" identifier = number_literal) ;) (if_statement "if ((0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)) {\n            bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);\n          }" if (parenthesized_expression "((0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938))" ( (binary_expression "(0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)" (parenthesized_expression "(0.0 < fVar36)" ( (binary_expression "0.0 < fVar36" number_literal < identifier) )) && (parenthesized_expression "(bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)" ( (comma_expression "bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938" (assignment_expression "bVar17 = 0xff" identifier = number_literal) , (binary_expression "(double)fVar36 / DAT_00404930 < DAT_00404938" (binary_expression "(double)fVar36 / DAT_00404930" (cast_expression "(double)fVar36" ( (type_descriptor "double" primitive_type) ) identifier) / identifier) < identifier)) ))) )) (compound_statement "{\n            bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);\n          }" { (expression_statement "bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);" (assignment_expression "bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28)" identifier = (call_expression "(byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28)" (call_expression "(byte)(int)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(int)" ( identifier ))) (argument_list "((double)fVar36 / DAT_00404930 + DAT_003f9c28)" ( (binary_expression "(double)fVar36 / DAT_00404930 + DAT_003f9c28" (binary_expression "(double)fVar36 / DAT_00404930" (cast_expression "(double)fVar36" ( (type_descriptor "double" primitive_type) ) identifier) / identifier) + identifier) )))) ;) })) }))) })) (expression_statement "param_5[1] = bVar17;" (assignment_expression "param_5[1] = bVar17" (subscript_expression "param_5[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4" identifier = (binary_expression "param_4 + *(long *)(param_1 + 0x340) * 4" identifier + (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" * (cast_expression "(long *)(param_1 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "param_5 = param_5 + param_2[6] + 2;" (assignment_expression "param_5 = param_5 + param_2[6] + 2" identifier = (binary_expression "param_5 + param_2[6] + 2" (binary_expression "param_5 + param_2[6]" identifier + (subscript_expression "param_2[6]" identifier [ number_literal ])) + number_literal)) ;) (expression_statement "uVar34 = uVar34 + 1;" (assignment_expression "uVar34 = uVar34 + 1" identifier = (binary_expression "uVar34 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar34 != param_3)" ( (binary_expression "uVar34 != param_3" identifier != identifier) )) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar34 < 9) {\n    if (uVar34 == 1) {\n      bVar35 = (int)param_2[7] == 0;\n      bVar6 = !bVar35;\n      if (param_3 != 3 && -1 < (long)(param_3 - 3)) {\n        pbVar1 = param_5 + (param_3 - 4 >> 2) + 1;\n        do {\n          *param_5 = 0;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar18 = (byte)(uVar28 << 7);\n          *param_5 = bVar18;\n          bVar17 = 0x40;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar17 = 0x40;\n            }\n            else {\n              bVar17 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar17 = bVar17 | (byte)(uVar28 << 5);\n          *param_5 = bVar17;\n          bVar18 = 0x10;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 0x10;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            bVar2 = bVar6;\n          }\n          bVar17 = bVar17 | bVar2 * '\b';\n          *param_5 = bVar17;\n          bVar18 = 4;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 4;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar6;\n          if (DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) <= DAT_003fc580) {\n            bVar2 = bVar35;\n          }\n          bVar17 = bVar17 | bVar2 * '\x02';\n          *param_5 = bVar17;\n          fVar36 = _DAT_003fa400;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          *param_5 = bVar17 | fVar36 == _DAT_003fa400;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + 1;\n        } while (param_5 != pbVar1);\n      }\n      if ((param_3 & 3) == 0) {\n        return;\n      }\n      *param_5 = 0;\n      fVar15 = DAT_0041abe0;\n      fVar14 = DAT_0041abdc;\n      fVar13 = DAT_0041abd8;\n      fVar36 = _DAT_003fa400;\n      bVar17 = 7;\n      lVar32 = 0;\n      do {\n        lVar3 = *(long *)(param_1 + 0x360);\n        bVar2 = bVar35;\n        if (DAT_003fc580 <\n            fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4) +\n            fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4) +\n            fVar15 * *(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)) {\n          bVar2 = bVar6;\n        }\n        bVar18 = bVar2 << (bVar17 & 0x1f) | *param_5;\n        *param_5 = bVar18;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        uVar28 = (uint)(!NAN(fVar37) && !NAN(_DAT_003fa400));\n        if (fVar37 != _DAT_003fa400) {\n          uVar28 = 0;\n        }\n        *param_5 = (byte)(uVar28 << (bVar17 - 1 & 0x1f)) | bVar18;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        lVar32 = lVar32 + 2;\n        bVar17 = bVar17 - 2;\n      } while (lVar32 <= (long)(ulong)((uint)param_3 & 3));\n      return;\n    }\n    if (uVar34 == 4) {\n      pbVar1 = param_5 + param_3;\n      if ((long)param_3 < 1) {\n        return;\n      }\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar37 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar37)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if (0.0 < fVar37) {\n            dVar4 = (double)fVar37 / dVar11;\n            bVar17 = 0xff;\n            if (dVar4 < dVar12) {\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }\n          }\n        }\n        *param_5 = bVar17 & 0xf0;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        *param_5 = bVar17 & 0xf0 | (byte)(int)((double)fVar37 * dVar16 + dVar7) & 0xf;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + 1;\n      } while (param_5 != pbVar1);\n      return;\n    }\nLAB_002734da:\n    uVar33 = 0;\n    if (uVar34 == 0) goto LAB_002734e9;\n  }\n  else {\n    if (uVar34 == 0x20) {\n      if ((int)param_2[2] == 1) {\n        if ((long)param_3 < 1) {\n          return;\n        }\n        uVar34 = 0;\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar37 = (float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3]);\n          bVar18 = (byte)((uint)fVar37 >> 8);\n          bVar27 = (byte)((uint)fVar37 >> 0x10);\n          bVar17 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = SUB41(fVar37,0);\n            param_5[1] = bVar18;\n            param_5[2] = bVar27;\n            param_5[3] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = bVar27;\n            param_5[2] = bVar18;\n            param_5[3] = SUB41(fVar37,0);\n          }\n          fVar37 = fVar36;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          fVar37 = (float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3]);\n          bVar17 = (byte)((uint)fVar37 >> 8);\n          bVar18 = (byte)((uint)fVar37 >> 0x10);\n          bVar27 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            param_5[4] = SUB41(fVar37,0);\n            param_5[5] = bVar17;\n            param_5[6] = bVar18;\n            param_5[7] = bVar27;\n          }\n          else {\n            param_5[4] = bVar27;\n            param_5[5] = bVar18;\n            param_5[6] = bVar17;\n            param_5[7] = SUB41(fVar37,0);\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 8;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      uVar34 = 0;\n      if ((long)param_3 < 1) {\n        return;\n      }\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar36)) {\n          uVar20 = 0;\n        }\n        else {\n          uVar20 = 0;\n          if ((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)) {\n            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = (byte)uVar20;\n          param_5[1] = bVar17;\n          param_5[2] = bVar18;\n          param_5[3] = bVar27;\n        }\n        else {\n          *param_5 = bVar27;\n          param_5[1] = bVar18;\n          param_5[2] = bVar17;\n          param_5[3] = (byte)uVar20;\n        }\n        uVar20 = 0xffffffff;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          if (NAN(fVar36)) {\n            uVar20 = 0;\n          }\n          else {\n            uVar20 = 0;\n            if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          param_5[4] = (byte)uVar20;\n          param_5[5] = bVar17;\n          param_5[6] = bVar18;\n          param_5[7] = bVar27;\n        }\n        else {\n          param_5[4] = bVar27;\n          param_5[5] = bVar18;\n          param_5[6] = bVar17;\n          param_5[7] = (byte)uVar20;\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 8;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }\n    if (uVar34 != 0x40) {\n      if (uVar34 == 0x10) {\n        if ((int)param_2[2] == 1) {\n          if ((long)param_3 < 1) {\n            return;\n          }\n          uVar34 = 0;\n          do {\n            lVar32 = *(long *)(param_1 + 0x360);\n            uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }\n            else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }\n            fVar36 = _DAT_003fa400;\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }\n            uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }\n            else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }\n            param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n            param_5 = param_5 + param_2[6] + 4;\n            uVar34 = uVar34 + 1;\n          } while (uVar34 != param_3);\n          return;\n        }\n        uVar34 = 0;\n        if ((long)param_3 < 1) {\n          return;\n        }\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n          if (NAN(fVar36)) {\n            uVar19 = 0;\n          }\n          else {\n            uVar19 = 0;\n            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = (byte)uVar19;\n            param_5[1] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = (byte)uVar19;\n          }\n          uVar19 = 0xffff;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            if (NAN(fVar36)) {\n              uVar19 = 0;\n            }\n            else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            param_5[2] = (byte)uVar19;\n            param_5[3] = bVar17;\n          }\n          else {\n            param_5[2] = bVar17;\n            param_5[3] = (byte)uVar19;\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 4;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      goto LAB_002734da;\n    }\n    if ((int)param_2[2] == 1) {\n      if ((long)param_3 < 1) {\n        return;\n      }\n      uVar34 = 0;\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        dVar4 = (double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                (double)param_2[0xd] + (double)param_2[3];\n        bVar18 = (byte)((ulong)dVar4 >> 8);\n        bVar23 = (byte)((ulong)dVar4 >> 0x10);\n        bVar24 = (byte)((ulong)dVar4 >> 0x18);\n        bVar25 = (byte)((ulong)dVar4 >> 0x20);\n        bVar26 = (byte)((ulong)dVar4 >> 0x28);\n        bVar27 = (byte)((ulong)dVar4 >> 0x30);\n        bVar17 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = SUB81(dVar4,0);\n          param_5[1] = bVar18;\n          param_5[2] = bVar23;\n          param_5[3] = bVar24;\n          param_5[4] = bVar25;\n          param_5[5] = bVar26;\n          param_5[6] = bVar27;\n          param_5[7] = bVar17;\n        }\n        else {\n          *param_5 = bVar17;\n          param_5[1] = bVar27;\n          param_5[2] = bVar26;\n          param_5[3] = bVar25;\n          param_5[4] = bVar24;\n          param_5[5] = bVar23;\n          param_5[6] = bVar18;\n          param_5[7] = SUB81(dVar4,0);\n        }\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        dVar4 = (double)fVar37 * (double)param_2[0xd] + (double)param_2[3];\n        bVar17 = (byte)((ulong)dVar4 >> 8);\n        bVar18 = (byte)((ulong)dVar4 >> 0x10);\n        bVar27 = (byte)((ulong)dVar4 >> 0x18);\n        bVar26 = (byte)((ulong)dVar4 >> 0x20);\n        bVar25 = (byte)((ulong)dVar4 >> 0x28);\n        bVar24 = (byte)((ulong)dVar4 >> 0x30);\n        bVar23 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          param_5[8] = SUB81(dVar4,0);\n          param_5[9] = bVar17;\n          param_5[10] = bVar18;\n          param_5[0xb] = bVar27;\n          param_5[0xc] = bVar26;\n          param_5[0xd] = bVar25;\n          param_5[0xe] = bVar24;\n          param_5[0xf] = bVar23;\n        }\n        else {\n          param_5[8] = bVar23;\n          param_5[9] = bVar24;\n          param_5[10] = bVar25;\n          param_5[0xb] = bVar26;\n          param_5[0xc] = bVar27;\n          param_5[0xd] = bVar18;\n          param_5[0xe] = bVar17;\n          param_5[0xf] = SUB81(dVar4,0);\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 0x10;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }\n  }" if (parenthesized_expression "(uVar34 < 9)" ( (binary_expression "uVar34 < 9" identifier < number_literal) )) (compound_statement "{\n    if (uVar34 == 1) {\n      bVar35 = (int)param_2[7] == 0;\n      bVar6 = !bVar35;\n      if (param_3 != 3 && -1 < (long)(param_3 - 3)) {\n        pbVar1 = param_5 + (param_3 - 4 >> 2) + 1;\n        do {\n          *param_5 = 0;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar18 = (byte)(uVar28 << 7);\n          *param_5 = bVar18;\n          bVar17 = 0x40;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar17 = 0x40;\n            }\n            else {\n              bVar17 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar17 = bVar17 | (byte)(uVar28 << 5);\n          *param_5 = bVar17;\n          bVar18 = 0x10;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 0x10;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            bVar2 = bVar6;\n          }\n          bVar17 = bVar17 | bVar2 * '\b';\n          *param_5 = bVar17;\n          bVar18 = 4;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 4;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar6;\n          if (DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) <= DAT_003fc580) {\n            bVar2 = bVar35;\n          }\n          bVar17 = bVar17 | bVar2 * '\x02';\n          *param_5 = bVar17;\n          fVar36 = _DAT_003fa400;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          *param_5 = bVar17 | fVar36 == _DAT_003fa400;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + 1;\n        } while (param_5 != pbVar1);\n      }\n      if ((param_3 & 3) == 0) {\n        return;\n      }\n      *param_5 = 0;\n      fVar15 = DAT_0041abe0;\n      fVar14 = DAT_0041abdc;\n      fVar13 = DAT_0041abd8;\n      fVar36 = _DAT_003fa400;\n      bVar17 = 7;\n      lVar32 = 0;\n      do {\n        lVar3 = *(long *)(param_1 + 0x360);\n        bVar2 = bVar35;\n        if (DAT_003fc580 <\n            fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4) +\n            fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4) +\n            fVar15 * *(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)) {\n          bVar2 = bVar6;\n        }\n        bVar18 = bVar2 << (bVar17 & 0x1f) | *param_5;\n        *param_5 = bVar18;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        uVar28 = (uint)(!NAN(fVar37) && !NAN(_DAT_003fa400));\n        if (fVar37 != _DAT_003fa400) {\n          uVar28 = 0;\n        }\n        *param_5 = (byte)(uVar28 << (bVar17 - 1 & 0x1f)) | bVar18;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        lVar32 = lVar32 + 2;\n        bVar17 = bVar17 - 2;\n      } while (lVar32 <= (long)(ulong)((uint)param_3 & 3));\n      return;\n    }\n    if (uVar34 == 4) {\n      pbVar1 = param_5 + param_3;\n      if ((long)param_3 < 1) {\n        return;\n      }\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar37 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar37)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if (0.0 < fVar37) {\n            dVar4 = (double)fVar37 / dVar11;\n            bVar17 = 0xff;\n            if (dVar4 < dVar12) {\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }\n          }\n        }\n        *param_5 = bVar17 & 0xf0;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        *param_5 = bVar17 & 0xf0 | (byte)(int)((double)fVar37 * dVar16 + dVar7) & 0xf;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + 1;\n      } while (param_5 != pbVar1);\n      return;\n    }\nLAB_002734da:\n    uVar33 = 0;\n    if (uVar34 == 0) goto LAB_002734e9;\n  }" { (if_statement "if (uVar34 == 1) {\n      bVar35 = (int)param_2[7] == 0;\n      bVar6 = !bVar35;\n      if (param_3 != 3 && -1 < (long)(param_3 - 3)) {\n        pbVar1 = param_5 + (param_3 - 4 >> 2) + 1;\n        do {\n          *param_5 = 0;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar18 = (byte)(uVar28 << 7);\n          *param_5 = bVar18;\n          bVar17 = 0x40;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar17 = 0x40;\n            }\n            else {\n              bVar17 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar17 = bVar17 | (byte)(uVar28 << 5);\n          *param_5 = bVar17;\n          bVar18 = 0x10;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 0x10;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            bVar2 = bVar6;\n          }\n          bVar17 = bVar17 | bVar2 * '\b';\n          *param_5 = bVar17;\n          bVar18 = 4;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 4;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar6;\n          if (DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) <= DAT_003fc580) {\n            bVar2 = bVar35;\n          }\n          bVar17 = bVar17 | bVar2 * '\x02';\n          *param_5 = bVar17;\n          fVar36 = _DAT_003fa400;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          *param_5 = bVar17 | fVar36 == _DAT_003fa400;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + 1;\n        } while (param_5 != pbVar1);\n      }\n      if ((param_3 & 3) == 0) {\n        return;\n      }\n      *param_5 = 0;\n      fVar15 = DAT_0041abe0;\n      fVar14 = DAT_0041abdc;\n      fVar13 = DAT_0041abd8;\n      fVar36 = _DAT_003fa400;\n      bVar17 = 7;\n      lVar32 = 0;\n      do {\n        lVar3 = *(long *)(param_1 + 0x360);\n        bVar2 = bVar35;\n        if (DAT_003fc580 <\n            fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4) +\n            fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4) +\n            fVar15 * *(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)) {\n          bVar2 = bVar6;\n        }\n        bVar18 = bVar2 << (bVar17 & 0x1f) | *param_5;\n        *param_5 = bVar18;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        uVar28 = (uint)(!NAN(fVar37) && !NAN(_DAT_003fa400));\n        if (fVar37 != _DAT_003fa400) {\n          uVar28 = 0;\n        }\n        *param_5 = (byte)(uVar28 << (bVar17 - 1 & 0x1f)) | bVar18;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        lVar32 = lVar32 + 2;\n        bVar17 = bVar17 - 2;\n      } while (lVar32 <= (long)(ulong)((uint)param_3 & 3));\n      return;\n    }" if (parenthesized_expression "(uVar34 == 1)" ( (binary_expression "uVar34 == 1" identifier == number_literal) )) (compound_statement "{\n      bVar35 = (int)param_2[7] == 0;\n      bVar6 = !bVar35;\n      if (param_3 != 3 && -1 < (long)(param_3 - 3)) {\n        pbVar1 = param_5 + (param_3 - 4 >> 2) + 1;\n        do {\n          *param_5 = 0;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar18 = (byte)(uVar28 << 7);\n          *param_5 = bVar18;\n          bVar17 = 0x40;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar17 = 0x40;\n            }\n            else {\n              bVar17 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar17 = bVar17 | (byte)(uVar28 << 5);\n          *param_5 = bVar17;\n          bVar18 = 0x10;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 0x10;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            bVar2 = bVar6;\n          }\n          bVar17 = bVar17 | bVar2 * '\b';\n          *param_5 = bVar17;\n          bVar18 = 4;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 4;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar6;\n          if (DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) <= DAT_003fc580) {\n            bVar2 = bVar35;\n          }\n          bVar17 = bVar17 | bVar2 * '\x02';\n          *param_5 = bVar17;\n          fVar36 = _DAT_003fa400;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          *param_5 = bVar17 | fVar36 == _DAT_003fa400;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + 1;\n        } while (param_5 != pbVar1);\n      }\n      if ((param_3 & 3) == 0) {\n        return;\n      }\n      *param_5 = 0;\n      fVar15 = DAT_0041abe0;\n      fVar14 = DAT_0041abdc;\n      fVar13 = DAT_0041abd8;\n      fVar36 = _DAT_003fa400;\n      bVar17 = 7;\n      lVar32 = 0;\n      do {\n        lVar3 = *(long *)(param_1 + 0x360);\n        bVar2 = bVar35;\n        if (DAT_003fc580 <\n            fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4) +\n            fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4) +\n            fVar15 * *(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)) {\n          bVar2 = bVar6;\n        }\n        bVar18 = bVar2 << (bVar17 & 0x1f) | *param_5;\n        *param_5 = bVar18;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        uVar28 = (uint)(!NAN(fVar37) && !NAN(_DAT_003fa400));\n        if (fVar37 != _DAT_003fa400) {\n          uVar28 = 0;\n        }\n        *param_5 = (byte)(uVar28 << (bVar17 - 1 & 0x1f)) | bVar18;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        lVar32 = lVar32 + 2;\n        bVar17 = bVar17 - 2;\n      } while (lVar32 <= (long)(ulong)((uint)param_3 & 3));\n      return;\n    }" { (expression_statement "bVar35 = (int)param_2[7] == 0;" (assignment_expression "bVar35 = (int)param_2[7] == 0" identifier = (binary_expression "(int)param_2[7] == 0" (cast_expression "(int)param_2[7]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[7]" identifier [ number_literal ])) == number_literal)) ;) (expression_statement "bVar6 = !bVar35;" (assignment_expression "bVar6 = !bVar35" identifier = (unary_expression "!bVar35" ! identifier)) ;) (if_statement "if (param_3 != 3 && -1 < (long)(param_3 - 3)) {\n        pbVar1 = param_5 + (param_3 - 4 >> 2) + 1;\n        do {\n          *param_5 = 0;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar18 = (byte)(uVar28 << 7);\n          *param_5 = bVar18;\n          bVar17 = 0x40;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar17 = 0x40;\n            }\n            else {\n              bVar17 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar17 = bVar17 | (byte)(uVar28 << 5);\n          *param_5 = bVar17;\n          bVar18 = 0x10;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 0x10;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            bVar2 = bVar6;\n          }\n          bVar17 = bVar17 | bVar2 * '\b';\n          *param_5 = bVar17;\n          bVar18 = 4;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 4;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar6;\n          if (DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) <= DAT_003fc580) {\n            bVar2 = bVar35;\n          }\n          bVar17 = bVar17 | bVar2 * '\x02';\n          *param_5 = bVar17;\n          fVar36 = _DAT_003fa400;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          *param_5 = bVar17 | fVar36 == _DAT_003fa400;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + 1;\n        } while (param_5 != pbVar1);\n      }" if (parenthesized_expression "(param_3 != 3 && -1 < (long)(param_3 - 3))" ( (binary_expression "param_3 != 3 && -1 < (long)(param_3 - 3)" (binary_expression "param_3 != 3" identifier != number_literal) && (binary_expression "-1 < (long)(param_3 - 3)" number_literal < (cast_expression "(long)(param_3 - 3)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(param_3 - 3)" ( (binary_expression "param_3 - 3" identifier - number_literal) ))))) )) (compound_statement "{\n        pbVar1 = param_5 + (param_3 - 4 >> 2) + 1;\n        do {\n          *param_5 = 0;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar18 = (byte)(uVar28 << 7);\n          *param_5 = bVar18;\n          bVar17 = 0x40;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar17 = 0x40;\n            }\n            else {\n              bVar17 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar17 = bVar17 | (byte)(uVar28 << 5);\n          *param_5 = bVar17;\n          bVar18 = 0x10;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 0x10;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            bVar2 = bVar6;\n          }\n          bVar17 = bVar17 | bVar2 * '\b';\n          *param_5 = bVar17;\n          bVar18 = 4;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 4;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar6;\n          if (DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) <= DAT_003fc580) {\n            bVar2 = bVar35;\n          }\n          bVar17 = bVar17 | bVar2 * '\x02';\n          *param_5 = bVar17;\n          fVar36 = _DAT_003fa400;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          *param_5 = bVar17 | fVar36 == _DAT_003fa400;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + 1;\n        } while (param_5 != pbVar1);\n      }" { (expression_statement "pbVar1 = param_5 + (param_3 - 4 >> 2) + 1;" (assignment_expression "pbVar1 = param_5 + (param_3 - 4 >> 2) + 1" identifier = (binary_expression "param_5 + (param_3 - 4 >> 2) + 1" (binary_expression "param_5 + (param_3 - 4 >> 2)" identifier + (parenthesized_expression "(param_3 - 4 >> 2)" ( (binary_expression "param_3 - 4 >> 2" (binary_expression "param_3 - 4" identifier - number_literal) >> number_literal) ))) + number_literal)) ;) (do_statement "do {\n          *param_5 = 0;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar18 = (byte)(uVar28 << 7);\n          *param_5 = bVar18;\n          bVar17 = 0x40;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar17 = 0x40;\n            }\n            else {\n              bVar17 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar17 = bVar17 | (byte)(uVar28 << 5);\n          *param_5 = bVar17;\n          bVar18 = 0x10;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 0x10;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            bVar2 = bVar6;\n          }\n          bVar17 = bVar17 | bVar2 * '\b';\n          *param_5 = bVar17;\n          bVar18 = 4;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 4;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar6;\n          if (DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) <= DAT_003fc580) {\n            bVar2 = bVar35;\n          }\n          bVar17 = bVar17 | bVar2 * '\x02';\n          *param_5 = bVar17;\n          fVar36 = _DAT_003fa400;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          *param_5 = bVar17 | fVar36 == _DAT_003fa400;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + 1;\n        } while (param_5 != pbVar1);" do (compound_statement "{\n          *param_5 = 0;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar18 = (byte)(uVar28 << 7);\n          *param_5 = bVar18;\n          bVar17 = 0x40;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar17 = 0x40;\n            }\n            else {\n              bVar17 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar17 = bVar17 | (byte)(uVar28 << 5);\n          *param_5 = bVar17;\n          bVar18 = 0x10;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 0x10;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            bVar2 = bVar6;\n          }\n          bVar17 = bVar17 | bVar2 * '\b';\n          *param_5 = bVar17;\n          bVar18 = 4;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 4;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar6;\n          if (DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) <= DAT_003fc580) {\n            bVar2 = bVar35;\n          }\n          bVar17 = bVar17 | bVar2 * '\x02';\n          *param_5 = bVar17;\n          fVar36 = _DAT_003fa400;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          *param_5 = bVar17 | fVar36 == _DAT_003fa400;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + 1;\n        }" { (expression_statement "*param_5 = 0;" (assignment_expression "*param_5 = 0" (pointer_expression "*param_5" * identifier) = number_literal) ;) (expression_statement "lVar32 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar32 = *(long *)(param_1 + 0x360)" identifier = (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "uVar28 = (uint)bVar35;" (assignment_expression "uVar28 = (uint)bVar35" identifier = (cast_expression "(uint)bVar35" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)) {\n            uVar28 = (uint)bVar6;\n          }" if (parenthesized_expression "(DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4))" ( (binary_expression "DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" identifier < (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x28) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x28) * 4" (pointer_expression "*(long *)(lVar32 + 0x28)" * (cast_expression "(long *)(lVar32 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x28)" ( (binary_expression "lVar32 + 0x28" identifier + number_literal) )))) * number_literal)) ))))) + (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x18) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x18) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x18) * 4" (pointer_expression "*(long *)(lVar32 + 0x18)" * (cast_expression "(long *)(lVar32 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x18)" ( (binary_expression "lVar32 + 0x18" identifier + number_literal) )))) * number_literal)) )))))) + (binary_expression "fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 8) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 8) * 4" identifier + (binary_expression "*(long *)(lVar32 + 8) * 4" (pointer_expression "*(long *)(lVar32 + 8)" * (cast_expression "(long *)(lVar32 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 8)" ( (binary_expression "lVar32 + 8" identifier + number_literal) )))) * number_literal)) ))))))) )) (compound_statement "{\n            uVar28 = (uint)bVar6;\n          }" { (expression_statement "uVar28 = (uint)bVar6;" (assignment_expression "uVar28 = (uint)bVar6" identifier = (cast_expression "(uint)bVar6" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) })) (expression_statement "bVar18 = (byte)(uVar28 << 7);" (assignment_expression "bVar18 = (byte)(uVar28 << 7)" identifier = (call_expression "(byte)(uVar28 << 7)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar28 << 7)" ( (binary_expression "uVar28 << 7" identifier << number_literal) )))) ;) (expression_statement "*param_5 = bVar18;" (assignment_expression "*param_5 = bVar18" (pointer_expression "*param_5" * identifier) = identifier) ;) (expression_statement "bVar17 = 0x40;" (assignment_expression "bVar17 = 0x40" identifier = number_literal) ;) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar17 = 0x40;\n            }\n            else {\n              bVar17 = 0;\n            }\n          }" if (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0)" ( (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44)" * (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x44)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x44" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar17 = 0x40;\n            }\n            else {\n              bVar17 = 0;\n            }\n          }" { (if_statement "if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar17 = 0x40;\n            }\n            else {\n              bVar17 = 0;\n            }" if (parenthesized_expression "(*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400)" ( (binary_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400" (pointer_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (binary_expression "param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" identifier + (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48)" * (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x48)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x48" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) == identifier) )) (compound_statement "{\n              bVar17 = 0x40;\n            }" { (expression_statement "bVar17 = 0x40;" (assignment_expression "bVar17 = 0x40" identifier = number_literal) ;) }) (else_clause "else {\n              bVar17 = 0;\n            }" else (compound_statement "{\n              bVar17 = 0;\n            }" { (expression_statement "bVar17 = 0;" (assignment_expression "bVar17 = 0" identifier = number_literal) ;) }))) })) (expression_statement "bVar17 = bVar17 | bVar18;" (assignment_expression "bVar17 = bVar17 | bVar18" identifier = (binary_expression "bVar17 | bVar18" identifier | identifier)) ;) (expression_statement "*param_5 = bVar17;" (assignment_expression "*param_5 = bVar17" (pointer_expression "*param_5" * identifier) = identifier) ;) (expression_statement "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4" identifier = (binary_expression "param_4 + *(long *)(param_1 + 0x340) * 4" identifier + (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" * (cast_expression "(long *)(param_1 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "lVar32 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar32 = *(long *)(param_1 + 0x360)" identifier = (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "uVar28 = (uint)bVar35;" (assignment_expression "uVar28 = (uint)bVar35" identifier = (cast_expression "(uint)bVar35" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            uVar28 = (uint)bVar6;\n          }" if (parenthesized_expression "(DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4))" ( (binary_expression "DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" identifier < (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x28) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x28) * 4" (pointer_expression "*(long *)(lVar32 + 0x28)" * (cast_expression "(long *)(lVar32 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x28)" ( (binary_expression "lVar32 + 0x28" identifier + number_literal) )))) * number_literal)) ))))) + (binary_expression "fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 8) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 8) * 4" identifier + (binary_expression "*(long *)(lVar32 + 8) * 4" (pointer_expression "*(long *)(lVar32 + 8)" * (cast_expression "(long *)(lVar32 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 8)" ( (binary_expression "lVar32 + 8" identifier + number_literal) )))) * number_literal)) )))))) + (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x18) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x18) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x18) * 4" (pointer_expression "*(long *)(lVar32 + 0x18)" * (cast_expression "(long *)(lVar32 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x18)" ( (binary_expression "lVar32 + 0x18" identifier + number_literal) )))) * number_literal)) ))))))) )) (compound_statement "{\n            uVar28 = (uint)bVar6;\n          }" { (expression_statement "uVar28 = (uint)bVar6;" (assignment_expression "uVar28 = (uint)bVar6" identifier = (cast_expression "(uint)bVar6" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) })) (expression_statement "bVar17 = bVar17 | (byte)(uVar28 << 5);" (assignment_expression "bVar17 = bVar17 | (byte)(uVar28 << 5)" identifier = (binary_expression "bVar17 | (byte)(uVar28 << 5)" identifier | (call_expression "(byte)(uVar28 << 5)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar28 << 5)" ( (binary_expression "uVar28 << 5" identifier << number_literal) ))))) ;) (expression_statement "*param_5 = bVar17;" (assignment_expression "*param_5 = bVar17" (pointer_expression "*param_5" * identifier) = identifier) ;) (expression_statement "bVar18 = 0x10;" (assignment_expression "bVar18 = 0x10" identifier = number_literal) ;) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 0x10;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }" if (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0)" ( (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44)" * (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x44)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x44" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 0x10;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }" { (if_statement "if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 0x10;\n            }\n            else {\n              bVar18 = 0;\n            }" if (parenthesized_expression "(*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400)" ( (binary_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400" (pointer_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (binary_expression "param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" identifier + (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48)" * (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x48)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x48" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) == identifier) )) (compound_statement "{\n              bVar18 = 0x10;\n            }" { (expression_statement "bVar18 = 0x10;" (assignment_expression "bVar18 = 0x10" identifier = number_literal) ;) }) (else_clause "else {\n              bVar18 = 0;\n            }" else (compound_statement "{\n              bVar18 = 0;\n            }" { (expression_statement "bVar18 = 0;" (assignment_expression "bVar18 = 0" identifier = number_literal) ;) }))) })) (expression_statement "bVar17 = bVar17 | bVar18;" (assignment_expression "bVar17 = bVar17 | bVar18" identifier = (binary_expression "bVar17 | bVar18" identifier | identifier)) ;) (expression_statement "*param_5 = bVar17;" (assignment_expression "*param_5 = bVar17" (pointer_expression "*param_5" * identifier) = identifier) ;) (expression_statement "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4" identifier = (binary_expression "param_4 + *(long *)(param_1 + 0x340) * 4" identifier + (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" * (cast_expression "(long *)(param_1 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "lVar32 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar32 = *(long *)(param_1 + 0x360)" identifier = (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "bVar2 = bVar35;" (assignment_expression "bVar2 = bVar35" identifier = identifier) ;) (if_statement "if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            bVar2 = bVar6;\n          }" if (parenthesized_expression "(DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4))" ( (binary_expression "DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" identifier < (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x28) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x28) * 4" (pointer_expression "*(long *)(lVar32 + 0x28)" * (cast_expression "(long *)(lVar32 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x28)" ( (binary_expression "lVar32 + 0x28" identifier + number_literal) )))) * number_literal)) ))))) + (binary_expression "fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 8) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 8) * 4" identifier + (binary_expression "*(long *)(lVar32 + 8) * 4" (pointer_expression "*(long *)(lVar32 + 8)" * (cast_expression "(long *)(lVar32 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 8)" ( (binary_expression "lVar32 + 8" identifier + number_literal) )))) * number_literal)) )))))) + (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x18) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x18) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x18) * 4" (pointer_expression "*(long *)(lVar32 + 0x18)" * (cast_expression "(long *)(lVar32 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x18)" ( (binary_expression "lVar32 + 0x18" identifier + number_literal) )))) * number_literal)) ))))))) )) (compound_statement "{\n            bVar2 = bVar6;\n          }" { (expression_statement "bVar2 = bVar6;" (assignment_expression "bVar2 = bVar6" identifier = identifier) ;) })) (expression_statement "bVar17 = bVar17 | bVar2 * '\b';" (assignment_expression "bVar17 = bVar17 | bVar2 * '\b'" identifier = (binary_expression "bVar17 | bVar2 * '\b'" identifier | (binary_expression "bVar2 * '\b'" identifier * (char_literal "'\b'" ' escape_sequence ')))) ;) (expression_statement "*param_5 = bVar17;" (assignment_expression "*param_5 = bVar17" (pointer_expression "*param_5" * identifier) = identifier) ;) (expression_statement "bVar18 = 4;" (assignment_expression "bVar18 = 4" identifier = number_literal) ;) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 4;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }" if (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0)" ( (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44)" * (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x44)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x44" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 4;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }" { (if_statement "if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 4;\n            }\n            else {\n              bVar18 = 0;\n            }" if (parenthesized_expression "(*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400)" ( (binary_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400" (pointer_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (binary_expression "param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" identifier + (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48)" * (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x48)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x48" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) * number_literal)) )))) == identifier) )) (compound_statement "{\n              bVar18 = 4;\n            }" { (expression_statement "bVar18 = 4;" (assignment_expression "bVar18 = 4" identifier = number_literal) ;) }) (else_clause "else {\n              bVar18 = 0;\n            }" else (compound_statement "{\n              bVar18 = 0;\n            }" { (expression_statement "bVar18 = 0;" (assignment_expression "bVar18 = 0" identifier = number_literal) ;) }))) })) (expression_statement "bVar17 = bVar17 | bVar18;" (assignment_expression "bVar17 = bVar17 | bVar18" identifier = (binary_expression "bVar17 | bVar18" identifier | identifier)) ;) (expression_statement "*param_5 = bVar17;" (assignment_expression "*param_5 = bVar17" (pointer_expression "*param_5" * identifier) = identifier) ;) (expression_statement "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4" identifier = (binary_expression "param_4 + *(long *)(param_1 + 0x340) * 4" identifier + (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" * (cast_expression "(long *)(param_1 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "lVar32 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar32 = *(long *)(param_1 + 0x360)" identifier = (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "bVar2 = bVar6;" (assignment_expression "bVar2 = bVar6" identifier = identifier) ;) (if_statement "if (DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) <= DAT_003fc580) {\n            bVar2 = bVar35;\n          }" if (parenthesized_expression "(DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) <= DAT_003fc580)" ( (binary_expression "DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) <= DAT_003fc580" (binary_expression "DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (binary_expression "DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (binary_expression "DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x28) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x28) * 4" (pointer_expression "*(long *)(lVar32 + 0x28)" * (cast_expression "(long *)(lVar32 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x28)" ( (binary_expression "lVar32 + 0x28" identifier + number_literal) )))) * number_literal)) ))))) + (binary_expression "DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 8) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 8) * 4" identifier + (binary_expression "*(long *)(lVar32 + 8) * 4" (pointer_expression "*(long *)(lVar32 + 8)" * (cast_expression "(long *)(lVar32 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 8)" ( (binary_expression "lVar32 + 8" identifier + number_literal) )))) * number_literal)) )))))) + (binary_expression "DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x18) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x18) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x18) * 4" (pointer_expression "*(long *)(lVar32 + 0x18)" * (cast_expression "(long *)(lVar32 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x18)" ( (binary_expression "lVar32 + 0x18" identifier + number_literal) )))) * number_literal)) )))))) <= identifier) )) (compound_statement "{\n            bVar2 = bVar35;\n          }" { (expression_statement "bVar2 = bVar35;" (assignment_expression "bVar2 = bVar35" identifier = identifier) ;) })) (expression_statement "bVar17 = bVar17 | bVar2 * '\x02';" (assignment_expression "bVar17 = bVar17 | bVar2 * '\x02'" identifier = (binary_expression "bVar17 | bVar2 * '\x02'" identifier | (binary_expression "bVar2 * '\x02'" identifier * (char_literal "'\x02'" ' escape_sequence ')))) ;) (expression_statement "*param_5 = bVar17;" (assignment_expression "*param_5 = bVar17" (pointer_expression "*param_5" * identifier) = identifier) ;) (expression_statement "fVar36 = _DAT_003fa400;" (assignment_expression "fVar36 = _DAT_003fa400" identifier = identifier) ;) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }" if (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0)" ( (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44)" * (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x44)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x44" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }" { (expression_statement "fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);" (assignment_expression "fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" identifier = (pointer_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (binary_expression "param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" identifier + (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48)" * (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x48)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x48" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) })) (expression_statement "*param_5 = bVar17 | fVar36 == _DAT_003fa400;" (assignment_expression "*param_5 = bVar17 | fVar36 == _DAT_003fa400" (pointer_expression "*param_5" * identifier) = (binary_expression "bVar17 | fVar36 == _DAT_003fa400" identifier | (binary_expression "fVar36 == _DAT_003fa400" identifier == identifier))) ;) (expression_statement "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4" identifier = (binary_expression "param_4 + *(long *)(param_1 + 0x340) * 4" identifier + (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" * (cast_expression "(long *)(param_1 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "param_5 = param_5 + 1;" (assignment_expression "param_5 = param_5 + 1" identifier = (binary_expression "param_5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_5 != pbVar1)" ( (binary_expression "param_5 != pbVar1" identifier != identifier) )) ;) })) (if_statement "if ((param_3 & 3) == 0) {\n        return;\n      }" if (parenthesized_expression "((param_3 & 3) == 0)" ( (binary_expression "(param_3 & 3) == 0" (parenthesized_expression "(param_3 & 3)" ( (binary_expression "param_3 & 3" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "*param_5 = 0;" (assignment_expression "*param_5 = 0" (pointer_expression "*param_5" * identifier) = number_literal) ;) (expression_statement "fVar15 = DAT_0041abe0;" (assignment_expression "fVar15 = DAT_0041abe0" identifier = identifier) ;) (expression_statement "fVar14 = DAT_0041abdc;" (assignment_expression "fVar14 = DAT_0041abdc" identifier = identifier) ;) (expression_statement "fVar13 = DAT_0041abd8;" (assignment_expression "fVar13 = DAT_0041abd8" identifier = identifier) ;) (expression_statement "fVar36 = _DAT_003fa400;" (assignment_expression "fVar36 = _DAT_003fa400" identifier = identifier) ;) (expression_statement "bVar17 = 7;" (assignment_expression "bVar17 = 7" identifier = number_literal) ;) (expression_statement "lVar32 = 0;" (assignment_expression "lVar32 = 0" identifier = number_literal) ;) (do_statement "do {\n        lVar3 = *(long *)(param_1 + 0x360);\n        bVar2 = bVar35;\n        if (DAT_003fc580 <\n            fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4) +\n            fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4) +\n            fVar15 * *(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)) {\n          bVar2 = bVar6;\n        }\n        bVar18 = bVar2 << (bVar17 & 0x1f) | *param_5;\n        *param_5 = bVar18;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        uVar28 = (uint)(!NAN(fVar37) && !NAN(_DAT_003fa400));\n        if (fVar37 != _DAT_003fa400) {\n          uVar28 = 0;\n        }\n        *param_5 = (byte)(uVar28 << (bVar17 - 1 & 0x1f)) | bVar18;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        lVar32 = lVar32 + 2;\n        bVar17 = bVar17 - 2;\n      } while (lVar32 <= (long)(ulong)((uint)param_3 & 3));" do (compound_statement "{\n        lVar3 = *(long *)(param_1 + 0x360);\n        bVar2 = bVar35;\n        if (DAT_003fc580 <\n            fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4) +\n            fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4) +\n            fVar15 * *(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)) {\n          bVar2 = bVar6;\n        }\n        bVar18 = bVar2 << (bVar17 & 0x1f) | *param_5;\n        *param_5 = bVar18;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        uVar28 = (uint)(!NAN(fVar37) && !NAN(_DAT_003fa400));\n        if (fVar37 != _DAT_003fa400) {\n          uVar28 = 0;\n        }\n        *param_5 = (byte)(uVar28 << (bVar17 - 1 & 0x1f)) | bVar18;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        lVar32 = lVar32 + 2;\n        bVar17 = bVar17 - 2;\n      }" { (expression_statement "lVar3 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar3 = *(long *)(param_1 + 0x360)" identifier = (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "bVar2 = bVar35;" (assignment_expression "bVar2 = bVar35" identifier = identifier) ;) (if_statement "if (DAT_003fc580 <\n            fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4) +\n            fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4) +\n            fVar15 * *(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)) {\n          bVar2 = bVar6;\n        }" if (parenthesized_expression "(DAT_003fc580 <\n            fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4) +\n            fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4) +\n            fVar15 * *(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4))" ( (binary_expression "DAT_003fc580 <\n            fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4) +\n            fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4) +\n            fVar15 * *(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)" identifier < (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4) +\n            fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4) +\n            fVar15 * *(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4) +\n            fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar3 + 0x18) * 4)" ( (binary_expression "param_4 + *(long *)(lVar3 + 0x18) * 4" identifier + (binary_expression "*(long *)(lVar3 + 0x18) * 4" (pointer_expression "*(long *)(lVar3 + 0x18)" * (cast_expression "(long *)(lVar3 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x18)" ( (binary_expression "lVar3 + 0x18" identifier + number_literal) )))) * number_literal)) ))))) + (binary_expression "fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar3 + 8) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar3 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar3 + 8) * 4)" ( (binary_expression "param_4 + *(long *)(lVar3 + 8) * 4" identifier + (binary_expression "*(long *)(lVar3 + 8) * 4" (pointer_expression "*(long *)(lVar3 + 8)" * (cast_expression "(long *)(lVar3 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 8)" ( (binary_expression "lVar3 + 8" identifier + number_literal) )))) * number_literal)) )))))) + (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar3 + 0x28) * 4)" ( (binary_expression "param_4 + *(long *)(lVar3 + 0x28) * 4" identifier + (binary_expression "*(long *)(lVar3 + 0x28) * 4" (pointer_expression "*(long *)(lVar3 + 0x28)" * (cast_expression "(long *)(lVar3 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x28)" ( (binary_expression "lVar3 + 0x28" identifier + number_literal) )))) * number_literal)) ))))))) )) (compound_statement "{\n          bVar2 = bVar6;\n        }" { (expression_statement "bVar2 = bVar6;" (assignment_expression "bVar2 = bVar6" identifier = identifier) ;) })) (expression_statement "bVar18 = bVar2 << (bVar17 & 0x1f) | *param_5;" (assignment_expression "bVar18 = bVar2 << (bVar17 & 0x1f) | *param_5" identifier = (binary_expression "bVar2 << (bVar17 & 0x1f) | *param_5" (binary_expression "bVar2 << (bVar17 & 0x1f)" identifier << (parenthesized_expression "(bVar17 & 0x1f)" ( (binary_expression "bVar17 & 0x1f" identifier & number_literal) ))) | (pointer_expression "*param_5" * identifier))) ;) (expression_statement "*param_5 = bVar18;" (assignment_expression "*param_5 = bVar18" (pointer_expression "*param_5" * identifier) = identifier) ;) (expression_statement "fVar37 = fVar36;" (assignment_expression "fVar37 = fVar36" identifier = identifier) ;) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }" if (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0)" ( (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44)" * (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x44)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x44" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }" { (expression_statement "fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);" (assignment_expression "fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" identifier = (pointer_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (binary_expression "param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" identifier + (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48)" * (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x48)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x48" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) })) (expression_statement "uVar28 = (uint)(!NAN(fVar37) && !NAN(_DAT_003fa400));" (assignment_expression "uVar28 = (uint)(!NAN(fVar37) && !NAN(_DAT_003fa400))" identifier = (call_expression "(uint)(!NAN(fVar37) && !NAN(_DAT_003fa400))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(!NAN(fVar37) && !NAN(_DAT_003fa400))" ( (binary_expression "!NAN(fVar37) && !NAN(_DAT_003fa400)" (unary_expression "!NAN(fVar37)" ! (call_expression "NAN(fVar37)" identifier (argument_list "(fVar37)" ( identifier )))) && (unary_expression "!NAN(_DAT_003fa400)" ! (call_expression "NAN(_DAT_003fa400)" identifier (argument_list "(_DAT_003fa400)" ( identifier ))))) )))) ;) (if_statement "if (fVar37 != _DAT_003fa400) {\n          uVar28 = 0;\n        }" if (parenthesized_expression "(fVar37 != _DAT_003fa400)" ( (binary_expression "fVar37 != _DAT_003fa400" identifier != identifier) )) (compound_statement "{\n          uVar28 = 0;\n        }" { (expression_statement "uVar28 = 0;" (assignment_expression "uVar28 = 0" identifier = number_literal) ;) })) (expression_statement "*param_5 = (byte)(uVar28 << (bVar17 - 1 & 0x1f)) | bVar18;" (assignment_expression "*param_5 = (byte)(uVar28 << (bVar17 - 1 & 0x1f)) | bVar18" (pointer_expression "*param_5" * identifier) = (binary_expression "(byte)(uVar28 << (bVar17 - 1 & 0x1f)) | bVar18" (call_expression "(byte)(uVar28 << (bVar17 - 1 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar28 << (bVar17 - 1 & 0x1f))" ( (binary_expression "uVar28 << (bVar17 - 1 & 0x1f)" identifier << (parenthesized_expression "(bVar17 - 1 & 0x1f)" ( (binary_expression "bVar17 - 1 & 0x1f" (binary_expression "bVar17 - 1" identifier - number_literal) & number_literal) ))) ))) | identifier)) ;) (expression_statement "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4" identifier = (binary_expression "param_4 + *(long *)(param_1 + 0x340) * 4" identifier + (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" * (cast_expression "(long *)(param_1 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "lVar32 = lVar32 + 2;" (assignment_expression "lVar32 = lVar32 + 2" identifier = (binary_expression "lVar32 + 2" identifier + number_literal)) ;) (expression_statement "bVar17 = bVar17 - 2;" (assignment_expression "bVar17 = bVar17 - 2" identifier = (binary_expression "bVar17 - 2" identifier - number_literal)) ;) }) while (parenthesized_expression "(lVar32 <= (long)(ulong)((uint)param_3 & 3))" ( (binary_expression "lVar32 <= (long)(ulong)((uint)param_3 & 3)" identifier <= (cast_expression "(long)(ulong)((uint)param_3 & 3)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (call_expression "(ulong)((uint)param_3 & 3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((uint)param_3 & 3)" ( (binary_expression "(uint)param_3 & 3" (cast_expression "(uint)param_3" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))))) )) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar34 == 4) {\n      pbVar1 = param_5 + param_3;\n      if ((long)param_3 < 1) {\n        return;\n      }\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar37 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar37)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if (0.0 < fVar37) {\n            dVar4 = (double)fVar37 / dVar11;\n            bVar17 = 0xff;\n            if (dVar4 < dVar12) {\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }\n          }\n        }\n        *param_5 = bVar17 & 0xf0;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        *param_5 = bVar17 & 0xf0 | (byte)(int)((double)fVar37 * dVar16 + dVar7) & 0xf;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + 1;\n      } while (param_5 != pbVar1);\n      return;\n    }" if (parenthesized_expression "(uVar34 == 4)" ( (binary_expression "uVar34 == 4" identifier == number_literal) )) (compound_statement "{\n      pbVar1 = param_5 + param_3;\n      if ((long)param_3 < 1) {\n        return;\n      }\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar37 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar37)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if (0.0 < fVar37) {\n            dVar4 = (double)fVar37 / dVar11;\n            bVar17 = 0xff;\n            if (dVar4 < dVar12) {\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }\n          }\n        }\n        *param_5 = bVar17 & 0xf0;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        *param_5 = bVar17 & 0xf0 | (byte)(int)((double)fVar37 * dVar16 + dVar7) & 0xf;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + 1;\n      } while (param_5 != pbVar1);\n      return;\n    }" { (expression_statement "pbVar1 = param_5 + param_3;" (assignment_expression "pbVar1 = param_5 + param_3" identifier = (binary_expression "param_5 + param_3" identifier + identifier)) ;) (if_statement "if ((long)param_3 < 1) {\n        return;\n      }" if (parenthesized_expression "((long)param_3 < 1)" ( (binary_expression "(long)param_3 < 1" (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (do_statement "do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar37 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar37)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if (0.0 < fVar37) {\n            dVar4 = (double)fVar37 / dVar11;\n            bVar17 = 0xff;\n            if (dVar4 < dVar12) {\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }\n          }\n        }\n        *param_5 = bVar17 & 0xf0;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        *param_5 = bVar17 & 0xf0 | (byte)(int)((double)fVar37 * dVar16 + dVar7) & 0xf;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + 1;\n      } while (param_5 != pbVar1);" do (compound_statement "{\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar37 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar37)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if (0.0 < fVar37) {\n            dVar4 = (double)fVar37 / dVar11;\n            bVar17 = 0xff;\n            if (dVar4 < dVar12) {\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }\n          }\n        }\n        *param_5 = bVar17 & 0xf0;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        *param_5 = bVar17 & 0xf0 | (byte)(int)((double)fVar37 * dVar16 + dVar7) & 0xf;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + 1;\n      }" { (expression_statement "lVar32 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar32 = *(long *)(param_1 + 0x360)" identifier = (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "fVar37 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);" (assignment_expression "fVar37 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" identifier = (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x18) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x18) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x18) * 4" (pointer_expression "*(long *)(lVar32 + 0x18)" * (cast_expression "(long *)(lVar32 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x18)" ( (binary_expression "lVar32 + 0x18" identifier + number_literal) )))) * number_literal)) ))))) + (binary_expression "fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 8) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 8) * 4" identifier + (binary_expression "*(long *)(lVar32 + 8) * 4" (pointer_expression "*(long *)(lVar32 + 8)" * (cast_expression "(long *)(lVar32 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 8)" ( (binary_expression "lVar32 + 8" identifier + number_literal) )))) * number_literal)) )))))) + (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x28) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x28) * 4" (pointer_expression "*(long *)(lVar32 + 0x28)" * (cast_expression "(long *)(lVar32 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x28)" ( (binary_expression "lVar32 + 0x28" identifier + number_literal) )))) * number_literal)) ))))))) ;) (if_statement "if (NAN(fVar37)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if (0.0 < fVar37) {\n            dVar4 = (double)fVar37 / dVar11;\n            bVar17 = 0xff;\n            if (dVar4 < dVar12) {\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }\n          }\n        }" if (parenthesized_expression "(NAN(fVar37))" ( (call_expression "NAN(fVar37)" identifier (argument_list "(fVar37)" ( identifier ))) )) (compound_statement "{\n          bVar17 = 0;\n        }" { (expression_statement "bVar17 = 0;" (assignment_expression "bVar17 = 0" identifier = number_literal) ;) }) (else_clause "else {\n          bVar17 = 0;\n          if (0.0 < fVar37) {\n            dVar4 = (double)fVar37 / dVar11;\n            bVar17 = 0xff;\n            if (dVar4 < dVar12) {\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }\n          }\n        }" else (compound_statement "{\n          bVar17 = 0;\n          if (0.0 < fVar37) {\n            dVar4 = (double)fVar37 / dVar11;\n            bVar17 = 0xff;\n            if (dVar4 < dVar12) {\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }\n          }\n        }" { (expression_statement "bVar17 = 0;" (assignment_expression "bVar17 = 0" identifier = number_literal) ;) (if_statement "if (0.0 < fVar37) {\n            dVar4 = (double)fVar37 / dVar11;\n            bVar17 = 0xff;\n            if (dVar4 < dVar12) {\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }\n          }" if (parenthesized_expression "(0.0 < fVar37)" ( (binary_expression "0.0 < fVar37" number_literal < identifier) )) (compound_statement "{\n            dVar4 = (double)fVar37 / dVar11;\n            bVar17 = 0xff;\n            if (dVar4 < dVar12) {\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }\n          }" { (expression_statement "dVar4 = (double)fVar37 / dVar11;" (assignment_expression "dVar4 = (double)fVar37 / dVar11" identifier = (binary_expression "(double)fVar37 / dVar11" (cast_expression "(double)fVar37" ( (type_descriptor "double" primitive_type) ) identifier) / identifier)) ;) (expression_statement "bVar17 = 0xff;" (assignment_expression "bVar17 = 0xff" identifier = number_literal) ;) (if_statement "if (dVar4 < dVar12) {\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }" if (parenthesized_expression "(dVar4 < dVar12)" ( (binary_expression "dVar4 < dVar12" identifier < identifier) )) (compound_statement "{\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }" { (expression_statement "bVar17 = (byte)(int)(dVar4 + dVar7);" (assignment_expression "bVar17 = (byte)(int)(dVar4 + dVar7)" identifier = (call_expression "(byte)(int)(dVar4 + dVar7)" (call_expression "(byte)(int)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(int)" ( identifier ))) (argument_list "(dVar4 + dVar7)" ( (binary_expression "dVar4 + dVar7" identifier + identifier) )))) ;) })) })) }))) (expression_statement "*param_5 = bVar17 & 0xf0;" (assignment_expression "*param_5 = bVar17 & 0xf0" (pointer_expression "*param_5" * identifier) = (binary_expression "bVar17 & 0xf0" identifier & number_literal)) ;) (expression_statement "fVar37 = fVar36;" (assignment_expression "fVar37 = fVar36" identifier = identifier) ;) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }" if (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0)" ( (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44)" * (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x44)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x44" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }" { (expression_statement "fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);" (assignment_expression "fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" identifier = (pointer_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (binary_expression "param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" identifier + (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48)" * (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x48)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x48" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) })) (expression_statement "*param_5 = bVar17 & 0xf0 | (byte)(int)((double)fVar37 * dVar16 + dVar7) & 0xf;" (assignment_expression "*param_5 = bVar17 & 0xf0 | (byte)(int)((double)fVar37 * dVar16 + dVar7) & 0xf" (pointer_expression "*param_5" * identifier) = (binary_expression "bVar17 & 0xf0 | (byte)(int)((double)fVar37 * dVar16 + dVar7) & 0xf" (binary_expression "bVar17 & 0xf0" identifier & number_literal) | (binary_expression "(byte)(int)((double)fVar37 * dVar16 + dVar7) & 0xf" (call_expression "(byte)(int)((double)fVar37 * dVar16 + dVar7)" (call_expression "(byte)(int)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(int)" ( identifier ))) (argument_list "((double)fVar37 * dVar16 + dVar7)" ( (binary_expression "(double)fVar37 * dVar16 + dVar7" (binary_expression "(double)fVar37 * dVar16" (cast_expression "(double)fVar37" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) + identifier) ))) & number_literal))) ;) (expression_statement "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4" identifier = (binary_expression "param_4 + *(long *)(param_1 + 0x340) * 4" identifier + (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" * (cast_expression "(long *)(param_1 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "param_5 = param_5 + 1;" (assignment_expression "param_5 = param_5 + 1" identifier = (binary_expression "param_5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_5 != pbVar1)" ( (binary_expression "param_5 != pbVar1" identifier != identifier) )) ;) (return_statement "return;" return ;) })) (labeled_statement "LAB_002734da:\n    uVar33 = 0;" statement_identifier : (expression_statement "uVar33 = 0;" (assignment_expression "uVar33 = 0" identifier = number_literal) ;)) (if_statement "if (uVar34 == 0) goto LAB_002734e9;" if (parenthesized_expression "(uVar34 == 0)" ( (binary_expression "uVar34 == 0" identifier == number_literal) )) (goto_statement "goto LAB_002734e9;" goto statement_identifier ;)) }) (else_clause "else {\n    if (uVar34 == 0x20) {\n      if ((int)param_2[2] == 1) {\n        if ((long)param_3 < 1) {\n          return;\n        }\n        uVar34 = 0;\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar37 = (float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3]);\n          bVar18 = (byte)((uint)fVar37 >> 8);\n          bVar27 = (byte)((uint)fVar37 >> 0x10);\n          bVar17 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = SUB41(fVar37,0);\n            param_5[1] = bVar18;\n            param_5[2] = bVar27;\n            param_5[3] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = bVar27;\n            param_5[2] = bVar18;\n            param_5[3] = SUB41(fVar37,0);\n          }\n          fVar37 = fVar36;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          fVar37 = (float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3]);\n          bVar17 = (byte)((uint)fVar37 >> 8);\n          bVar18 = (byte)((uint)fVar37 >> 0x10);\n          bVar27 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            param_5[4] = SUB41(fVar37,0);\n            param_5[5] = bVar17;\n            param_5[6] = bVar18;\n            param_5[7] = bVar27;\n          }\n          else {\n            param_5[4] = bVar27;\n            param_5[5] = bVar18;\n            param_5[6] = bVar17;\n            param_5[7] = SUB41(fVar37,0);\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 8;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      uVar34 = 0;\n      if ((long)param_3 < 1) {\n        return;\n      }\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar36)) {\n          uVar20 = 0;\n        }\n        else {\n          uVar20 = 0;\n          if ((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)) {\n            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = (byte)uVar20;\n          param_5[1] = bVar17;\n          param_5[2] = bVar18;\n          param_5[3] = bVar27;\n        }\n        else {\n          *param_5 = bVar27;\n          param_5[1] = bVar18;\n          param_5[2] = bVar17;\n          param_5[3] = (byte)uVar20;\n        }\n        uVar20 = 0xffffffff;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          if (NAN(fVar36)) {\n            uVar20 = 0;\n          }\n          else {\n            uVar20 = 0;\n            if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          param_5[4] = (byte)uVar20;\n          param_5[5] = bVar17;\n          param_5[6] = bVar18;\n          param_5[7] = bVar27;\n        }\n        else {\n          param_5[4] = bVar27;\n          param_5[5] = bVar18;\n          param_5[6] = bVar17;\n          param_5[7] = (byte)uVar20;\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 8;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }\n    if (uVar34 != 0x40) {\n      if (uVar34 == 0x10) {\n        if ((int)param_2[2] == 1) {\n          if ((long)param_3 < 1) {\n            return;\n          }\n          uVar34 = 0;\n          do {\n            lVar32 = *(long *)(param_1 + 0x360);\n            uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }\n            else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }\n            fVar36 = _DAT_003fa400;\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }\n            uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }\n            else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }\n            param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n            param_5 = param_5 + param_2[6] + 4;\n            uVar34 = uVar34 + 1;\n          } while (uVar34 != param_3);\n          return;\n        }\n        uVar34 = 0;\n        if ((long)param_3 < 1) {\n          return;\n        }\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n          if (NAN(fVar36)) {\n            uVar19 = 0;\n          }\n          else {\n            uVar19 = 0;\n            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = (byte)uVar19;\n            param_5[1] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = (byte)uVar19;\n          }\n          uVar19 = 0xffff;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            if (NAN(fVar36)) {\n              uVar19 = 0;\n            }\n            else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            param_5[2] = (byte)uVar19;\n            param_5[3] = bVar17;\n          }\n          else {\n            param_5[2] = bVar17;\n            param_5[3] = (byte)uVar19;\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 4;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      goto LAB_002734da;\n    }\n    if ((int)param_2[2] == 1) {\n      if ((long)param_3 < 1) {\n        return;\n      }\n      uVar34 = 0;\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        dVar4 = (double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                (double)param_2[0xd] + (double)param_2[3];\n        bVar18 = (byte)((ulong)dVar4 >> 8);\n        bVar23 = (byte)((ulong)dVar4 >> 0x10);\n        bVar24 = (byte)((ulong)dVar4 >> 0x18);\n        bVar25 = (byte)((ulong)dVar4 >> 0x20);\n        bVar26 = (byte)((ulong)dVar4 >> 0x28);\n        bVar27 = (byte)((ulong)dVar4 >> 0x30);\n        bVar17 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = SUB81(dVar4,0);\n          param_5[1] = bVar18;\n          param_5[2] = bVar23;\n          param_5[3] = bVar24;\n          param_5[4] = bVar25;\n          param_5[5] = bVar26;\n          param_5[6] = bVar27;\n          param_5[7] = bVar17;\n        }\n        else {\n          *param_5 = bVar17;\n          param_5[1] = bVar27;\n          param_5[2] = bVar26;\n          param_5[3] = bVar25;\n          param_5[4] = bVar24;\n          param_5[5] = bVar23;\n          param_5[6] = bVar18;\n          param_5[7] = SUB81(dVar4,0);\n        }\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        dVar4 = (double)fVar37 * (double)param_2[0xd] + (double)param_2[3];\n        bVar17 = (byte)((ulong)dVar4 >> 8);\n        bVar18 = (byte)((ulong)dVar4 >> 0x10);\n        bVar27 = (byte)((ulong)dVar4 >> 0x18);\n        bVar26 = (byte)((ulong)dVar4 >> 0x20);\n        bVar25 = (byte)((ulong)dVar4 >> 0x28);\n        bVar24 = (byte)((ulong)dVar4 >> 0x30);\n        bVar23 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          param_5[8] = SUB81(dVar4,0);\n          param_5[9] = bVar17;\n          param_5[10] = bVar18;\n          param_5[0xb] = bVar27;\n          param_5[0xc] = bVar26;\n          param_5[0xd] = bVar25;\n          param_5[0xe] = bVar24;\n          param_5[0xf] = bVar23;\n        }\n        else {\n          param_5[8] = bVar23;\n          param_5[9] = bVar24;\n          param_5[10] = bVar25;\n          param_5[0xb] = bVar26;\n          param_5[0xc] = bVar27;\n          param_5[0xd] = bVar18;\n          param_5[0xe] = bVar17;\n          param_5[0xf] = SUB81(dVar4,0);\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 0x10;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }\n  }" else (compound_statement "{\n    if (uVar34 == 0x20) {\n      if ((int)param_2[2] == 1) {\n        if ((long)param_3 < 1) {\n          return;\n        }\n        uVar34 = 0;\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar37 = (float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3]);\n          bVar18 = (byte)((uint)fVar37 >> 8);\n          bVar27 = (byte)((uint)fVar37 >> 0x10);\n          bVar17 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = SUB41(fVar37,0);\n            param_5[1] = bVar18;\n            param_5[2] = bVar27;\n            param_5[3] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = bVar27;\n            param_5[2] = bVar18;\n            param_5[3] = SUB41(fVar37,0);\n          }\n          fVar37 = fVar36;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          fVar37 = (float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3]);\n          bVar17 = (byte)((uint)fVar37 >> 8);\n          bVar18 = (byte)((uint)fVar37 >> 0x10);\n          bVar27 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            param_5[4] = SUB41(fVar37,0);\n            param_5[5] = bVar17;\n            param_5[6] = bVar18;\n            param_5[7] = bVar27;\n          }\n          else {\n            param_5[4] = bVar27;\n            param_5[5] = bVar18;\n            param_5[6] = bVar17;\n            param_5[7] = SUB41(fVar37,0);\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 8;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      uVar34 = 0;\n      if ((long)param_3 < 1) {\n        return;\n      }\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar36)) {\n          uVar20 = 0;\n        }\n        else {\n          uVar20 = 0;\n          if ((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)) {\n            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = (byte)uVar20;\n          param_5[1] = bVar17;\n          param_5[2] = bVar18;\n          param_5[3] = bVar27;\n        }\n        else {\n          *param_5 = bVar27;\n          param_5[1] = bVar18;\n          param_5[2] = bVar17;\n          param_5[3] = (byte)uVar20;\n        }\n        uVar20 = 0xffffffff;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          if (NAN(fVar36)) {\n            uVar20 = 0;\n          }\n          else {\n            uVar20 = 0;\n            if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          param_5[4] = (byte)uVar20;\n          param_5[5] = bVar17;\n          param_5[6] = bVar18;\n          param_5[7] = bVar27;\n        }\n        else {\n          param_5[4] = bVar27;\n          param_5[5] = bVar18;\n          param_5[6] = bVar17;\n          param_5[7] = (byte)uVar20;\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 8;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }\n    if (uVar34 != 0x40) {\n      if (uVar34 == 0x10) {\n        if ((int)param_2[2] == 1) {\n          if ((long)param_3 < 1) {\n            return;\n          }\n          uVar34 = 0;\n          do {\n            lVar32 = *(long *)(param_1 + 0x360);\n            uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }\n            else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }\n            fVar36 = _DAT_003fa400;\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }\n            uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }\n            else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }\n            param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n            param_5 = param_5 + param_2[6] + 4;\n            uVar34 = uVar34 + 1;\n          } while (uVar34 != param_3);\n          return;\n        }\n        uVar34 = 0;\n        if ((long)param_3 < 1) {\n          return;\n        }\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n          if (NAN(fVar36)) {\n            uVar19 = 0;\n          }\n          else {\n            uVar19 = 0;\n            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = (byte)uVar19;\n            param_5[1] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = (byte)uVar19;\n          }\n          uVar19 = 0xffff;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            if (NAN(fVar36)) {\n              uVar19 = 0;\n            }\n            else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            param_5[2] = (byte)uVar19;\n            param_5[3] = bVar17;\n          }\n          else {\n            param_5[2] = bVar17;\n            param_5[3] = (byte)uVar19;\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 4;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      goto LAB_002734da;\n    }\n    if ((int)param_2[2] == 1) {\n      if ((long)param_3 < 1) {\n        return;\n      }\n      uVar34 = 0;\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        dVar4 = (double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                (double)param_2[0xd] + (double)param_2[3];\n        bVar18 = (byte)((ulong)dVar4 >> 8);\n        bVar23 = (byte)((ulong)dVar4 >> 0x10);\n        bVar24 = (byte)((ulong)dVar4 >> 0x18);\n        bVar25 = (byte)((ulong)dVar4 >> 0x20);\n        bVar26 = (byte)((ulong)dVar4 >> 0x28);\n        bVar27 = (byte)((ulong)dVar4 >> 0x30);\n        bVar17 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = SUB81(dVar4,0);\n          param_5[1] = bVar18;\n          param_5[2] = bVar23;\n          param_5[3] = bVar24;\n          param_5[4] = bVar25;\n          param_5[5] = bVar26;\n          param_5[6] = bVar27;\n          param_5[7] = bVar17;\n        }\n        else {\n          *param_5 = bVar17;\n          param_5[1] = bVar27;\n          param_5[2] = bVar26;\n          param_5[3] = bVar25;\n          param_5[4] = bVar24;\n          param_5[5] = bVar23;\n          param_5[6] = bVar18;\n          param_5[7] = SUB81(dVar4,0);\n        }\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        dVar4 = (double)fVar37 * (double)param_2[0xd] + (double)param_2[3];\n        bVar17 = (byte)((ulong)dVar4 >> 8);\n        bVar18 = (byte)((ulong)dVar4 >> 0x10);\n        bVar27 = (byte)((ulong)dVar4 >> 0x18);\n        bVar26 = (byte)((ulong)dVar4 >> 0x20);\n        bVar25 = (byte)((ulong)dVar4 >> 0x28);\n        bVar24 = (byte)((ulong)dVar4 >> 0x30);\n        bVar23 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          param_5[8] = SUB81(dVar4,0);\n          param_5[9] = bVar17;\n          param_5[10] = bVar18;\n          param_5[0xb] = bVar27;\n          param_5[0xc] = bVar26;\n          param_5[0xd] = bVar25;\n          param_5[0xe] = bVar24;\n          param_5[0xf] = bVar23;\n        }\n        else {\n          param_5[8] = bVar23;\n          param_5[9] = bVar24;\n          param_5[10] = bVar25;\n          param_5[0xb] = bVar26;\n          param_5[0xc] = bVar27;\n          param_5[0xd] = bVar18;\n          param_5[0xe] = bVar17;\n          param_5[0xf] = SUB81(dVar4,0);\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 0x10;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }\n  }" { (if_statement "if (uVar34 == 0x20) {\n      if ((int)param_2[2] == 1) {\n        if ((long)param_3 < 1) {\n          return;\n        }\n        uVar34 = 0;\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar37 = (float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3]);\n          bVar18 = (byte)((uint)fVar37 >> 8);\n          bVar27 = (byte)((uint)fVar37 >> 0x10);\n          bVar17 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = SUB41(fVar37,0);\n            param_5[1] = bVar18;\n            param_5[2] = bVar27;\n            param_5[3] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = bVar27;\n            param_5[2] = bVar18;\n            param_5[3] = SUB41(fVar37,0);\n          }\n          fVar37 = fVar36;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          fVar37 = (float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3]);\n          bVar17 = (byte)((uint)fVar37 >> 8);\n          bVar18 = (byte)((uint)fVar37 >> 0x10);\n          bVar27 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            param_5[4] = SUB41(fVar37,0);\n            param_5[5] = bVar17;\n            param_5[6] = bVar18;\n            param_5[7] = bVar27;\n          }\n          else {\n            param_5[4] = bVar27;\n            param_5[5] = bVar18;\n            param_5[6] = bVar17;\n            param_5[7] = SUB41(fVar37,0);\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 8;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      uVar34 = 0;\n      if ((long)param_3 < 1) {\n        return;\n      }\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar36)) {\n          uVar20 = 0;\n        }\n        else {\n          uVar20 = 0;\n          if ((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)) {\n            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = (byte)uVar20;\n          param_5[1] = bVar17;\n          param_5[2] = bVar18;\n          param_5[3] = bVar27;\n        }\n        else {\n          *param_5 = bVar27;\n          param_5[1] = bVar18;\n          param_5[2] = bVar17;\n          param_5[3] = (byte)uVar20;\n        }\n        uVar20 = 0xffffffff;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          if (NAN(fVar36)) {\n            uVar20 = 0;\n          }\n          else {\n            uVar20 = 0;\n            if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          param_5[4] = (byte)uVar20;\n          param_5[5] = bVar17;\n          param_5[6] = bVar18;\n          param_5[7] = bVar27;\n        }\n        else {\n          param_5[4] = bVar27;\n          param_5[5] = bVar18;\n          param_5[6] = bVar17;\n          param_5[7] = (byte)uVar20;\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 8;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }" if (parenthesized_expression "(uVar34 == 0x20)" ( (binary_expression "uVar34 == 0x20" identifier == number_literal) )) (compound_statement "{\n      if ((int)param_2[2] == 1) {\n        if ((long)param_3 < 1) {\n          return;\n        }\n        uVar34 = 0;\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar37 = (float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3]);\n          bVar18 = (byte)((uint)fVar37 >> 8);\n          bVar27 = (byte)((uint)fVar37 >> 0x10);\n          bVar17 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = SUB41(fVar37,0);\n            param_5[1] = bVar18;\n            param_5[2] = bVar27;\n            param_5[3] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = bVar27;\n            param_5[2] = bVar18;\n            param_5[3] = SUB41(fVar37,0);\n          }\n          fVar37 = fVar36;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          fVar37 = (float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3]);\n          bVar17 = (byte)((uint)fVar37 >> 8);\n          bVar18 = (byte)((uint)fVar37 >> 0x10);\n          bVar27 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            param_5[4] = SUB41(fVar37,0);\n            param_5[5] = bVar17;\n            param_5[6] = bVar18;\n            param_5[7] = bVar27;\n          }\n          else {\n            param_5[4] = bVar27;\n            param_5[5] = bVar18;\n            param_5[6] = bVar17;\n            param_5[7] = SUB41(fVar37,0);\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 8;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      uVar34 = 0;\n      if ((long)param_3 < 1) {\n        return;\n      }\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar36)) {\n          uVar20 = 0;\n        }\n        else {\n          uVar20 = 0;\n          if ((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)) {\n            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = (byte)uVar20;\n          param_5[1] = bVar17;\n          param_5[2] = bVar18;\n          param_5[3] = bVar27;\n        }\n        else {\n          *param_5 = bVar27;\n          param_5[1] = bVar18;\n          param_5[2] = bVar17;\n          param_5[3] = (byte)uVar20;\n        }\n        uVar20 = 0xffffffff;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          if (NAN(fVar36)) {\n            uVar20 = 0;\n          }\n          else {\n            uVar20 = 0;\n            if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          param_5[4] = (byte)uVar20;\n          param_5[5] = bVar17;\n          param_5[6] = bVar18;\n          param_5[7] = bVar27;\n        }\n        else {\n          param_5[4] = bVar27;\n          param_5[5] = bVar18;\n          param_5[6] = bVar17;\n          param_5[7] = (byte)uVar20;\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 8;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }" { (if_statement "if ((int)param_2[2] == 1) {\n        if ((long)param_3 < 1) {\n          return;\n        }\n        uVar34 = 0;\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar37 = (float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3]);\n          bVar18 = (byte)((uint)fVar37 >> 8);\n          bVar27 = (byte)((uint)fVar37 >> 0x10);\n          bVar17 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = SUB41(fVar37,0);\n            param_5[1] = bVar18;\n            param_5[2] = bVar27;\n            param_5[3] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = bVar27;\n            param_5[2] = bVar18;\n            param_5[3] = SUB41(fVar37,0);\n          }\n          fVar37 = fVar36;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          fVar37 = (float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3]);\n          bVar17 = (byte)((uint)fVar37 >> 8);\n          bVar18 = (byte)((uint)fVar37 >> 0x10);\n          bVar27 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            param_5[4] = SUB41(fVar37,0);\n            param_5[5] = bVar17;\n            param_5[6] = bVar18;\n            param_5[7] = bVar27;\n          }\n          else {\n            param_5[4] = bVar27;\n            param_5[5] = bVar18;\n            param_5[6] = bVar17;\n            param_5[7] = SUB41(fVar37,0);\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 8;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }" if (parenthesized_expression "((int)param_2[2] == 1)" ( (binary_expression "(int)param_2[2] == 1" (cast_expression "(int)param_2[2]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n        if ((long)param_3 < 1) {\n          return;\n        }\n        uVar34 = 0;\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar37 = (float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3]);\n          bVar18 = (byte)((uint)fVar37 >> 8);\n          bVar27 = (byte)((uint)fVar37 >> 0x10);\n          bVar17 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = SUB41(fVar37,0);\n            param_5[1] = bVar18;\n            param_5[2] = bVar27;\n            param_5[3] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = bVar27;\n            param_5[2] = bVar18;\n            param_5[3] = SUB41(fVar37,0);\n          }\n          fVar37 = fVar36;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          fVar37 = (float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3]);\n          bVar17 = (byte)((uint)fVar37 >> 8);\n          bVar18 = (byte)((uint)fVar37 >> 0x10);\n          bVar27 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            param_5[4] = SUB41(fVar37,0);\n            param_5[5] = bVar17;\n            param_5[6] = bVar18;\n            param_5[7] = bVar27;\n          }\n          else {\n            param_5[4] = bVar27;\n            param_5[5] = bVar18;\n            param_5[6] = bVar17;\n            param_5[7] = SUB41(fVar37,0);\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 8;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }" { (if_statement "if ((long)param_3 < 1) {\n          return;\n        }" if (parenthesized_expression "((long)param_3 < 1)" ( (binary_expression "(long)param_3 < 1" (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "uVar34 = 0;" (assignment_expression "uVar34 = 0" identifier = number_literal) ;) (do_statement "do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar37 = (float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3]);\n          bVar18 = (byte)((uint)fVar37 >> 8);\n          bVar27 = (byte)((uint)fVar37 >> 0x10);\n          bVar17 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = SUB41(fVar37,0);\n            param_5[1] = bVar18;\n            param_5[2] = bVar27;\n            param_5[3] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = bVar27;\n            param_5[2] = bVar18;\n            param_5[3] = SUB41(fVar37,0);\n          }\n          fVar37 = fVar36;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          fVar37 = (float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3]);\n          bVar17 = (byte)((uint)fVar37 >> 8);\n          bVar18 = (byte)((uint)fVar37 >> 0x10);\n          bVar27 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            param_5[4] = SUB41(fVar37,0);\n            param_5[5] = bVar17;\n            param_5[6] = bVar18;\n            param_5[7] = bVar27;\n          }\n          else {\n            param_5[4] = bVar27;\n            param_5[5] = bVar18;\n            param_5[6] = bVar17;\n            param_5[7] = SUB41(fVar37,0);\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 8;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);" do (compound_statement "{\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar37 = (float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3]);\n          bVar18 = (byte)((uint)fVar37 >> 8);\n          bVar27 = (byte)((uint)fVar37 >> 0x10);\n          bVar17 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = SUB41(fVar37,0);\n            param_5[1] = bVar18;\n            param_5[2] = bVar27;\n            param_5[3] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = bVar27;\n            param_5[2] = bVar18;\n            param_5[3] = SUB41(fVar37,0);\n          }\n          fVar37 = fVar36;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          fVar37 = (float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3]);\n          bVar17 = (byte)((uint)fVar37 >> 8);\n          bVar18 = (byte)((uint)fVar37 >> 0x10);\n          bVar27 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            param_5[4] = SUB41(fVar37,0);\n            param_5[5] = bVar17;\n            param_5[6] = bVar18;\n            param_5[7] = bVar27;\n          }\n          else {\n            param_5[4] = bVar27;\n            param_5[5] = bVar18;\n            param_5[6] = bVar17;\n            param_5[7] = SUB41(fVar37,0);\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 8;\n          uVar34 = uVar34 + 1;\n        }" { (expression_statement "lVar32 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar32 = *(long *)(param_1 + 0x360)" identifier = (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "fVar37 = (float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3]);" (assignment_expression "fVar37 = (float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3])" identifier = (cast_expression "(float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3])" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3])" ( (binary_expression "(double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3]" (binary_expression "(double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd]" (cast_expression "(double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4))" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4))" ( (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x18) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x18) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x18) * 4" (pointer_expression "*(long *)(lVar32 + 0x18)" * (cast_expression "(long *)(lVar32 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x18)" ( (binary_expression "lVar32 + 0x18" identifier + number_literal) )))) * number_literal)) ))))) + (binary_expression "fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 8) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 8) * 4" identifier + (binary_expression "*(long *)(lVar32 + 8) * 4" (pointer_expression "*(long *)(lVar32 + 8)" * (cast_expression "(long *)(lVar32 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 8)" ( (binary_expression "lVar32 + 8" identifier + number_literal) )))) * number_literal)) )))))) + (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x28) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x28) * 4" (pointer_expression "*(long *)(lVar32 + 0x28)" * (cast_expression "(long *)(lVar32 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x28)" ( (binary_expression "lVar32 + 0x28" identifier + number_literal) )))) * number_literal)) )))))) ))) * (cast_expression "(double)param_2[0xd]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "param_2[0xd]" identifier [ number_literal ]))) + (cast_expression "(double)param_2[3]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )))) ;) (expression_statement "bVar18 = (byte)((uint)fVar37 >> 8);" (assignment_expression "bVar18 = (byte)((uint)fVar37 >> 8)" identifier = (call_expression "(byte)((uint)fVar37 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar37 >> 8)" ( (binary_expression "(uint)fVar37 >> 8" (cast_expression "(uint)fVar37" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar27 = (byte)((uint)fVar37 >> 0x10);" (assignment_expression "bVar27 = (byte)((uint)fVar37 >> 0x10)" identifier = (call_expression "(byte)((uint)fVar37 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar37 >> 0x10)" ( (binary_expression "(uint)fVar37 >> 0x10" (cast_expression "(uint)fVar37" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar17 = (byte)((uint)fVar37 >> 0x18);" (assignment_expression "bVar17 = (byte)((uint)fVar37 >> 0x18)" identifier = (call_expression "(byte)((uint)fVar37 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar37 >> 0x18)" ( (binary_expression "(uint)fVar37 >> 0x18" (cast_expression "(uint)fVar37" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if ((int)param_2[0xc] == 1) {\n            *param_5 = SUB41(fVar37,0);\n            param_5[1] = bVar18;\n            param_5[2] = bVar27;\n            param_5[3] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = bVar27;\n            param_5[2] = bVar18;\n            param_5[3] = SUB41(fVar37,0);\n          }" if (parenthesized_expression "((int)param_2[0xc] == 1)" ( (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[0xc]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n            *param_5 = SUB41(fVar37,0);\n            param_5[1] = bVar18;\n            param_5[2] = bVar27;\n            param_5[3] = bVar17;\n          }" { (expression_statement "*param_5 = SUB41(fVar37,0);" (assignment_expression "*param_5 = SUB41(fVar37,0)" (pointer_expression "*param_5" * identifier) = (call_expression "SUB41(fVar37,0)" identifier (argument_list "(fVar37,0)" ( identifier , number_literal )))) ;) (expression_statement "param_5[1] = bVar18;" (assignment_expression "param_5[1] = bVar18" (subscript_expression "param_5[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[2] = bVar27;" (assignment_expression "param_5[2] = bVar27" (subscript_expression "param_5[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[3] = bVar17;" (assignment_expression "param_5[3] = bVar17" (subscript_expression "param_5[3]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            *param_5 = bVar17;\n            param_5[1] = bVar27;\n            param_5[2] = bVar18;\n            param_5[3] = SUB41(fVar37,0);\n          }" else (compound_statement "{\n            *param_5 = bVar17;\n            param_5[1] = bVar27;\n            param_5[2] = bVar18;\n            param_5[3] = SUB41(fVar37,0);\n          }" { (expression_statement "*param_5 = bVar17;" (assignment_expression "*param_5 = bVar17" (pointer_expression "*param_5" * identifier) = identifier) ;) (expression_statement "param_5[1] = bVar27;" (assignment_expression "param_5[1] = bVar27" (subscript_expression "param_5[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[2] = bVar18;" (assignment_expression "param_5[2] = bVar18" (subscript_expression "param_5[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[3] = SUB41(fVar37,0);" (assignment_expression "param_5[3] = SUB41(fVar37,0)" (subscript_expression "param_5[3]" identifier [ number_literal ]) = (call_expression "SUB41(fVar37,0)" identifier (argument_list "(fVar37,0)" ( identifier , number_literal )))) ;) }))) (expression_statement "fVar37 = fVar36;" (assignment_expression "fVar37 = fVar36" identifier = identifier) ;) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }" if (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0)" ( (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44)" * (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x44)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x44" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n            fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }" { (expression_statement "fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);" (assignment_expression "fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" identifier = (pointer_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (binary_expression "param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" identifier + (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48)" * (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x48)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x48" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) })) (expression_statement "fVar37 = (float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3]);" (assignment_expression "fVar37 = (float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3])" identifier = (cast_expression "(float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3])" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((double)fVar37 * (double)param_2[0xd] + (double)param_2[3])" ( (binary_expression "(double)fVar37 * (double)param_2[0xd] + (double)param_2[3]" (binary_expression "(double)fVar37 * (double)param_2[0xd]" (cast_expression "(double)fVar37" ( (type_descriptor "double" primitive_type) ) identifier) * (cast_expression "(double)param_2[0xd]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "param_2[0xd]" identifier [ number_literal ]))) + (cast_expression "(double)param_2[3]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )))) ;) (expression_statement "bVar17 = (byte)((uint)fVar37 >> 8);" (assignment_expression "bVar17 = (byte)((uint)fVar37 >> 8)" identifier = (call_expression "(byte)((uint)fVar37 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar37 >> 8)" ( (binary_expression "(uint)fVar37 >> 8" (cast_expression "(uint)fVar37" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar18 = (byte)((uint)fVar37 >> 0x10);" (assignment_expression "bVar18 = (byte)((uint)fVar37 >> 0x10)" identifier = (call_expression "(byte)((uint)fVar37 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar37 >> 0x10)" ( (binary_expression "(uint)fVar37 >> 0x10" (cast_expression "(uint)fVar37" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar27 = (byte)((uint)fVar37 >> 0x18);" (assignment_expression "bVar27 = (byte)((uint)fVar37 >> 0x18)" identifier = (call_expression "(byte)((uint)fVar37 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar37 >> 0x18)" ( (binary_expression "(uint)fVar37 >> 0x18" (cast_expression "(uint)fVar37" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if ((int)param_2[0xc] == 1) {\n            param_5[4] = SUB41(fVar37,0);\n            param_5[5] = bVar17;\n            param_5[6] = bVar18;\n            param_5[7] = bVar27;\n          }\n          else {\n            param_5[4] = bVar27;\n            param_5[5] = bVar18;\n            param_5[6] = bVar17;\n            param_5[7] = SUB41(fVar37,0);\n          }" if (parenthesized_expression "((int)param_2[0xc] == 1)" ( (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[0xc]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n            param_5[4] = SUB41(fVar37,0);\n            param_5[5] = bVar17;\n            param_5[6] = bVar18;\n            param_5[7] = bVar27;\n          }" { (expression_statement "param_5[4] = SUB41(fVar37,0);" (assignment_expression "param_5[4] = SUB41(fVar37,0)" (subscript_expression "param_5[4]" identifier [ number_literal ]) = (call_expression "SUB41(fVar37,0)" identifier (argument_list "(fVar37,0)" ( identifier , number_literal )))) ;) (expression_statement "param_5[5] = bVar17;" (assignment_expression "param_5[5] = bVar17" (subscript_expression "param_5[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[6] = bVar18;" (assignment_expression "param_5[6] = bVar18" (subscript_expression "param_5[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[7] = bVar27;" (assignment_expression "param_5[7] = bVar27" (subscript_expression "param_5[7]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            param_5[4] = bVar27;\n            param_5[5] = bVar18;\n            param_5[6] = bVar17;\n            param_5[7] = SUB41(fVar37,0);\n          }" else (compound_statement "{\n            param_5[4] = bVar27;\n            param_5[5] = bVar18;\n            param_5[6] = bVar17;\n            param_5[7] = SUB41(fVar37,0);\n          }" { (expression_statement "param_5[4] = bVar27;" (assignment_expression "param_5[4] = bVar27" (subscript_expression "param_5[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[5] = bVar18;" (assignment_expression "param_5[5] = bVar18" (subscript_expression "param_5[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[6] = bVar17;" (assignment_expression "param_5[6] = bVar17" (subscript_expression "param_5[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[7] = SUB41(fVar37,0);" (assignment_expression "param_5[7] = SUB41(fVar37,0)" (subscript_expression "param_5[7]" identifier [ number_literal ]) = (call_expression "SUB41(fVar37,0)" identifier (argument_list "(fVar37,0)" ( identifier , number_literal )))) ;) }))) (expression_statement "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4" identifier = (binary_expression "param_4 + *(long *)(param_1 + 0x340) * 4" identifier + (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" * (cast_expression "(long *)(param_1 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "param_5 = param_5 + param_2[6] + 8;" (assignment_expression "param_5 = param_5 + param_2[6] + 8" identifier = (binary_expression "param_5 + param_2[6] + 8" (binary_expression "param_5 + param_2[6]" identifier + (subscript_expression "param_2[6]" identifier [ number_literal ])) + number_literal)) ;) (expression_statement "uVar34 = uVar34 + 1;" (assignment_expression "uVar34 = uVar34 + 1" identifier = (binary_expression "uVar34 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar34 != param_3)" ( (binary_expression "uVar34 != param_3" identifier != identifier) )) ;) (return_statement "return;" return ;) })) (expression_statement "uVar34 = 0;" (assignment_expression "uVar34 = 0" identifier = number_literal) ;) (if_statement "if ((long)param_3 < 1) {\n        return;\n      }" if (parenthesized_expression "((long)param_3 < 1)" ( (binary_expression "(long)param_3 < 1" (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (do_statement "do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar36)) {\n          uVar20 = 0;\n        }\n        else {\n          uVar20 = 0;\n          if ((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)) {\n            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = (byte)uVar20;\n          param_5[1] = bVar17;\n          param_5[2] = bVar18;\n          param_5[3] = bVar27;\n        }\n        else {\n          *param_5 = bVar27;\n          param_5[1] = bVar18;\n          param_5[2] = bVar17;\n          param_5[3] = (byte)uVar20;\n        }\n        uVar20 = 0xffffffff;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          if (NAN(fVar36)) {\n            uVar20 = 0;\n          }\n          else {\n            uVar20 = 0;\n            if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          param_5[4] = (byte)uVar20;\n          param_5[5] = bVar17;\n          param_5[6] = bVar18;\n          param_5[7] = bVar27;\n        }\n        else {\n          param_5[4] = bVar27;\n          param_5[5] = bVar18;\n          param_5[6] = bVar17;\n          param_5[7] = (byte)uVar20;\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 8;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);" do (compound_statement "{\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar36)) {\n          uVar20 = 0;\n        }\n        else {\n          uVar20 = 0;\n          if ((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)) {\n            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = (byte)uVar20;\n          param_5[1] = bVar17;\n          param_5[2] = bVar18;\n          param_5[3] = bVar27;\n        }\n        else {\n          *param_5 = bVar27;\n          param_5[1] = bVar18;\n          param_5[2] = bVar17;\n          param_5[3] = (byte)uVar20;\n        }\n        uVar20 = 0xffffffff;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          if (NAN(fVar36)) {\n            uVar20 = 0;\n          }\n          else {\n            uVar20 = 0;\n            if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          param_5[4] = (byte)uVar20;\n          param_5[5] = bVar17;\n          param_5[6] = bVar18;\n          param_5[7] = bVar27;\n        }\n        else {\n          param_5[4] = bVar27;\n          param_5[5] = bVar18;\n          param_5[6] = bVar17;\n          param_5[7] = (byte)uVar20;\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 8;\n        uVar34 = uVar34 + 1;\n      }" { (expression_statement "lVar32 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar32 = *(long *)(param_1 + 0x360)" identifier = (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);" (assignment_expression "fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" identifier = (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x18) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x18) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x18) * 4" (pointer_expression "*(long *)(lVar32 + 0x18)" * (cast_expression "(long *)(lVar32 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x18)" ( (binary_expression "lVar32 + 0x18" identifier + number_literal) )))) * number_literal)) ))))) + (binary_expression "fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 8) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 8) * 4" identifier + (binary_expression "*(long *)(lVar32 + 8) * 4" (pointer_expression "*(long *)(lVar32 + 8)" * (cast_expression "(long *)(lVar32 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 8)" ( (binary_expression "lVar32 + 8" identifier + number_literal) )))) * number_literal)) )))))) + (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x28) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x28) * 4" (pointer_expression "*(long *)(lVar32 + 0x28)" * (cast_expression "(long *)(lVar32 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x28)" ( (binary_expression "lVar32 + 0x28" identifier + number_literal) )))) * number_literal)) ))))))) ;) (if_statement "if (NAN(fVar36)) {\n          uVar20 = 0;\n        }\n        else {\n          uVar20 = 0;\n          if ((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)) {\n            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);\n          }\n        }" if (parenthesized_expression "(NAN(fVar36))" ( (call_expression "NAN(fVar36)" identifier (argument_list "(fVar36)" ( identifier ))) )) (compound_statement "{\n          uVar20 = 0;\n        }" { (expression_statement "uVar20 = 0;" (assignment_expression "uVar20 = 0" identifier = number_literal) ;) }) (else_clause "else {\n          uVar20 = 0;\n          if ((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)) {\n            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);\n          }\n        }" else (compound_statement "{\n          uVar20 = 0;\n          if ((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)) {\n            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);\n          }\n        }" { (expression_statement "uVar20 = 0;" (assignment_expression "uVar20 = 0" identifier = number_literal) ;) (if_statement "if ((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)) {\n            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);\n          }" if (parenthesized_expression "((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10))" ( (binary_expression "(0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)" (parenthesized_expression "(0.0 < fVar36)" ( (binary_expression "0.0 < fVar36" number_literal < identifier) )) && (parenthesized_expression "(uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)" ( (comma_expression "uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10" (assignment_expression "uVar20 = 0xffffffff" identifier = number_literal) , (binary_expression "(double)fVar36 * dVar5 < dVar10" (binary_expression "(double)fVar36 * dVar5" (cast_expression "(double)fVar36" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) < identifier)) ))) )) (compound_statement "{\n            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);\n          }" { (expression_statement "uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);" (assignment_expression "uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7)" identifier = (call_expression "(undefined4)(long)((double)fVar36 * dVar5 + dVar7)" (call_expression "(undefined4)(long)" (parenthesized_expression "(undefined4)" ( identifier )) (argument_list "(long)" ( identifier ))) (argument_list "((double)fVar36 * dVar5 + dVar7)" ( (binary_expression "(double)fVar36 * dVar5 + dVar7" (binary_expression "(double)fVar36 * dVar5" (cast_expression "(double)fVar36" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) + identifier) )))) ;) })) }))) (expression_statement "bVar17 = (byte)((uint)uVar20 >> 8);" (assignment_expression "bVar17 = (byte)((uint)uVar20 >> 8)" identifier = (call_expression "(byte)((uint)uVar20 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)uVar20 >> 8)" ( (binary_expression "(uint)uVar20 >> 8" (cast_expression "(uint)uVar20" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar18 = (byte)((uint)uVar20 >> 0x10);" (assignment_expression "bVar18 = (byte)((uint)uVar20 >> 0x10)" identifier = (call_expression "(byte)((uint)uVar20 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)uVar20 >> 0x10)" ( (binary_expression "(uint)uVar20 >> 0x10" (cast_expression "(uint)uVar20" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar27 = (byte)((uint)uVar20 >> 0x18);" (assignment_expression "bVar27 = (byte)((uint)uVar20 >> 0x18)" identifier = (call_expression "(byte)((uint)uVar20 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)uVar20 >> 0x18)" ( (binary_expression "(uint)uVar20 >> 0x18" (cast_expression "(uint)uVar20" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if ((int)param_2[0xc] == 1) {\n          *param_5 = (byte)uVar20;\n          param_5[1] = bVar17;\n          param_5[2] = bVar18;\n          param_5[3] = bVar27;\n        }\n        else {\n          *param_5 = bVar27;\n          param_5[1] = bVar18;\n          param_5[2] = bVar17;\n          param_5[3] = (byte)uVar20;\n        }" if (parenthesized_expression "((int)param_2[0xc] == 1)" ( (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[0xc]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n          *param_5 = (byte)uVar20;\n          param_5[1] = bVar17;\n          param_5[2] = bVar18;\n          param_5[3] = bVar27;\n        }" { (expression_statement "*param_5 = (byte)uVar20;" (assignment_expression "*param_5 = (byte)uVar20" (pointer_expression "*param_5" * identifier) = (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "param_5[1] = bVar17;" (assignment_expression "param_5[1] = bVar17" (subscript_expression "param_5[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[2] = bVar18;" (assignment_expression "param_5[2] = bVar18" (subscript_expression "param_5[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[3] = bVar27;" (assignment_expression "param_5[3] = bVar27" (subscript_expression "param_5[3]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n          *param_5 = bVar27;\n          param_5[1] = bVar18;\n          param_5[2] = bVar17;\n          param_5[3] = (byte)uVar20;\n        }" else (compound_statement "{\n          *param_5 = bVar27;\n          param_5[1] = bVar18;\n          param_5[2] = bVar17;\n          param_5[3] = (byte)uVar20;\n        }" { (expression_statement "*param_5 = bVar27;" (assignment_expression "*param_5 = bVar27" (pointer_expression "*param_5" * identifier) = identifier) ;) (expression_statement "param_5[1] = bVar18;" (assignment_expression "param_5[1] = bVar18" (subscript_expression "param_5[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[2] = bVar17;" (assignment_expression "param_5[2] = bVar17" (subscript_expression "param_5[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[3] = (byte)uVar20;" (assignment_expression "param_5[3] = (byte)uVar20" (subscript_expression "param_5[3]" identifier [ number_literal ]) = (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }))) (expression_statement "uVar20 = 0xffffffff;" (assignment_expression "uVar20 = 0xffffffff" identifier = number_literal) ;) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          if (NAN(fVar36)) {\n            uVar20 = 0;\n          }\n          else {\n            uVar20 = 0;\n            if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }" if (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0)" ( (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44)" * (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x44)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x44" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n          fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          if (NAN(fVar36)) {\n            uVar20 = 0;\n          }\n          else {\n            uVar20 = 0;\n            if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }" { (expression_statement "fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);" (assignment_expression "fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" identifier = (pointer_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (binary_expression "param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" identifier + (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48)" * (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x48)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x48" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (NAN(fVar36)) {\n            uVar20 = 0;\n          }\n          else {\n            uVar20 = 0;\n            if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }\n          }" if (parenthesized_expression "(NAN(fVar36))" ( (call_expression "NAN(fVar36)" identifier (argument_list "(fVar36)" ( identifier ))) )) (compound_statement "{\n            uVar20 = 0;\n          }" { (expression_statement "uVar20 = 0;" (assignment_expression "uVar20 = 0" identifier = number_literal) ;) }) (else_clause "else {\n            uVar20 = 0;\n            if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }\n          }" else (compound_statement "{\n            uVar20 = 0;\n            if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }\n          }" { (expression_statement "uVar20 = 0;" (assignment_expression "uVar20 = 0" identifier = number_literal) ;) (if_statement "if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }" if (parenthesized_expression "((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928))" ( (binary_expression "(0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)" (parenthesized_expression "(0.0 < fVar36)" ( (binary_expression "0.0 < fVar36" number_literal < identifier) )) && (parenthesized_expression "(uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)" ( (comma_expression "uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928" (assignment_expression "uVar20 = 0xffffffff" identifier = number_literal) , (binary_expression "(double)fVar36 * DAT_00404920 < DAT_00404928" (binary_expression "(double)fVar36 * DAT_00404920" (cast_expression "(double)fVar36" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) < identifier)) ))) )) (compound_statement "{\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }" { (expression_statement "uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);" (assignment_expression "uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28)" identifier = (cast_expression "(int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28)" ( (type_descriptor "int" primitive_type) ) (cast_expression "(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "((double)fVar36 * DAT_00404920 + DAT_003f9c28)" ( (binary_expression "(double)fVar36 * DAT_00404920 + DAT_003f9c28" (binary_expression "(double)fVar36 * DAT_00404920" (cast_expression "(double)fVar36" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) + identifier) ))))) ;) })) }))) })) (expression_statement "bVar17 = (byte)((uint)uVar20 >> 8);" (assignment_expression "bVar17 = (byte)((uint)uVar20 >> 8)" identifier = (call_expression "(byte)((uint)uVar20 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)uVar20 >> 8)" ( (binary_expression "(uint)uVar20 >> 8" (cast_expression "(uint)uVar20" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar18 = (byte)((uint)uVar20 >> 0x10);" (assignment_expression "bVar18 = (byte)((uint)uVar20 >> 0x10)" identifier = (call_expression "(byte)((uint)uVar20 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)uVar20 >> 0x10)" ( (binary_expression "(uint)uVar20 >> 0x10" (cast_expression "(uint)uVar20" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar27 = (byte)((uint)uVar20 >> 0x18);" (assignment_expression "bVar27 = (byte)((uint)uVar20 >> 0x18)" identifier = (call_expression "(byte)((uint)uVar20 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)uVar20 >> 0x18)" ( (binary_expression "(uint)uVar20 >> 0x18" (cast_expression "(uint)uVar20" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if ((int)param_2[0xc] == 1) {\n          param_5[4] = (byte)uVar20;\n          param_5[5] = bVar17;\n          param_5[6] = bVar18;\n          param_5[7] = bVar27;\n        }\n        else {\n          param_5[4] = bVar27;\n          param_5[5] = bVar18;\n          param_5[6] = bVar17;\n          param_5[7] = (byte)uVar20;\n        }" if (parenthesized_expression "((int)param_2[0xc] == 1)" ( (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[0xc]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n          param_5[4] = (byte)uVar20;\n          param_5[5] = bVar17;\n          param_5[6] = bVar18;\n          param_5[7] = bVar27;\n        }" { (expression_statement "param_5[4] = (byte)uVar20;" (assignment_expression "param_5[4] = (byte)uVar20" (subscript_expression "param_5[4]" identifier [ number_literal ]) = (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "param_5[5] = bVar17;" (assignment_expression "param_5[5] = bVar17" (subscript_expression "param_5[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[6] = bVar18;" (assignment_expression "param_5[6] = bVar18" (subscript_expression "param_5[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[7] = bVar27;" (assignment_expression "param_5[7] = bVar27" (subscript_expression "param_5[7]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n          param_5[4] = bVar27;\n          param_5[5] = bVar18;\n          param_5[6] = bVar17;\n          param_5[7] = (byte)uVar20;\n        }" else (compound_statement "{\n          param_5[4] = bVar27;\n          param_5[5] = bVar18;\n          param_5[6] = bVar17;\n          param_5[7] = (byte)uVar20;\n        }" { (expression_statement "param_5[4] = bVar27;" (assignment_expression "param_5[4] = bVar27" (subscript_expression "param_5[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[5] = bVar18;" (assignment_expression "param_5[5] = bVar18" (subscript_expression "param_5[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[6] = bVar17;" (assignment_expression "param_5[6] = bVar17" (subscript_expression "param_5[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[7] = (byte)uVar20;" (assignment_expression "param_5[7] = (byte)uVar20" (subscript_expression "param_5[7]" identifier [ number_literal ]) = (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }))) (expression_statement "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4" identifier = (binary_expression "param_4 + *(long *)(param_1 + 0x340) * 4" identifier + (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" * (cast_expression "(long *)(param_1 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "param_5 = param_5 + param_2[6] + 8;" (assignment_expression "param_5 = param_5 + param_2[6] + 8" identifier = (binary_expression "param_5 + param_2[6] + 8" (binary_expression "param_5 + param_2[6]" identifier + (subscript_expression "param_2[6]" identifier [ number_literal ])) + number_literal)) ;) (expression_statement "uVar34 = uVar34 + 1;" (assignment_expression "uVar34 = uVar34 + 1" identifier = (binary_expression "uVar34 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar34 != param_3)" ( (binary_expression "uVar34 != param_3" identifier != identifier) )) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar34 != 0x40) {\n      if (uVar34 == 0x10) {\n        if ((int)param_2[2] == 1) {\n          if ((long)param_3 < 1) {\n            return;\n          }\n          uVar34 = 0;\n          do {\n            lVar32 = *(long *)(param_1 + 0x360);\n            uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }\n            else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }\n            fVar36 = _DAT_003fa400;\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }\n            uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }\n            else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }\n            param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n            param_5 = param_5 + param_2[6] + 4;\n            uVar34 = uVar34 + 1;\n          } while (uVar34 != param_3);\n          return;\n        }\n        uVar34 = 0;\n        if ((long)param_3 < 1) {\n          return;\n        }\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n          if (NAN(fVar36)) {\n            uVar19 = 0;\n          }\n          else {\n            uVar19 = 0;\n            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = (byte)uVar19;\n            param_5[1] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = (byte)uVar19;\n          }\n          uVar19 = 0xffff;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            if (NAN(fVar36)) {\n              uVar19 = 0;\n            }\n            else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            param_5[2] = (byte)uVar19;\n            param_5[3] = bVar17;\n          }\n          else {\n            param_5[2] = bVar17;\n            param_5[3] = (byte)uVar19;\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 4;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      goto LAB_002734da;\n    }" if (parenthesized_expression "(uVar34 != 0x40)" ( (binary_expression "uVar34 != 0x40" identifier != number_literal) )) (compound_statement "{\n      if (uVar34 == 0x10) {\n        if ((int)param_2[2] == 1) {\n          if ((long)param_3 < 1) {\n            return;\n          }\n          uVar34 = 0;\n          do {\n            lVar32 = *(long *)(param_1 + 0x360);\n            uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }\n            else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }\n            fVar36 = _DAT_003fa400;\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }\n            uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }\n            else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }\n            param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n            param_5 = param_5 + param_2[6] + 4;\n            uVar34 = uVar34 + 1;\n          } while (uVar34 != param_3);\n          return;\n        }\n        uVar34 = 0;\n        if ((long)param_3 < 1) {\n          return;\n        }\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n          if (NAN(fVar36)) {\n            uVar19 = 0;\n          }\n          else {\n            uVar19 = 0;\n            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = (byte)uVar19;\n            param_5[1] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = (byte)uVar19;\n          }\n          uVar19 = 0xffff;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            if (NAN(fVar36)) {\n              uVar19 = 0;\n            }\n            else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            param_5[2] = (byte)uVar19;\n            param_5[3] = bVar17;\n          }\n          else {\n            param_5[2] = bVar17;\n            param_5[3] = (byte)uVar19;\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 4;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      goto LAB_002734da;\n    }" { (if_statement "if (uVar34 == 0x10) {\n        if ((int)param_2[2] == 1) {\n          if ((long)param_3 < 1) {\n            return;\n          }\n          uVar34 = 0;\n          do {\n            lVar32 = *(long *)(param_1 + 0x360);\n            uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }\n            else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }\n            fVar36 = _DAT_003fa400;\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }\n            uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }\n            else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }\n            param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n            param_5 = param_5 + param_2[6] + 4;\n            uVar34 = uVar34 + 1;\n          } while (uVar34 != param_3);\n          return;\n        }\n        uVar34 = 0;\n        if ((long)param_3 < 1) {\n          return;\n        }\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n          if (NAN(fVar36)) {\n            uVar19 = 0;\n          }\n          else {\n            uVar19 = 0;\n            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = (byte)uVar19;\n            param_5[1] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = (byte)uVar19;\n          }\n          uVar19 = 0xffff;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            if (NAN(fVar36)) {\n              uVar19 = 0;\n            }\n            else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            param_5[2] = (byte)uVar19;\n            param_5[3] = bVar17;\n          }\n          else {\n            param_5[2] = bVar17;\n            param_5[3] = (byte)uVar19;\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 4;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }" if (parenthesized_expression "(uVar34 == 0x10)" ( (binary_expression "uVar34 == 0x10" identifier == number_literal) )) (compound_statement "{\n        if ((int)param_2[2] == 1) {\n          if ((long)param_3 < 1) {\n            return;\n          }\n          uVar34 = 0;\n          do {\n            lVar32 = *(long *)(param_1 + 0x360);\n            uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }\n            else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }\n            fVar36 = _DAT_003fa400;\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }\n            uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }\n            else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }\n            param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n            param_5 = param_5 + param_2[6] + 4;\n            uVar34 = uVar34 + 1;\n          } while (uVar34 != param_3);\n          return;\n        }\n        uVar34 = 0;\n        if ((long)param_3 < 1) {\n          return;\n        }\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n          if (NAN(fVar36)) {\n            uVar19 = 0;\n          }\n          else {\n            uVar19 = 0;\n            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = (byte)uVar19;\n            param_5[1] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = (byte)uVar19;\n          }\n          uVar19 = 0xffff;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            if (NAN(fVar36)) {\n              uVar19 = 0;\n            }\n            else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            param_5[2] = (byte)uVar19;\n            param_5[3] = bVar17;\n          }\n          else {\n            param_5[2] = bVar17;\n            param_5[3] = (byte)uVar19;\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 4;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }" { (if_statement "if ((int)param_2[2] == 1) {\n          if ((long)param_3 < 1) {\n            return;\n          }\n          uVar34 = 0;\n          do {\n            lVar32 = *(long *)(param_1 + 0x360);\n            uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }\n            else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }\n            fVar36 = _DAT_003fa400;\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }\n            uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }\n            else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }\n            param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n            param_5 = param_5 + param_2[6] + 4;\n            uVar34 = uVar34 + 1;\n          } while (uVar34 != param_3);\n          return;\n        }" if (parenthesized_expression "((int)param_2[2] == 1)" ( (binary_expression "(int)param_2[2] == 1" (cast_expression "(int)param_2[2]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n          if ((long)param_3 < 1) {\n            return;\n          }\n          uVar34 = 0;\n          do {\n            lVar32 = *(long *)(param_1 + 0x360);\n            uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }\n            else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }\n            fVar36 = _DAT_003fa400;\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }\n            uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }\n            else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }\n            param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n            param_5 = param_5 + param_2[6] + 4;\n            uVar34 = uVar34 + 1;\n          } while (uVar34 != param_3);\n          return;\n        }" { (if_statement "if ((long)param_3 < 1) {\n            return;\n          }" if (parenthesized_expression "((long)param_3 < 1)" ( (binary_expression "(long)param_3 < 1" (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) (expression_statement "uVar34 = 0;" (assignment_expression "uVar34 = 0" identifier = number_literal) ;) (do_statement "do {\n            lVar32 = *(long *)(param_1 + 0x360);\n            uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }\n            else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }\n            fVar36 = _DAT_003fa400;\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }\n            uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }\n            else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }\n            param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n            param_5 = param_5 + param_2[6] + 4;\n            uVar34 = uVar34 + 1;\n          } while (uVar34 != param_3);" do (compound_statement "{\n            lVar32 = *(long *)(param_1 + 0x360);\n            uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }\n            else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }\n            fVar36 = _DAT_003fa400;\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }\n            uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }\n            else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }\n            param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n            param_5 = param_5 + param_2[6] + 4;\n            uVar34 = uVar34 + 1;\n          }" { (expression_statement "lVar32 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar32 = *(long *)(param_1 + 0x360)" identifier = (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60));" (assignment_expression "uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60))" identifier = (call_expression "FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60))" identifier (argument_list "((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60))" ( (cast_expression "(float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60)" ( (binary_expression "(double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60" (cast_expression "(double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  )" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  )" ( (binary_expression "DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (binary_expression "DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (binary_expression "DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             )" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             )" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             )" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             )" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x18) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x18) * 4" (pointer_expression "*(long *)(lVar32 + 0x18)" * (cast_expression "(long *)(lVar32 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x18)" ( (binary_expression "lVar32 + 0x18" identifier + number_literal) )))) * number_literal)) ))))) + (binary_expression "DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 8) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 8) * 4" identifier + (binary_expression "*(long *)(lVar32 + 8) * 4" (pointer_expression "*(long *)(lVar32 + 8)" * (cast_expression "(long *)(lVar32 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 8)" ( (binary_expression "lVar32 + 8" identifier + number_literal) )))) * number_literal)) )))))) + (binary_expression "DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x28) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x28) * 4" (pointer_expression "*(long *)(lVar32 + 0x28)" * (cast_expression "(long *)(lVar32 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x28)" ( (binary_expression "lVar32 + 0x28" identifier + number_literal) )))) * number_literal)) )))))) ))) * identifier) ))) )))) ;) (expression_statement "bVar17 = (byte)((ushort)uVar19 >> 8);" (assignment_expression "bVar17 = (byte)((ushort)uVar19 >> 8)" identifier = (call_expression "(byte)((ushort)uVar19 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ushort)uVar19 >> 8)" ( (binary_expression "(ushort)uVar19 >> 8" (cast_expression "(ushort)uVar19" ( (type_descriptor "ushort" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if ((int)param_2[0xc] == 1) {\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }\n            else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }" if (parenthesized_expression "((int)param_2[0xc] == 1)" ( (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[0xc]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }" { (expression_statement "*param_5 = (byte)uVar19;" (assignment_expression "*param_5 = (byte)uVar19" (pointer_expression "*param_5" * identifier) = (cast_expression "(byte)uVar19" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "param_5[1] = bVar17;" (assignment_expression "param_5[1] = bVar17" (subscript_expression "param_5[1]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }" else (compound_statement "{\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }" { (expression_statement "*param_5 = bVar17;" (assignment_expression "*param_5 = bVar17" (pointer_expression "*param_5" * identifier) = identifier) ;) (expression_statement "param_5[1] = (byte)uVar19;" (assignment_expression "param_5[1] = (byte)uVar19" (subscript_expression "param_5[1]" identifier [ number_literal ]) = (cast_expression "(byte)uVar19" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }))) (expression_statement "fVar36 = _DAT_003fa400;" (assignment_expression "fVar36 = _DAT_003fa400" identifier = identifier) ;) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }" if (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0)" ( (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44)" * (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x44)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x44" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }" { (expression_statement "fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);" (assignment_expression "fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" identifier = (pointer_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (binary_expression "param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" identifier + (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48)" * (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x48)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x48" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) })) (expression_statement "uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));" (assignment_expression "uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60))" identifier = (call_expression "FUN_00272577((float)((double)fVar36 * DAT_003f9c60))" identifier (argument_list "((float)((double)fVar36 * DAT_003f9c60))" ( (cast_expression "(float)((double)fVar36 * DAT_003f9c60)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((double)fVar36 * DAT_003f9c60)" ( (binary_expression "(double)fVar36 * DAT_003f9c60" (cast_expression "(double)fVar36" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) ))) )))) ;) (expression_statement "bVar17 = (byte)((ushort)uVar19 >> 8);" (assignment_expression "bVar17 = (byte)((ushort)uVar19 >> 8)" identifier = (call_expression "(byte)((ushort)uVar19 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ushort)uVar19 >> 8)" ( (binary_expression "(ushort)uVar19 >> 8" (cast_expression "(ushort)uVar19" ( (type_descriptor "ushort" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if ((int)param_2[0xc] == 1) {\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }\n            else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }" if (parenthesized_expression "((int)param_2[0xc] == 1)" ( (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[0xc]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }" { (expression_statement "param_5[2] = (byte)uVar19;" (assignment_expression "param_5[2] = (byte)uVar19" (subscript_expression "param_5[2]" identifier [ number_literal ]) = (cast_expression "(byte)uVar19" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "param_5[3] = bVar17;" (assignment_expression "param_5[3] = bVar17" (subscript_expression "param_5[3]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }" else (compound_statement "{\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }" { (expression_statement "param_5[2] = bVar17;" (assignment_expression "param_5[2] = bVar17" (subscript_expression "param_5[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[3] = (byte)uVar19;" (assignment_expression "param_5[3] = (byte)uVar19" (subscript_expression "param_5[3]" identifier [ number_literal ]) = (cast_expression "(byte)uVar19" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }))) (expression_statement "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4" identifier = (binary_expression "param_4 + *(long *)(param_1 + 0x340) * 4" identifier + (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" * (cast_expression "(long *)(param_1 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "param_5 = param_5 + param_2[6] + 4;" (assignment_expression "param_5 = param_5 + param_2[6] + 4" identifier = (binary_expression "param_5 + param_2[6] + 4" (binary_expression "param_5 + param_2[6]" identifier + (subscript_expression "param_2[6]" identifier [ number_literal ])) + number_literal)) ;) (expression_statement "uVar34 = uVar34 + 1;" (assignment_expression "uVar34 = uVar34 + 1" identifier = (binary_expression "uVar34 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar34 != param_3)" ( (binary_expression "uVar34 != param_3" identifier != identifier) )) ;) (return_statement "return;" return ;) })) (expression_statement "uVar34 = 0;" (assignment_expression "uVar34 = 0" identifier = number_literal) ;) (if_statement "if ((long)param_3 < 1) {\n          return;\n        }" if (parenthesized_expression "((long)param_3 < 1)" ( (binary_expression "(long)param_3 < 1" (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (do_statement "do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n          if (NAN(fVar36)) {\n            uVar19 = 0;\n          }\n          else {\n            uVar19 = 0;\n            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = (byte)uVar19;\n            param_5[1] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = (byte)uVar19;\n          }\n          uVar19 = 0xffff;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            if (NAN(fVar36)) {\n              uVar19 = 0;\n            }\n            else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            param_5[2] = (byte)uVar19;\n            param_5[3] = bVar17;\n          }\n          else {\n            param_5[2] = bVar17;\n            param_5[3] = (byte)uVar19;\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 4;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);" do (compound_statement "{\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n          if (NAN(fVar36)) {\n            uVar19 = 0;\n          }\n          else {\n            uVar19 = 0;\n            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = (byte)uVar19;\n            param_5[1] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = (byte)uVar19;\n          }\n          uVar19 = 0xffff;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            if (NAN(fVar36)) {\n              uVar19 = 0;\n            }\n            else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            param_5[2] = (byte)uVar19;\n            param_5[3] = bVar17;\n          }\n          else {\n            param_5[2] = bVar17;\n            param_5[3] = (byte)uVar19;\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 4;\n          uVar34 = uVar34 + 1;\n        }" { (expression_statement "lVar32 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar32 = *(long *)(param_1 + 0x360)" identifier = (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);" (assignment_expression "fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" identifier = (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x18) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x18) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x18) * 4" (pointer_expression "*(long *)(lVar32 + 0x18)" * (cast_expression "(long *)(lVar32 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x18)" ( (binary_expression "lVar32 + 0x18" identifier + number_literal) )))) * number_literal)) ))))) + (binary_expression "fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 8) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 8) * 4" identifier + (binary_expression "*(long *)(lVar32 + 8) * 4" (pointer_expression "*(long *)(lVar32 + 8)" * (cast_expression "(long *)(lVar32 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 8)" ( (binary_expression "lVar32 + 8" identifier + number_literal) )))) * number_literal)) )))))) + (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x28) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x28) * 4" (pointer_expression "*(long *)(lVar32 + 0x28)" * (cast_expression "(long *)(lVar32 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x28)" ( (binary_expression "lVar32 + 0x28" identifier + number_literal) )))) * number_literal)) ))))))) ;) (if_statement "if (NAN(fVar36)) {\n            uVar19 = 0;\n          }\n          else {\n            uVar19 = 0;\n            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }\n          }" if (parenthesized_expression "(NAN(fVar36))" ( (call_expression "NAN(fVar36)" identifier (argument_list "(fVar36)" ( identifier ))) )) (compound_statement "{\n            uVar19 = 0;\n          }" { (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) }) (else_clause "else {\n            uVar19 = 0;\n            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }\n          }" else (compound_statement "{\n            uVar19 = 0;\n            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }\n          }" { (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) (if_statement "if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }" if (parenthesized_expression "((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400))" ( (binary_expression "(0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)" (parenthesized_expression "(0.0 < fVar36)" ( (binary_expression "0.0 < fVar36" number_literal < identifier) )) && (parenthesized_expression "(uVar19 = 0xffff, fVar36 < _DAT_003fa400)" ( (comma_expression "uVar19 = 0xffff, fVar36 < _DAT_003fa400" (assignment_expression "uVar19 = 0xffff" identifier = number_literal) , (binary_expression "fVar36 < _DAT_003fa400" identifier < identifier)) ))) )) (compound_statement "{\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }" { (expression_statement "uVar19 = (undefined2)(int)((double)fVar36 + dVar7);" (assignment_expression "uVar19 = (undefined2)(int)((double)fVar36 + dVar7)" identifier = (call_expression "(undefined2)(int)((double)fVar36 + dVar7)" (call_expression "(undefined2)(int)" (parenthesized_expression "(undefined2)" ( identifier )) (argument_list "(int)" ( identifier ))) (argument_list "((double)fVar36 + dVar7)" ( (binary_expression "(double)fVar36 + dVar7" (cast_expression "(double)fVar36" ( (type_descriptor "double" primitive_type) ) identifier) + identifier) )))) ;) })) }))) (expression_statement "bVar17 = (byte)((ushort)uVar19 >> 8);" (assignment_expression "bVar17 = (byte)((ushort)uVar19 >> 8)" identifier = (call_expression "(byte)((ushort)uVar19 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ushort)uVar19 >> 8)" ( (binary_expression "(ushort)uVar19 >> 8" (cast_expression "(ushort)uVar19" ( (type_descriptor "ushort" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if ((int)param_2[0xc] == 1) {\n            *param_5 = (byte)uVar19;\n            param_5[1] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = (byte)uVar19;\n          }" if (parenthesized_expression "((int)param_2[0xc] == 1)" ( (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[0xc]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n            *param_5 = (byte)uVar19;\n            param_5[1] = bVar17;\n          }" { (expression_statement "*param_5 = (byte)uVar19;" (assignment_expression "*param_5 = (byte)uVar19" (pointer_expression "*param_5" * identifier) = (cast_expression "(byte)uVar19" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "param_5[1] = bVar17;" (assignment_expression "param_5[1] = bVar17" (subscript_expression "param_5[1]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            *param_5 = bVar17;\n            param_5[1] = (byte)uVar19;\n          }" else (compound_statement "{\n            *param_5 = bVar17;\n            param_5[1] = (byte)uVar19;\n          }" { (expression_statement "*param_5 = bVar17;" (assignment_expression "*param_5 = bVar17" (pointer_expression "*param_5" * identifier) = identifier) ;) (expression_statement "param_5[1] = (byte)uVar19;" (assignment_expression "param_5[1] = (byte)uVar19" (subscript_expression "param_5[1]" identifier [ number_literal ]) = (cast_expression "(byte)uVar19" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }))) (expression_statement "uVar19 = 0xffff;" (assignment_expression "uVar19 = 0xffff" identifier = number_literal) ;) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            if (NAN(fVar36)) {\n              uVar19 = 0;\n            }\n            else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }\n          }" if (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0)" ( (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44)" * (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x44)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x44" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            if (NAN(fVar36)) {\n              uVar19 = 0;\n            }\n            else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }\n          }" { (expression_statement "fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);" (assignment_expression "fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" identifier = (pointer_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (binary_expression "param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" identifier + (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48)" * (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x48)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x48" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (NAN(fVar36)) {\n              uVar19 = 0;\n            }\n            else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }" if (parenthesized_expression "(NAN(fVar36))" ( (call_expression "NAN(fVar36)" identifier (argument_list "(fVar36)" ( identifier ))) )) (compound_statement "{\n              uVar19 = 0;\n            }" { (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) }) (else_clause "else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }" else (compound_statement "{\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }" { (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) (if_statement "if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }" if (parenthesized_expression "((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400))" ( (binary_expression "(0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)" (parenthesized_expression "(0.0 < fVar36)" ( (binary_expression "0.0 < fVar36" number_literal < identifier) )) && (parenthesized_expression "(uVar19 = 0xffff, fVar36 < _DAT_003fa400)" ( (comma_expression "uVar19 = 0xffff, fVar36 < _DAT_003fa400" (assignment_expression "uVar19 = 0xffff" identifier = number_literal) , (binary_expression "fVar36 < _DAT_003fa400" identifier < identifier)) ))) )) (compound_statement "{\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }" { (expression_statement "uVar19 = (short)(int)((double)fVar36 + dVar7);" (assignment_expression "uVar19 = (short)(int)((double)fVar36 + dVar7)" identifier = (cast_expression "(short)(int)((double)fVar36 + dVar7)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (cast_expression "(int)((double)fVar36 + dVar7)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((double)fVar36 + dVar7)" ( (binary_expression "(double)fVar36 + dVar7" (cast_expression "(double)fVar36" ( (type_descriptor "double" primitive_type) ) identifier) + identifier) ))))) ;) })) }))) })) (expression_statement "bVar17 = (byte)((ushort)uVar19 >> 8);" (assignment_expression "bVar17 = (byte)((ushort)uVar19 >> 8)" identifier = (call_expression "(byte)((ushort)uVar19 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ushort)uVar19 >> 8)" ( (binary_expression "(ushort)uVar19 >> 8" (cast_expression "(ushort)uVar19" ( (type_descriptor "ushort" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if ((int)param_2[0xc] == 1) {\n            param_5[2] = (byte)uVar19;\n            param_5[3] = bVar17;\n          }\n          else {\n            param_5[2] = bVar17;\n            param_5[3] = (byte)uVar19;\n          }" if (parenthesized_expression "((int)param_2[0xc] == 1)" ( (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[0xc]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n            param_5[2] = (byte)uVar19;\n            param_5[3] = bVar17;\n          }" { (expression_statement "param_5[2] = (byte)uVar19;" (assignment_expression "param_5[2] = (byte)uVar19" (subscript_expression "param_5[2]" identifier [ number_literal ]) = (cast_expression "(byte)uVar19" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "param_5[3] = bVar17;" (assignment_expression "param_5[3] = bVar17" (subscript_expression "param_5[3]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            param_5[2] = bVar17;\n            param_5[3] = (byte)uVar19;\n          }" else (compound_statement "{\n            param_5[2] = bVar17;\n            param_5[3] = (byte)uVar19;\n          }" { (expression_statement "param_5[2] = bVar17;" (assignment_expression "param_5[2] = bVar17" (subscript_expression "param_5[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[3] = (byte)uVar19;" (assignment_expression "param_5[3] = (byte)uVar19" (subscript_expression "param_5[3]" identifier [ number_literal ]) = (cast_expression "(byte)uVar19" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }))) (expression_statement "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4" identifier = (binary_expression "param_4 + *(long *)(param_1 + 0x340) * 4" identifier + (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" * (cast_expression "(long *)(param_1 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "param_5 = param_5 + param_2[6] + 4;" (assignment_expression "param_5 = param_5 + param_2[6] + 4" identifier = (binary_expression "param_5 + param_2[6] + 4" (binary_expression "param_5 + param_2[6]" identifier + (subscript_expression "param_2[6]" identifier [ number_literal ])) + number_literal)) ;) (expression_statement "uVar34 = uVar34 + 1;" (assignment_expression "uVar34 = uVar34 + 1" identifier = (binary_expression "uVar34 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar34 != param_3)" ( (binary_expression "uVar34 != param_3" identifier != identifier) )) ;) (return_statement "return;" return ;) })) (goto_statement "goto LAB_002734da;" goto statement_identifier ;) })) (if_statement "if ((int)param_2[2] == 1) {\n      if ((long)param_3 < 1) {\n        return;\n      }\n      uVar34 = 0;\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        dVar4 = (double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                (double)param_2[0xd] + (double)param_2[3];\n        bVar18 = (byte)((ulong)dVar4 >> 8);\n        bVar23 = (byte)((ulong)dVar4 >> 0x10);\n        bVar24 = (byte)((ulong)dVar4 >> 0x18);\n        bVar25 = (byte)((ulong)dVar4 >> 0x20);\n        bVar26 = (byte)((ulong)dVar4 >> 0x28);\n        bVar27 = (byte)((ulong)dVar4 >> 0x30);\n        bVar17 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = SUB81(dVar4,0);\n          param_5[1] = bVar18;\n          param_5[2] = bVar23;\n          param_5[3] = bVar24;\n          param_5[4] = bVar25;\n          param_5[5] = bVar26;\n          param_5[6] = bVar27;\n          param_5[7] = bVar17;\n        }\n        else {\n          *param_5 = bVar17;\n          param_5[1] = bVar27;\n          param_5[2] = bVar26;\n          param_5[3] = bVar25;\n          param_5[4] = bVar24;\n          param_5[5] = bVar23;\n          param_5[6] = bVar18;\n          param_5[7] = SUB81(dVar4,0);\n        }\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        dVar4 = (double)fVar37 * (double)param_2[0xd] + (double)param_2[3];\n        bVar17 = (byte)((ulong)dVar4 >> 8);\n        bVar18 = (byte)((ulong)dVar4 >> 0x10);\n        bVar27 = (byte)((ulong)dVar4 >> 0x18);\n        bVar26 = (byte)((ulong)dVar4 >> 0x20);\n        bVar25 = (byte)((ulong)dVar4 >> 0x28);\n        bVar24 = (byte)((ulong)dVar4 >> 0x30);\n        bVar23 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          param_5[8] = SUB81(dVar4,0);\n          param_5[9] = bVar17;\n          param_5[10] = bVar18;\n          param_5[0xb] = bVar27;\n          param_5[0xc] = bVar26;\n          param_5[0xd] = bVar25;\n          param_5[0xe] = bVar24;\n          param_5[0xf] = bVar23;\n        }\n        else {\n          param_5[8] = bVar23;\n          param_5[9] = bVar24;\n          param_5[10] = bVar25;\n          param_5[0xb] = bVar26;\n          param_5[0xc] = bVar27;\n          param_5[0xd] = bVar18;\n          param_5[0xe] = bVar17;\n          param_5[0xf] = SUB81(dVar4,0);\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 0x10;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }" if (parenthesized_expression "((int)param_2[2] == 1)" ( (binary_expression "(int)param_2[2] == 1" (cast_expression "(int)param_2[2]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n      if ((long)param_3 < 1) {\n        return;\n      }\n      uVar34 = 0;\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        dVar4 = (double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                (double)param_2[0xd] + (double)param_2[3];\n        bVar18 = (byte)((ulong)dVar4 >> 8);\n        bVar23 = (byte)((ulong)dVar4 >> 0x10);\n        bVar24 = (byte)((ulong)dVar4 >> 0x18);\n        bVar25 = (byte)((ulong)dVar4 >> 0x20);\n        bVar26 = (byte)((ulong)dVar4 >> 0x28);\n        bVar27 = (byte)((ulong)dVar4 >> 0x30);\n        bVar17 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = SUB81(dVar4,0);\n          param_5[1] = bVar18;\n          param_5[2] = bVar23;\n          param_5[3] = bVar24;\n          param_5[4] = bVar25;\n          param_5[5] = bVar26;\n          param_5[6] = bVar27;\n          param_5[7] = bVar17;\n        }\n        else {\n          *param_5 = bVar17;\n          param_5[1] = bVar27;\n          param_5[2] = bVar26;\n          param_5[3] = bVar25;\n          param_5[4] = bVar24;\n          param_5[5] = bVar23;\n          param_5[6] = bVar18;\n          param_5[7] = SUB81(dVar4,0);\n        }\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        dVar4 = (double)fVar37 * (double)param_2[0xd] + (double)param_2[3];\n        bVar17 = (byte)((ulong)dVar4 >> 8);\n        bVar18 = (byte)((ulong)dVar4 >> 0x10);\n        bVar27 = (byte)((ulong)dVar4 >> 0x18);\n        bVar26 = (byte)((ulong)dVar4 >> 0x20);\n        bVar25 = (byte)((ulong)dVar4 >> 0x28);\n        bVar24 = (byte)((ulong)dVar4 >> 0x30);\n        bVar23 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          param_5[8] = SUB81(dVar4,0);\n          param_5[9] = bVar17;\n          param_5[10] = bVar18;\n          param_5[0xb] = bVar27;\n          param_5[0xc] = bVar26;\n          param_5[0xd] = bVar25;\n          param_5[0xe] = bVar24;\n          param_5[0xf] = bVar23;\n        }\n        else {\n          param_5[8] = bVar23;\n          param_5[9] = bVar24;\n          param_5[10] = bVar25;\n          param_5[0xb] = bVar26;\n          param_5[0xc] = bVar27;\n          param_5[0xd] = bVar18;\n          param_5[0xe] = bVar17;\n          param_5[0xf] = SUB81(dVar4,0);\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 0x10;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }" { (if_statement "if ((long)param_3 < 1) {\n        return;\n      }" if (parenthesized_expression "((long)param_3 < 1)" ( (binary_expression "(long)param_3 < 1" (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "uVar34 = 0;" (assignment_expression "uVar34 = 0" identifier = number_literal) ;) (do_statement "do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        dVar4 = (double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                (double)param_2[0xd] + (double)param_2[3];\n        bVar18 = (byte)((ulong)dVar4 >> 8);\n        bVar23 = (byte)((ulong)dVar4 >> 0x10);\n        bVar24 = (byte)((ulong)dVar4 >> 0x18);\n        bVar25 = (byte)((ulong)dVar4 >> 0x20);\n        bVar26 = (byte)((ulong)dVar4 >> 0x28);\n        bVar27 = (byte)((ulong)dVar4 >> 0x30);\n        bVar17 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = SUB81(dVar4,0);\n          param_5[1] = bVar18;\n          param_5[2] = bVar23;\n          param_5[3] = bVar24;\n          param_5[4] = bVar25;\n          param_5[5] = bVar26;\n          param_5[6] = bVar27;\n          param_5[7] = bVar17;\n        }\n        else {\n          *param_5 = bVar17;\n          param_5[1] = bVar27;\n          param_5[2] = bVar26;\n          param_5[3] = bVar25;\n          param_5[4] = bVar24;\n          param_5[5] = bVar23;\n          param_5[6] = bVar18;\n          param_5[7] = SUB81(dVar4,0);\n        }\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        dVar4 = (double)fVar37 * (double)param_2[0xd] + (double)param_2[3];\n        bVar17 = (byte)((ulong)dVar4 >> 8);\n        bVar18 = (byte)((ulong)dVar4 >> 0x10);\n        bVar27 = (byte)((ulong)dVar4 >> 0x18);\n        bVar26 = (byte)((ulong)dVar4 >> 0x20);\n        bVar25 = (byte)((ulong)dVar4 >> 0x28);\n        bVar24 = (byte)((ulong)dVar4 >> 0x30);\n        bVar23 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          param_5[8] = SUB81(dVar4,0);\n          param_5[9] = bVar17;\n          param_5[10] = bVar18;\n          param_5[0xb] = bVar27;\n          param_5[0xc] = bVar26;\n          param_5[0xd] = bVar25;\n          param_5[0xe] = bVar24;\n          param_5[0xf] = bVar23;\n        }\n        else {\n          param_5[8] = bVar23;\n          param_5[9] = bVar24;\n          param_5[10] = bVar25;\n          param_5[0xb] = bVar26;\n          param_5[0xc] = bVar27;\n          param_5[0xd] = bVar18;\n          param_5[0xe] = bVar17;\n          param_5[0xf] = SUB81(dVar4,0);\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 0x10;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);" do (compound_statement "{\n        lVar32 = *(long *)(param_1 + 0x360);\n        dVar4 = (double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                (double)param_2[0xd] + (double)param_2[3];\n        bVar18 = (byte)((ulong)dVar4 >> 8);\n        bVar23 = (byte)((ulong)dVar4 >> 0x10);\n        bVar24 = (byte)((ulong)dVar4 >> 0x18);\n        bVar25 = (byte)((ulong)dVar4 >> 0x20);\n        bVar26 = (byte)((ulong)dVar4 >> 0x28);\n        bVar27 = (byte)((ulong)dVar4 >> 0x30);\n        bVar17 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = SUB81(dVar4,0);\n          param_5[1] = bVar18;\n          param_5[2] = bVar23;\n          param_5[3] = bVar24;\n          param_5[4] = bVar25;\n          param_5[5] = bVar26;\n          param_5[6] = bVar27;\n          param_5[7] = bVar17;\n        }\n        else {\n          *param_5 = bVar17;\n          param_5[1] = bVar27;\n          param_5[2] = bVar26;\n          param_5[3] = bVar25;\n          param_5[4] = bVar24;\n          param_5[5] = bVar23;\n          param_5[6] = bVar18;\n          param_5[7] = SUB81(dVar4,0);\n        }\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        dVar4 = (double)fVar37 * (double)param_2[0xd] + (double)param_2[3];\n        bVar17 = (byte)((ulong)dVar4 >> 8);\n        bVar18 = (byte)((ulong)dVar4 >> 0x10);\n        bVar27 = (byte)((ulong)dVar4 >> 0x18);\n        bVar26 = (byte)((ulong)dVar4 >> 0x20);\n        bVar25 = (byte)((ulong)dVar4 >> 0x28);\n        bVar24 = (byte)((ulong)dVar4 >> 0x30);\n        bVar23 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          param_5[8] = SUB81(dVar4,0);\n          param_5[9] = bVar17;\n          param_5[10] = bVar18;\n          param_5[0xb] = bVar27;\n          param_5[0xc] = bVar26;\n          param_5[0xd] = bVar25;\n          param_5[0xe] = bVar24;\n          param_5[0xf] = bVar23;\n        }\n        else {\n          param_5[8] = bVar23;\n          param_5[9] = bVar24;\n          param_5[10] = bVar25;\n          param_5[0xb] = bVar26;\n          param_5[0xc] = bVar27;\n          param_5[0xd] = bVar18;\n          param_5[0xe] = bVar17;\n          param_5[0xf] = SUB81(dVar4,0);\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 0x10;\n        uVar34 = uVar34 + 1;\n      }" { (expression_statement "lVar32 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar32 = *(long *)(param_1 + 0x360)" identifier = (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "dVar4 = (double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                (double)param_2[0xd] + (double)param_2[3];" (assignment_expression "dVar4 = (double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                (double)param_2[0xd] + (double)param_2[3]" identifier = (binary_expression "(double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                (double)param_2[0xd] + (double)param_2[3]" (binary_expression "(double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                (double)param_2[0xd]" (cast_expression "(double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4))" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4))" ( (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x18) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x18) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x18) * 4" (pointer_expression "*(long *)(lVar32 + 0x18)" * (cast_expression "(long *)(lVar32 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x18)" ( (binary_expression "lVar32 + 0x18" identifier + number_literal) )))) * number_literal)) ))))) + (binary_expression "fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 8) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 8) * 4" identifier + (binary_expression "*(long *)(lVar32 + 8) * 4" (pointer_expression "*(long *)(lVar32 + 8)" * (cast_expression "(long *)(lVar32 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 8)" ( (binary_expression "lVar32 + 8" identifier + number_literal) )))) * number_literal)) )))))) + (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x28) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x28) * 4" (pointer_expression "*(long *)(lVar32 + 0x28)" * (cast_expression "(long *)(lVar32 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x28)" ( (binary_expression "lVar32 + 0x28" identifier + number_literal) )))) * number_literal)) )))))) ))) * (cast_expression "(double)param_2[0xd]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "param_2[0xd]" identifier [ number_literal ]))) + (cast_expression "(double)param_2[3]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "param_2[3]" identifier [ number_literal ])))) ;) (expression_statement "bVar18 = (byte)((ulong)dVar4 >> 8);" (assignment_expression "bVar18 = (byte)((ulong)dVar4 >> 8)" identifier = (call_expression "(byte)((ulong)dVar4 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulong)dVar4 >> 8)" ( (binary_expression "(ulong)dVar4 >> 8" (cast_expression "(ulong)dVar4" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar23 = (byte)((ulong)dVar4 >> 0x10);" (assignment_expression "bVar23 = (byte)((ulong)dVar4 >> 0x10)" identifier = (call_expression "(byte)((ulong)dVar4 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulong)dVar4 >> 0x10)" ( (binary_expression "(ulong)dVar4 >> 0x10" (cast_expression "(ulong)dVar4" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar24 = (byte)((ulong)dVar4 >> 0x18);" (assignment_expression "bVar24 = (byte)((ulong)dVar4 >> 0x18)" identifier = (call_expression "(byte)((ulong)dVar4 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulong)dVar4 >> 0x18)" ( (binary_expression "(ulong)dVar4 >> 0x18" (cast_expression "(ulong)dVar4" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar25 = (byte)((ulong)dVar4 >> 0x20);" (assignment_expression "bVar25 = (byte)((ulong)dVar4 >> 0x20)" identifier = (call_expression "(byte)((ulong)dVar4 >> 0x20)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulong)dVar4 >> 0x20)" ( (binary_expression "(ulong)dVar4 >> 0x20" (cast_expression "(ulong)dVar4" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar26 = (byte)((ulong)dVar4 >> 0x28);" (assignment_expression "bVar26 = (byte)((ulong)dVar4 >> 0x28)" identifier = (call_expression "(byte)((ulong)dVar4 >> 0x28)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulong)dVar4 >> 0x28)" ( (binary_expression "(ulong)dVar4 >> 0x28" (cast_expression "(ulong)dVar4" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar27 = (byte)((ulong)dVar4 >> 0x30);" (assignment_expression "bVar27 = (byte)((ulong)dVar4 >> 0x30)" identifier = (call_expression "(byte)((ulong)dVar4 >> 0x30)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulong)dVar4 >> 0x30)" ( (binary_expression "(ulong)dVar4 >> 0x30" (cast_expression "(ulong)dVar4" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar17 = (byte)((ulong)dVar4 >> 0x38);" (assignment_expression "bVar17 = (byte)((ulong)dVar4 >> 0x38)" identifier = (call_expression "(byte)((ulong)dVar4 >> 0x38)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulong)dVar4 >> 0x38)" ( (binary_expression "(ulong)dVar4 >> 0x38" (cast_expression "(ulong)dVar4" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if ((int)param_2[0xc] == 1) {\n          *param_5 = SUB81(dVar4,0);\n          param_5[1] = bVar18;\n          param_5[2] = bVar23;\n          param_5[3] = bVar24;\n          param_5[4] = bVar25;\n          param_5[5] = bVar26;\n          param_5[6] = bVar27;\n          param_5[7] = bVar17;\n        }\n        else {\n          *param_5 = bVar17;\n          param_5[1] = bVar27;\n          param_5[2] = bVar26;\n          param_5[3] = bVar25;\n          param_5[4] = bVar24;\n          param_5[5] = bVar23;\n          param_5[6] = bVar18;\n          param_5[7] = SUB81(dVar4,0);\n        }" if (parenthesized_expression "((int)param_2[0xc] == 1)" ( (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[0xc]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n          *param_5 = SUB81(dVar4,0);\n          param_5[1] = bVar18;\n          param_5[2] = bVar23;\n          param_5[3] = bVar24;\n          param_5[4] = bVar25;\n          param_5[5] = bVar26;\n          param_5[6] = bVar27;\n          param_5[7] = bVar17;\n        }" { (expression_statement "*param_5 = SUB81(dVar4,0);" (assignment_expression "*param_5 = SUB81(dVar4,0)" (pointer_expression "*param_5" * identifier) = (call_expression "SUB81(dVar4,0)" identifier (argument_list "(dVar4,0)" ( identifier , number_literal )))) ;) (expression_statement "param_5[1] = bVar18;" (assignment_expression "param_5[1] = bVar18" (subscript_expression "param_5[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[2] = bVar23;" (assignment_expression "param_5[2] = bVar23" (subscript_expression "param_5[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[3] = bVar24;" (assignment_expression "param_5[3] = bVar24" (subscript_expression "param_5[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[4] = bVar25;" (assignment_expression "param_5[4] = bVar25" (subscript_expression "param_5[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[5] = bVar26;" (assignment_expression "param_5[5] = bVar26" (subscript_expression "param_5[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[6] = bVar27;" (assignment_expression "param_5[6] = bVar27" (subscript_expression "param_5[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[7] = bVar17;" (assignment_expression "param_5[7] = bVar17" (subscript_expression "param_5[7]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n          *param_5 = bVar17;\n          param_5[1] = bVar27;\n          param_5[2] = bVar26;\n          param_5[3] = bVar25;\n          param_5[4] = bVar24;\n          param_5[5] = bVar23;\n          param_5[6] = bVar18;\n          param_5[7] = SUB81(dVar4,0);\n        }" else (compound_statement "{\n          *param_5 = bVar17;\n          param_5[1] = bVar27;\n          param_5[2] = bVar26;\n          param_5[3] = bVar25;\n          param_5[4] = bVar24;\n          param_5[5] = bVar23;\n          param_5[6] = bVar18;\n          param_5[7] = SUB81(dVar4,0);\n        }" { (expression_statement "*param_5 = bVar17;" (assignment_expression "*param_5 = bVar17" (pointer_expression "*param_5" * identifier) = identifier) ;) (expression_statement "param_5[1] = bVar27;" (assignment_expression "param_5[1] = bVar27" (subscript_expression "param_5[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[2] = bVar26;" (assignment_expression "param_5[2] = bVar26" (subscript_expression "param_5[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[3] = bVar25;" (assignment_expression "param_5[3] = bVar25" (subscript_expression "param_5[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[4] = bVar24;" (assignment_expression "param_5[4] = bVar24" (subscript_expression "param_5[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[5] = bVar23;" (assignment_expression "param_5[5] = bVar23" (subscript_expression "param_5[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[6] = bVar18;" (assignment_expression "param_5[6] = bVar18" (subscript_expression "param_5[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[7] = SUB81(dVar4,0);" (assignment_expression "param_5[7] = SUB81(dVar4,0)" (subscript_expression "param_5[7]" identifier [ number_literal ]) = (call_expression "SUB81(dVar4,0)" identifier (argument_list "(dVar4,0)" ( identifier , number_literal )))) ;) }))) (expression_statement "fVar37 = fVar36;" (assignment_expression "fVar37 = fVar36" identifier = identifier) ;) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }" if (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0)" ( (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44)" * (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x44)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x44" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) != number_literal) )) (compound_statement "{\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }" { (expression_statement "fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);" (assignment_expression "fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" identifier = (pointer_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (binary_expression "param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" identifier + (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48)" * (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x48)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x48" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) })) (expression_statement "dVar4 = (double)fVar37 * (double)param_2[0xd] + (double)param_2[3];" (assignment_expression "dVar4 = (double)fVar37 * (double)param_2[0xd] + (double)param_2[3]" identifier = (binary_expression "(double)fVar37 * (double)param_2[0xd] + (double)param_2[3]" (binary_expression "(double)fVar37 * (double)param_2[0xd]" (cast_expression "(double)fVar37" ( (type_descriptor "double" primitive_type) ) identifier) * (cast_expression "(double)param_2[0xd]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "param_2[0xd]" identifier [ number_literal ]))) + (cast_expression "(double)param_2[3]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "param_2[3]" identifier [ number_literal ])))) ;) (expression_statement "bVar17 = (byte)((ulong)dVar4 >> 8);" (assignment_expression "bVar17 = (byte)((ulong)dVar4 >> 8)" identifier = (call_expression "(byte)((ulong)dVar4 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulong)dVar4 >> 8)" ( (binary_expression "(ulong)dVar4 >> 8" (cast_expression "(ulong)dVar4" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar18 = (byte)((ulong)dVar4 >> 0x10);" (assignment_expression "bVar18 = (byte)((ulong)dVar4 >> 0x10)" identifier = (call_expression "(byte)((ulong)dVar4 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulong)dVar4 >> 0x10)" ( (binary_expression "(ulong)dVar4 >> 0x10" (cast_expression "(ulong)dVar4" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar27 = (byte)((ulong)dVar4 >> 0x18);" (assignment_expression "bVar27 = (byte)((ulong)dVar4 >> 0x18)" identifier = (call_expression "(byte)((ulong)dVar4 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulong)dVar4 >> 0x18)" ( (binary_expression "(ulong)dVar4 >> 0x18" (cast_expression "(ulong)dVar4" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar26 = (byte)((ulong)dVar4 >> 0x20);" (assignment_expression "bVar26 = (byte)((ulong)dVar4 >> 0x20)" identifier = (call_expression "(byte)((ulong)dVar4 >> 0x20)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulong)dVar4 >> 0x20)" ( (binary_expression "(ulong)dVar4 >> 0x20" (cast_expression "(ulong)dVar4" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar25 = (byte)((ulong)dVar4 >> 0x28);" (assignment_expression "bVar25 = (byte)((ulong)dVar4 >> 0x28)" identifier = (call_expression "(byte)((ulong)dVar4 >> 0x28)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulong)dVar4 >> 0x28)" ( (binary_expression "(ulong)dVar4 >> 0x28" (cast_expression "(ulong)dVar4" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar24 = (byte)((ulong)dVar4 >> 0x30);" (assignment_expression "bVar24 = (byte)((ulong)dVar4 >> 0x30)" identifier = (call_expression "(byte)((ulong)dVar4 >> 0x30)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulong)dVar4 >> 0x30)" ( (binary_expression "(ulong)dVar4 >> 0x30" (cast_expression "(ulong)dVar4" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar23 = (byte)((ulong)dVar4 >> 0x38);" (assignment_expression "bVar23 = (byte)((ulong)dVar4 >> 0x38)" identifier = (call_expression "(byte)((ulong)dVar4 >> 0x38)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulong)dVar4 >> 0x38)" ( (binary_expression "(ulong)dVar4 >> 0x38" (cast_expression "(ulong)dVar4" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if ((int)param_2[0xc] == 1) {\n          param_5[8] = SUB81(dVar4,0);\n          param_5[9] = bVar17;\n          param_5[10] = bVar18;\n          param_5[0xb] = bVar27;\n          param_5[0xc] = bVar26;\n          param_5[0xd] = bVar25;\n          param_5[0xe] = bVar24;\n          param_5[0xf] = bVar23;\n        }\n        else {\n          param_5[8] = bVar23;\n          param_5[9] = bVar24;\n          param_5[10] = bVar25;\n          param_5[0xb] = bVar26;\n          param_5[0xc] = bVar27;\n          param_5[0xd] = bVar18;\n          param_5[0xe] = bVar17;\n          param_5[0xf] = SUB81(dVar4,0);\n        }" if (parenthesized_expression "((int)param_2[0xc] == 1)" ( (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[0xc]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n          param_5[8] = SUB81(dVar4,0);\n          param_5[9] = bVar17;\n          param_5[10] = bVar18;\n          param_5[0xb] = bVar27;\n          param_5[0xc] = bVar26;\n          param_5[0xd] = bVar25;\n          param_5[0xe] = bVar24;\n          param_5[0xf] = bVar23;\n        }" { (expression_statement "param_5[8] = SUB81(dVar4,0);" (assignment_expression "param_5[8] = SUB81(dVar4,0)" (subscript_expression "param_5[8]" identifier [ number_literal ]) = (call_expression "SUB81(dVar4,0)" identifier (argument_list "(dVar4,0)" ( identifier , number_literal )))) ;) (expression_statement "param_5[9] = bVar17;" (assignment_expression "param_5[9] = bVar17" (subscript_expression "param_5[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[10] = bVar18;" (assignment_expression "param_5[10] = bVar18" (subscript_expression "param_5[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[0xb] = bVar27;" (assignment_expression "param_5[0xb] = bVar27" (subscript_expression "param_5[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[0xc] = bVar26;" (assignment_expression "param_5[0xc] = bVar26" (subscript_expression "param_5[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[0xd] = bVar25;" (assignment_expression "param_5[0xd] = bVar25" (subscript_expression "param_5[0xd]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[0xe] = bVar24;" (assignment_expression "param_5[0xe] = bVar24" (subscript_expression "param_5[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[0xf] = bVar23;" (assignment_expression "param_5[0xf] = bVar23" (subscript_expression "param_5[0xf]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n          param_5[8] = bVar23;\n          param_5[9] = bVar24;\n          param_5[10] = bVar25;\n          param_5[0xb] = bVar26;\n          param_5[0xc] = bVar27;\n          param_5[0xd] = bVar18;\n          param_5[0xe] = bVar17;\n          param_5[0xf] = SUB81(dVar4,0);\n        }" else (compound_statement "{\n          param_5[8] = bVar23;\n          param_5[9] = bVar24;\n          param_5[10] = bVar25;\n          param_5[0xb] = bVar26;\n          param_5[0xc] = bVar27;\n          param_5[0xd] = bVar18;\n          param_5[0xe] = bVar17;\n          param_5[0xf] = SUB81(dVar4,0);\n        }" { (expression_statement "param_5[8] = bVar23;" (assignment_expression "param_5[8] = bVar23" (subscript_expression "param_5[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[9] = bVar24;" (assignment_expression "param_5[9] = bVar24" (subscript_expression "param_5[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[10] = bVar25;" (assignment_expression "param_5[10] = bVar25" (subscript_expression "param_5[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[0xb] = bVar26;" (assignment_expression "param_5[0xb] = bVar26" (subscript_expression "param_5[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[0xc] = bVar27;" (assignment_expression "param_5[0xc] = bVar27" (subscript_expression "param_5[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[0xd] = bVar18;" (assignment_expression "param_5[0xd] = bVar18" (subscript_expression "param_5[0xd]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[0xe] = bVar17;" (assignment_expression "param_5[0xe] = bVar17" (subscript_expression "param_5[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[0xf] = SUB81(dVar4,0);" (assignment_expression "param_5[0xf] = SUB81(dVar4,0)" (subscript_expression "param_5[0xf]" identifier [ number_literal ]) = (call_expression "SUB81(dVar4,0)" identifier (argument_list "(dVar4,0)" ( identifier , number_literal )))) ;) }))) (expression_statement "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4" identifier = (binary_expression "param_4 + *(long *)(param_1 + 0x340) * 4" identifier + (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" * (cast_expression "(long *)(param_1 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "param_5 = param_5 + param_2[6] + 0x10;" (assignment_expression "param_5 = param_5 + param_2[6] + 0x10" identifier = (binary_expression "param_5 + param_2[6] + 0x10" (binary_expression "param_5 + param_2[6]" identifier + (subscript_expression "param_2[6]" identifier [ number_literal ])) + number_literal)) ;) (expression_statement "uVar34 = uVar34 + 1;" (assignment_expression "uVar34 = uVar34 + 1" identifier = (binary_expression "uVar34 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar34 != param_3)" ( (binary_expression "uVar34 != param_3" identifier != identifier) )) ;) (return_statement "return;" return ;) })) }))) (if_statement "if (0x40 < uVar34) {\n    uVar34 = 0;\n  }" if (parenthesized_expression "(0x40 < uVar34)" ( (binary_expression "0x40 < uVar34" number_literal < identifier) )) (compound_statement "{\n    uVar34 = 0;\n  }" { (expression_statement "uVar34 = 0;" (assignment_expression "uVar34 = 0" identifier = number_literal) ;) })) (expression_statement "uVar33 = (2L << ((char)uVar34 - 1U & 0x3f)) - 1;" (assignment_expression "uVar33 = (2L << ((char)uVar34 - 1U & 0x3f)) - 1" identifier = (binary_expression "(2L << ((char)uVar34 - 1U & 0x3f)) - 1" (parenthesized_expression "(2L << ((char)uVar34 - 1U & 0x3f))" ( (binary_expression "2L << ((char)uVar34 - 1U & 0x3f)" number_literal << (parenthesized_expression "((char)uVar34 - 1U & 0x3f)" ( (binary_expression "(char)uVar34 - 1U & 0x3f" (binary_expression "(char)uVar34 - 1U" (cast_expression "(char)uVar34" ( (type_descriptor "char" primitive_type) ) identifier) - number_literal) & number_literal) ))) )) - number_literal)) ;) (labeled_statement "LAB_002734e9:\n  if (0 < (long)param_3) {\n    uVar34 = 0;\n    do {\n      lVar32 = *(long *)(param_1 + 0x360);\n      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n      if (NAN(fVar36)) {\n        uVar31 = 0;\n      }\n      else {\n        uVar31 = 0;\n        if (0.0 < fVar36) {\n          dVar5 = ((double)fVar36 * (double)uVar33) / dVar4;\n          uVar31 = 0xffffffffffffffff;\n          if (dVar5 < dVar9) {\n            dVar5 = dVar5 + dVar7;\n            if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }\n          }\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      fVar36 = _DAT_003fa400;\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) == 0) {\nLAB_002745f5:\n        dVar5 = ((double)fVar36 * (double)uVar33) / DAT_003f95f8;\n        uVar31 = 0xffffffffffffffff;\n        if (dVar5 < DAT_003fa3a0) {\n          dVar5 = dVar5 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar5) {\n            uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar31 = (ulong)dVar5;\n          }\n        }\n      }\n      else {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          uVar31 = 0;\n        }\n        else {\n          uVar31 = 0;\n          if (0.0 < fVar36) goto LAB_002745f5;\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n      param_5 = param_5 + param_2[6];\n      uVar34 = uVar34 + 1;\n    } while (param_3 != uVar34);\n  }" statement_identifier : (if_statement "if (0 < (long)param_3) {\n    uVar34 = 0;\n    do {\n      lVar32 = *(long *)(param_1 + 0x360);\n      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n      if (NAN(fVar36)) {\n        uVar31 = 0;\n      }\n      else {\n        uVar31 = 0;\n        if (0.0 < fVar36) {\n          dVar5 = ((double)fVar36 * (double)uVar33) / dVar4;\n          uVar31 = 0xffffffffffffffff;\n          if (dVar5 < dVar9) {\n            dVar5 = dVar5 + dVar7;\n            if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }\n          }\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      fVar36 = _DAT_003fa400;\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) == 0) {\nLAB_002745f5:\n        dVar5 = ((double)fVar36 * (double)uVar33) / DAT_003f95f8;\n        uVar31 = 0xffffffffffffffff;\n        if (dVar5 < DAT_003fa3a0) {\n          dVar5 = dVar5 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar5) {\n            uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar31 = (ulong)dVar5;\n          }\n        }\n      }\n      else {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          uVar31 = 0;\n        }\n        else {\n          uVar31 = 0;\n          if (0.0 < fVar36) goto LAB_002745f5;\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n      param_5 = param_5 + param_2[6];\n      uVar34 = uVar34 + 1;\n    } while (param_3 != uVar34);\n  }" if (parenthesized_expression "(0 < (long)param_3)" ( (binary_expression "0 < (long)param_3" number_literal < (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n    uVar34 = 0;\n    do {\n      lVar32 = *(long *)(param_1 + 0x360);\n      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n      if (NAN(fVar36)) {\n        uVar31 = 0;\n      }\n      else {\n        uVar31 = 0;\n        if (0.0 < fVar36) {\n          dVar5 = ((double)fVar36 * (double)uVar33) / dVar4;\n          uVar31 = 0xffffffffffffffff;\n          if (dVar5 < dVar9) {\n            dVar5 = dVar5 + dVar7;\n            if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }\n          }\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      fVar36 = _DAT_003fa400;\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) == 0) {\nLAB_002745f5:\n        dVar5 = ((double)fVar36 * (double)uVar33) / DAT_003f95f8;\n        uVar31 = 0xffffffffffffffff;\n        if (dVar5 < DAT_003fa3a0) {\n          dVar5 = dVar5 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar5) {\n            uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar31 = (ulong)dVar5;\n          }\n        }\n      }\n      else {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          uVar31 = 0;\n        }\n        else {\n          uVar31 = 0;\n          if (0.0 < fVar36) goto LAB_002745f5;\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n      param_5 = param_5 + param_2[6];\n      uVar34 = uVar34 + 1;\n    } while (param_3 != uVar34);\n  }" { (expression_statement "uVar34 = 0;" (assignment_expression "uVar34 = 0" identifier = number_literal) ;) (do_statement "do {\n      lVar32 = *(long *)(param_1 + 0x360);\n      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n      if (NAN(fVar36)) {\n        uVar31 = 0;\n      }\n      else {\n        uVar31 = 0;\n        if (0.0 < fVar36) {\n          dVar5 = ((double)fVar36 * (double)uVar33) / dVar4;\n          uVar31 = 0xffffffffffffffff;\n          if (dVar5 < dVar9) {\n            dVar5 = dVar5 + dVar7;\n            if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }\n          }\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      fVar36 = _DAT_003fa400;\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) == 0) {\nLAB_002745f5:\n        dVar5 = ((double)fVar36 * (double)uVar33) / DAT_003f95f8;\n        uVar31 = 0xffffffffffffffff;\n        if (dVar5 < DAT_003fa3a0) {\n          dVar5 = dVar5 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar5) {\n            uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar31 = (ulong)dVar5;\n          }\n        }\n      }\n      else {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          uVar31 = 0;\n        }\n        else {\n          uVar31 = 0;\n          if (0.0 < fVar36) goto LAB_002745f5;\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n      param_5 = param_5 + param_2[6];\n      uVar34 = uVar34 + 1;\n    } while (param_3 != uVar34);" do (compound_statement "{\n      lVar32 = *(long *)(param_1 + 0x360);\n      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n      if (NAN(fVar36)) {\n        uVar31 = 0;\n      }\n      else {\n        uVar31 = 0;\n        if (0.0 < fVar36) {\n          dVar5 = ((double)fVar36 * (double)uVar33) / dVar4;\n          uVar31 = 0xffffffffffffffff;\n          if (dVar5 < dVar9) {\n            dVar5 = dVar5 + dVar7;\n            if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }\n          }\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      fVar36 = _DAT_003fa400;\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) == 0) {\nLAB_002745f5:\n        dVar5 = ((double)fVar36 * (double)uVar33) / DAT_003f95f8;\n        uVar31 = 0xffffffffffffffff;\n        if (dVar5 < DAT_003fa3a0) {\n          dVar5 = dVar5 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar5) {\n            uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar31 = (ulong)dVar5;\n          }\n        }\n      }\n      else {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          uVar31 = 0;\n        }\n        else {\n          uVar31 = 0;\n          if (0.0 < fVar36) goto LAB_002745f5;\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n      param_5 = param_5 + param_2[6];\n      uVar34 = uVar34 + 1;\n    }" { (expression_statement "lVar32 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar32 = *(long *)(param_1 + 0x360)" identifier = (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) ))))) ;) (expression_statement "fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);" (assignment_expression "fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" identifier = (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x18) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x18) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x18) * 4" (pointer_expression "*(long *)(lVar32 + 0x18)" * (cast_expression "(long *)(lVar32 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x18)" ( (binary_expression "lVar32 + 0x18" identifier + number_literal) )))) * number_literal)) ))))) + (binary_expression "fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 8) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 8) * 4" identifier + (binary_expression "*(long *)(lVar32 + 8) * 4" (pointer_expression "*(long *)(lVar32 + 8)" * (cast_expression "(long *)(lVar32 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 8)" ( (binary_expression "lVar32 + 8" identifier + number_literal) )))) * number_literal)) )))))) + (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" identifier * (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x28) * 4)" ( (binary_expression "param_4 + *(long *)(lVar32 + 0x28) * 4" identifier + (binary_expression "*(long *)(lVar32 + 0x28) * 4" (pointer_expression "*(long *)(lVar32 + 0x28)" * (cast_expression "(long *)(lVar32 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar32 + 0x28)" ( (binary_expression "lVar32 + 0x28" identifier + number_literal) )))) * number_literal)) ))))))) ;) (if_statement "if (NAN(fVar36)) {\n        uVar31 = 0;\n      }\n      else {\n        uVar31 = 0;\n        if (0.0 < fVar36) {\n          dVar5 = ((double)fVar36 * (double)uVar33) / dVar4;\n          uVar31 = 0xffffffffffffffff;\n          if (dVar5 < dVar9) {\n            dVar5 = dVar5 + dVar7;\n            if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }\n          }\n        }\n      }" if (parenthesized_expression "(NAN(fVar36))" ( (call_expression "NAN(fVar36)" identifier (argument_list "(fVar36)" ( identifier ))) )) (compound_statement "{\n        uVar31 = 0;\n      }" { (expression_statement "uVar31 = 0;" (assignment_expression "uVar31 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        uVar31 = 0;\n        if (0.0 < fVar36) {\n          dVar5 = ((double)fVar36 * (double)uVar33) / dVar4;\n          uVar31 = 0xffffffffffffffff;\n          if (dVar5 < dVar9) {\n            dVar5 = dVar5 + dVar7;\n            if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }\n          }\n        }\n      }" else (compound_statement "{\n        uVar31 = 0;\n        if (0.0 < fVar36) {\n          dVar5 = ((double)fVar36 * (double)uVar33) / dVar4;\n          uVar31 = 0xffffffffffffffff;\n          if (dVar5 < dVar9) {\n            dVar5 = dVar5 + dVar7;\n            if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }\n          }\n        }\n      }" { (expression_statement "uVar31 = 0;" (assignment_expression "uVar31 = 0" identifier = number_literal) ;) (if_statement "if (0.0 < fVar36) {\n          dVar5 = ((double)fVar36 * (double)uVar33) / dVar4;\n          uVar31 = 0xffffffffffffffff;\n          if (dVar5 < dVar9) {\n            dVar5 = dVar5 + dVar7;\n            if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }\n          }\n        }" if (parenthesized_expression "(0.0 < fVar36)" ( (binary_expression "0.0 < fVar36" number_literal < identifier) )) (compound_statement "{\n          dVar5 = ((double)fVar36 * (double)uVar33) / dVar4;\n          uVar31 = 0xffffffffffffffff;\n          if (dVar5 < dVar9) {\n            dVar5 = dVar5 + dVar7;\n            if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }\n          }\n        }" { (expression_statement "dVar5 = ((double)fVar36 * (double)uVar33) / dVar4;" (assignment_expression "dVar5 = ((double)fVar36 * (double)uVar33) / dVar4" identifier = (binary_expression "((double)fVar36 * (double)uVar33) / dVar4" (parenthesized_expression "((double)fVar36 * (double)uVar33)" ( (binary_expression "(double)fVar36 * (double)uVar33" (cast_expression "(double)fVar36" ( (type_descriptor "double" primitive_type) ) identifier) * (cast_expression "(double)uVar33" ( (type_descriptor "double" primitive_type) ) identifier)) )) / identifier)) ;) (expression_statement "uVar31 = 0xffffffffffffffff;" (assignment_expression "uVar31 = 0xffffffffffffffff" identifier = number_literal) ;) (if_statement "if (dVar5 < dVar9) {\n            dVar5 = dVar5 + dVar7;\n            if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }\n          }" if (parenthesized_expression "(dVar5 < dVar9)" ( (binary_expression "dVar5 < dVar9" identifier < identifier) )) (compound_statement "{\n            dVar5 = dVar5 + dVar7;\n            if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }\n          }" { (expression_statement "dVar5 = dVar5 + dVar7;" (assignment_expression "dVar5 = dVar5 + dVar7" identifier = (binary_expression "dVar5 + dVar7" identifier + identifier)) ;) (if_statement "if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }" if (parenthesized_expression "(dVar8 <= dVar5)" ( (binary_expression "dVar8 <= dVar5" identifier <= identifier) )) (compound_statement "{\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }" { (expression_statement "uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;" (assignment_expression "uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000" identifier = (binary_expression "(long)(dVar5 - dVar8) ^ 0x8000000000000000" (cast_expression "(long)(dVar5 - dVar8)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(dVar5 - dVar8)" ( (binary_expression "dVar5 - dVar8" identifier - identifier) ))) ^ number_literal)) ;) }) (else_clause "else {\n              uVar31 = (ulong)dVar5;\n            }" else (compound_statement "{\n              uVar31 = (ulong)dVar5;\n            }" { (expression_statement "uVar31 = (ulong)dVar5;" (assignment_expression "uVar31 = (ulong)dVar5" identifier = (cast_expression "(ulong)dVar5" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) }))) })) })) }))) (if_statement "if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }" if (parenthesized_expression "(param_2[0xf] == 0)" ( (binary_expression "param_2[0xf] == 0" (subscript_expression "param_2[0xf]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        param_2[0xf] = 8;\n      }" { (expression_statement "param_2[0xf] = 8;" (assignment_expression "param_2[0xf] = 8" (subscript_expression "param_2[0xf]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "uVar29 = *param_2;" (assignment_expression "uVar29 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }" if (parenthesized_expression "(0 < (long)uVar29)" ( (binary_expression "0 < (long)uVar29" number_literal < (cast_expression "(long)uVar29" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }" { (expression_statement "uVar22 = param_2[0xf];" (assignment_expression "uVar22 = param_2[0xf]" identifier = (subscript_expression "param_2[0xf]" identifier [ number_literal ])) ;) (do_statement "do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);" do (compound_statement "{\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        }" { (expression_statement "uVar21 = uVar29;" (assignment_expression "uVar21 = uVar29" identifier = identifier) ;) (if_statement "if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }" if (parenthesized_expression "(uVar22 <= uVar29)" ( (binary_expression "uVar22 <= uVar29" identifier <= identifier) )) (compound_statement "{\n            uVar21 = uVar22;\n          }" { (expression_statement "uVar21 = uVar22;" (assignment_expression "uVar21 = uVar22" identifier = identifier) ;) })) (expression_statement "uVar30 = uVar29 - uVar21;" (assignment_expression "uVar30 = uVar29 - uVar21" identifier = (binary_expression "uVar29 - uVar21" identifier - identifier)) ;) (expression_statement "uVar29 = 0;" (assignment_expression "uVar29 = 0" identifier = number_literal) ;) (if_statement "if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }" if (parenthesized_expression "(-1 < (long)uVar30)" ( (binary_expression "-1 < (long)uVar30" number_literal < (cast_expression "(long)uVar30" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n            uVar29 = uVar30;\n          }" { (expression_statement "uVar29 = uVar30;" (assignment_expression "uVar29 = uVar30" identifier = identifier) ;) })) (if_statement "if (uVar22 == 8) {\n            *param_5 = 0;\n          }" if (parenthesized_expression "(uVar22 == 8)" ( (binary_expression "uVar22 == 8" identifier == number_literal) )) (compound_statement "{\n            *param_5 = 0;\n          }" { (expression_statement "*param_5 = 0;" (assignment_expression "*param_5 = 0" (pointer_expression "*param_5" * identifier) = number_literal) ;) })) (expression_statement "uVar22 = uVar22 - uVar21;" (assignment_expression "uVar22 = uVar22 - uVar21" identifier = (binary_expression "uVar22 - uVar21" identifier - identifier)) ;) (expression_statement "*param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));" (assignment_expression "*param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f))" (pointer_expression "*param_5" * identifier) = (binary_expression "*param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f))" (pointer_expression "*param_5" * identifier) | (call_expression "(byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f))" ( (binary_expression "(~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f)" (parenthesized_expression "(~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f))" ( (binary_expression "~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)" (unary_expression "~(-1L << ((byte)uVar21 & 0x3f))" ~ (parenthesized_expression "(-1L << ((byte)uVar21 & 0x3f))" ( (binary_expression "-1L << ((byte)uVar21 & 0x3f)" number_literal << (parenthesized_expression "((byte)uVar21 & 0x3f)" ( (binary_expression "(byte)uVar21 & 0x3f" (cast_expression "(byte)uVar21" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & (binary_expression "uVar31 >> ((byte)uVar29 & 0x3f)" identifier >> (parenthesized_expression "((byte)uVar29 & 0x3f)" ( (binary_expression "(byte)uVar29 & 0x3f" (cast_expression "(byte)uVar29" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) )) << (parenthesized_expression "((byte)uVar22 & 0x3f)" ( (binary_expression "(byte)uVar22 & 0x3f" (cast_expression "(byte)uVar22" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))))) ;) (if_statement "if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }" if (parenthesized_expression "(uVar22 == 0)" ( (binary_expression "uVar22 == 0" identifier == number_literal) )) (compound_statement "{\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }" { (expression_statement "param_5 = param_5 + 1;" (assignment_expression "param_5 = param_5 + 1" identifier = (binary_expression "param_5 + 1" identifier + number_literal)) ;) (expression_statement "uVar22 = 8;" (assignment_expression "uVar22 = 8" identifier = number_literal) ;) })) }) while (parenthesized_expression "(0 < (long)uVar30)" ( (binary_expression "0 < (long)uVar30" number_literal < (cast_expression "(long)uVar30" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) ;) (expression_statement "param_2[0xf] = uVar22;" (assignment_expression "param_2[0xf] = uVar22" (subscript_expression "param_2[0xf]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "fVar36 = _DAT_003fa400;" (assignment_expression "fVar36 = _DAT_003fa400" identifier = identifier) ;) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) == 0) {\nLAB_002745f5:\n        dVar5 = ((double)fVar36 * (double)uVar33) / DAT_003f95f8;\n        uVar31 = 0xffffffffffffffff;\n        if (dVar5 < DAT_003fa3a0) {\n          dVar5 = dVar5 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar5) {\n            uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar31 = (ulong)dVar5;\n          }\n        }\n      }\n      else {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          uVar31 = 0;\n        }\n        else {\n          uVar31 = 0;\n          if (0.0 < fVar36) goto LAB_002745f5;\n        }\n      }" if (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x44) == 0)" ( (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44) == 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44)" * (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x44)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x44" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) == number_literal) )) (compound_statement "{\nLAB_002745f5:\n        dVar5 = ((double)fVar36 * (double)uVar33) / DAT_003f95f8;\n        uVar31 = 0xffffffffffffffff;\n        if (dVar5 < DAT_003fa3a0) {\n          dVar5 = dVar5 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar5) {\n            uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar31 = (ulong)dVar5;\n          }\n        }\n      }" { (labeled_statement "LAB_002745f5:\n        dVar5 = ((double)fVar36 * (double)uVar33) / DAT_003f95f8;" statement_identifier : (expression_statement "dVar5 = ((double)fVar36 * (double)uVar33) / DAT_003f95f8;" (assignment_expression "dVar5 = ((double)fVar36 * (double)uVar33) / DAT_003f95f8" identifier = (binary_expression "((double)fVar36 * (double)uVar33) / DAT_003f95f8" (parenthesized_expression "((double)fVar36 * (double)uVar33)" ( (binary_expression "(double)fVar36 * (double)uVar33" (cast_expression "(double)fVar36" ( (type_descriptor "double" primitive_type) ) identifier) * (cast_expression "(double)uVar33" ( (type_descriptor "double" primitive_type) ) identifier)) )) / identifier)) ;)) (expression_statement "uVar31 = 0xffffffffffffffff;" (assignment_expression "uVar31 = 0xffffffffffffffff" identifier = number_literal) ;) (if_statement "if (dVar5 < DAT_003fa3a0) {\n          dVar5 = dVar5 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar5) {\n            uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar31 = (ulong)dVar5;\n          }\n        }" if (parenthesized_expression "(dVar5 < DAT_003fa3a0)" ( (binary_expression "dVar5 < DAT_003fa3a0" identifier < identifier) )) (compound_statement "{\n          dVar5 = dVar5 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar5) {\n            uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar31 = (ulong)dVar5;\n          }\n        }" { (expression_statement "dVar5 = dVar5 + DAT_003f9c28;" (assignment_expression "dVar5 = dVar5 + DAT_003f9c28" identifier = (binary_expression "dVar5 + DAT_003f9c28" identifier + identifier)) ;) (if_statement "if (DAT_003f9c40 <= dVar5) {\n            uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar31 = (ulong)dVar5;\n          }" if (parenthesized_expression "(DAT_003f9c40 <= dVar5)" ( (binary_expression "DAT_003f9c40 <= dVar5" identifier <= identifier) )) (compound_statement "{\n            uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;\n          }" { (expression_statement "uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;" (assignment_expression "uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000" identifier = (binary_expression "(long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000" (cast_expression "(long)(dVar5 - DAT_003f9c40)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(dVar5 - DAT_003f9c40)" ( (binary_expression "dVar5 - DAT_003f9c40" identifier - identifier) ))) ^ number_literal)) ;) }) (else_clause "else {\n            uVar31 = (ulong)dVar5;\n          }" else (compound_statement "{\n            uVar31 = (ulong)dVar5;\n          }" { (expression_statement "uVar31 = (ulong)dVar5;" (assignment_expression "uVar31 = (ulong)dVar5" identifier = (cast_expression "(ulong)dVar5" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) }))) })) }) (else_clause "else {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          uVar31 = 0;\n        }\n        else {\n          uVar31 = 0;\n          if (0.0 < fVar36) goto LAB_002745f5;\n        }\n      }" else (compound_statement "{\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          uVar31 = 0;\n        }\n        else {\n          uVar31 = 0;\n          if (0.0 < fVar36) goto LAB_002745f5;\n        }\n      }" { (expression_statement "fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);" (assignment_expression "fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" identifier = (pointer_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" * (cast_expression "(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" ( (binary_expression "param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" identifier + (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48)" * (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x48)" ( (binary_expression "*(long *)(param_1 + 0x360) + 0x48" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (NAN(fVar36)) {\n          uVar31 = 0;\n        }\n        else {\n          uVar31 = 0;\n          if (0.0 < fVar36) goto LAB_002745f5;\n        }" if (parenthesized_expression "(NAN(fVar36))" ( (call_expression "NAN(fVar36)" identifier (argument_list "(fVar36)" ( identifier ))) )) (compound_statement "{\n          uVar31 = 0;\n        }" { (expression_statement "uVar31 = 0;" (assignment_expression "uVar31 = 0" identifier = number_literal) ;) }) (else_clause "else {\n          uVar31 = 0;\n          if (0.0 < fVar36) goto LAB_002745f5;\n        }" else (compound_statement "{\n          uVar31 = 0;\n          if (0.0 < fVar36) goto LAB_002745f5;\n        }" { (expression_statement "uVar31 = 0;" (assignment_expression "uVar31 = 0" identifier = number_literal) ;) (if_statement "if (0.0 < fVar36) goto LAB_002745f5;" if (parenthesized_expression "(0.0 < fVar36)" ( (binary_expression "0.0 < fVar36" number_literal < identifier) )) (goto_statement "goto LAB_002745f5;" goto statement_identifier ;)) }))) }))) (if_statement "if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }" if (parenthesized_expression "(param_2[0xf] == 0)" ( (binary_expression "param_2[0xf] == 0" (subscript_expression "param_2[0xf]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        param_2[0xf] = 8;\n      }" { (expression_statement "param_2[0xf] = 8;" (assignment_expression "param_2[0xf] = 8" (subscript_expression "param_2[0xf]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "uVar29 = *param_2;" (assignment_expression "uVar29 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }" if (parenthesized_expression "(0 < (long)uVar29)" ( (binary_expression "0 < (long)uVar29" number_literal < (cast_expression "(long)uVar29" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }" { (expression_statement "uVar22 = param_2[0xf];" (assignment_expression "uVar22 = param_2[0xf]" identifier = (subscript_expression "param_2[0xf]" identifier [ number_literal ])) ;) (do_statement "do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);" do (compound_statement "{\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        }" { (expression_statement "uVar21 = uVar29;" (assignment_expression "uVar21 = uVar29" identifier = identifier) ;) (if_statement "if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }" if (parenthesized_expression "(uVar22 <= uVar29)" ( (binary_expression "uVar22 <= uVar29" identifier <= identifier) )) (compound_statement "{\n            uVar21 = uVar22;\n          }" { (expression_statement "uVar21 = uVar22;" (assignment_expression "uVar21 = uVar22" identifier = identifier) ;) })) (expression_statement "uVar30 = uVar29 - uVar21;" (assignment_expression "uVar30 = uVar29 - uVar21" identifier = (binary_expression "uVar29 - uVar21" identifier - identifier)) ;) (expression_statement "uVar29 = 0;" (assignment_expression "uVar29 = 0" identifier = number_literal) ;) (if_statement "if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }" if (parenthesized_expression "(-1 < (long)uVar30)" ( (binary_expression "-1 < (long)uVar30" number_literal < (cast_expression "(long)uVar30" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n            uVar29 = uVar30;\n          }" { (expression_statement "uVar29 = uVar30;" (assignment_expression "uVar29 = uVar30" identifier = identifier) ;) })) (if_statement "if (uVar22 == 8) {\n            *param_5 = 0;\n          }" if (parenthesized_expression "(uVar22 == 8)" ( (binary_expression "uVar22 == 8" identifier == number_literal) )) (compound_statement "{\n            *param_5 = 0;\n          }" { (expression_statement "*param_5 = 0;" (assignment_expression "*param_5 = 0" (pointer_expression "*param_5" * identifier) = number_literal) ;) })) (expression_statement "uVar22 = uVar22 - uVar21;" (assignment_expression "uVar22 = uVar22 - uVar21" identifier = (binary_expression "uVar22 - uVar21" identifier - identifier)) ;) (expression_statement "*param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));" (assignment_expression "*param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f))" (pointer_expression "*param_5" * identifier) = (binary_expression "*param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f))" (pointer_expression "*param_5" * identifier) | (call_expression "(byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f))" ( (binary_expression "(~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f)" (parenthesized_expression "(~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f))" ( (binary_expression "~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)" (unary_expression "~(-1L << ((byte)uVar21 & 0x3f))" ~ (parenthesized_expression "(-1L << ((byte)uVar21 & 0x3f))" ( (binary_expression "-1L << ((byte)uVar21 & 0x3f)" number_literal << (parenthesized_expression "((byte)uVar21 & 0x3f)" ( (binary_expression "(byte)uVar21 & 0x3f" (cast_expression "(byte)uVar21" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) & (binary_expression "uVar31 >> ((byte)uVar29 & 0x3f)" identifier >> (parenthesized_expression "((byte)uVar29 & 0x3f)" ( (binary_expression "(byte)uVar29 & 0x3f" (cast_expression "(byte)uVar29" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) )) << (parenthesized_expression "((byte)uVar22 & 0x3f)" ( (binary_expression "(byte)uVar22 & 0x3f" (cast_expression "(byte)uVar22" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))))) ;) (if_statement "if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }" if (parenthesized_expression "(uVar22 == 0)" ( (binary_expression "uVar22 == 0" identifier == number_literal) )) (compound_statement "{\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }" { (expression_statement "param_5 = param_5 + 1;" (assignment_expression "param_5 = param_5 + 1" identifier = (binary_expression "param_5 + 1" identifier + number_literal)) ;) (expression_statement "uVar22 = 8;" (assignment_expression "uVar22 = 8" identifier = number_literal) ;) })) }) while (parenthesized_expression "(0 < (long)uVar30)" ( (binary_expression "0 < (long)uVar30" number_literal < (cast_expression "(long)uVar30" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) ;) (expression_statement "param_2[0xf] = uVar22;" (assignment_expression "param_2[0xf] = uVar22" (subscript_expression "param_2[0xf]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4" identifier = (binary_expression "param_4 + *(long *)(param_1 + 0x340) * 4" identifier + (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" * (cast_expression "(long *)(param_1 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x340)" ( (binary_expression "param_1 + 0x340" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "param_5 = param_5 + param_2[6];" (assignment_expression "param_5 = param_5 + param_2[6]" identifier = (binary_expression "param_5 + param_2[6]" identifier + (subscript_expression "param_2[6]" identifier [ number_literal ]))) ;) (expression_statement "uVar34 = uVar34 + 1;" (assignment_expression "uVar34 = uVar34 + 1" identifier = (binary_expression "uVar34 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_3 != uVar34)" ( (binary_expression "param_3 != uVar34" identifier != identifier) )) ;) }))) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) 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 IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = 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 = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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 (sized_type_specifier long) (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)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) < LIT) )) (compound_statement { (return_statement return ;) })) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ))))) + (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) )))))) + (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ))))))) ;) (if_statement if (parenthesized_expression ( (call_expression IDENT (argument_list ( IDENT ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) / IDENT)) , (comma_expression (assignment_expression IDENT = LIT) , (binary_expression IDENT < IDENT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (binary_expression IDENT + IDENT) )))) ;) })) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (call_expression IDENT (argument_list ( IDENT ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = LIT) , (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) / IDENT) < IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) / IDENT) + IDENT) )))) ;) })) }))) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (subscript_expression IDENT [ LIT ])) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (return_statement return ;) })) (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 IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == LIT)) ;) (expression_statement (assignment_expression IDENT = (unary_expression ! IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) && (binary_expression LIT < (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT - LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) >> LIT) ))) + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression (binary_expression (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ))))) + (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) )))))) + (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ))))))) )) (compound_statement { (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 IDENT << LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) )))) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression (binary_expression (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ))))) + (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) )))))) + (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ))))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT << LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) )))) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression (binary_expression (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ))))) + (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) )))))) + (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ))))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression IDENT * (char_literal ' escape_sequence ')))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) )))) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ))))) + (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) )))))) + (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) )))))) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression IDENT * (char_literal ' escape_sequence ')))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) ))))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT | (binary_expression IDENT == IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression (binary_expression (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ))))) + (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) )))))) + (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ))))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) | (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) ))))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (unary_expression ! (call_expression IDENT (argument_list ( IDENT )))) && (unary_expression ! (call_expression IDENT (argument_list ( IDENT ))))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT << (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) & LIT) ))) ))) | IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT <= (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))))) )) ;) (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) < LIT) )) (compound_statement { (return_statement return ;) })) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ))))) + (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) )))))) + (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ))))))) ;) (if_statement if (parenthesized_expression ( (call_expression IDENT (argument_list ( IDENT ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) / IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (binary_expression IDENT + IDENT) )))) ;) })) })) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT & LIT)) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) ))))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression IDENT & LIT) | (binary_expression (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * IDENT) + IDENT) ))) & LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (return_statement return ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) < LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ))))) + (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) )))))) + (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) )))))) ))) * (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) + (cast_expression ( (type_descriptor TYPE) ) (subscript_expression 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) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) }))) (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 (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) ))))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) + (cast_expression ( (type_descriptor TYPE) ) (subscript_expression 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) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (subscript_expression IDENT [ LIT ])) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) < LIT) )) (compound_statement { (return_statement return ;) })) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ))))) + (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) )))))) + (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ))))))) ;) (if_statement if (parenthesized_expression ( (call_expression IDENT (argument_list ( IDENT ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = LIT) , (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * IDENT) < IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * IDENT) + 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 = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (call_expression IDENT (argument_list ( IDENT ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = LIT) , (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * IDENT) < IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * IDENT) + 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 = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (subscript_expression IDENT [ LIT ])) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) < LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ))))) + (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) )))))) + (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) )))))) ))) * IDENT) ))) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }))) (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 (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) ))))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * IDENT) ))) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (subscript_expression IDENT [ LIT ])) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) < LIT) )) (compound_statement { (return_statement return ;) })) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ))))) + (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) )))))) + (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ))))))) ;) (if_statement if (parenthesized_expression ( (call_expression IDENT (argument_list ( IDENT ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = LIT) , (binary_expression IDENT < IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) })) }))) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (call_expression IDENT (argument_list ( IDENT ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = LIT) , (binary_expression IDENT < IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier short)) ) (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) ))))) ;) })) }))) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (subscript_expression IDENT [ LIT ])) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (return_statement return ;) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) < LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ))))) + (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) )))))) + (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) )))))) ))) * (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) + (cast_expression ( (type_descriptor TYPE) ) (subscript_expression 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) )))) ;) (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 = (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 = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) }))) (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 (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) ))))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) + (cast_expression ( (type_descriptor TYPE) ) (subscript_expression 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) )))) ;) (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 = (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 = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (subscript_expression IDENT [ LIT ])) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (return_statement return ;) })) }))) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - LIT) & LIT) ))) )) - LIT)) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ))))) + (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) )))))) + (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ))))))) ;) (if_statement if (parenthesized_expression ( (call_expression IDENT (argument_list ( IDENT ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) / IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT - IDENT) ))) ^ LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }))) })) })) }))) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (do_statement do (compound_statement { (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 = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (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) )))) )) << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) }) while (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) )) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) })) (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 (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) / IDENT)) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT - IDENT) ))) ^ LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }))) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (call_expression IDENT (argument_list ( IDENT ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) }))) }))) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (do_statement do (compound_statement { (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 = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (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) )))) )) << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) }) while (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) )) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) }))) (return_statement return ;) })))
(function_definition "void FUN_00273473(long param_1,ulong *param_2,ulong param_3,long param_4,byte *param_5,long param_6)\n\n{\n  byte *pbVar1;\n  bool bVar2;\n  long lVar3;\n  double dVar4;\n  double dVar5;\n  bool bVar6;\n  double dVar7;\n  double dVar8;\n  double dVar9;\n  double dVar10;\n  double dVar11;\n  double dVar12;\n  float fVar13;\n  float fVar14;\n  float fVar15;\n  double dVar16;\n  byte bVar17;\n  byte bVar18;\n  undefined2 uVar19;\n  undefined4 uVar20;\n  ulong uVar21;\n  ulong uVar22;\n  byte bVar23;\n  uint uVar28;\n  ulong uVar29;\n  ulong uVar30;\n  ulong uVar31;\n  long lVar32;\n  ulong uVar33;\n  ulong uVar34;\n  bool bVar35;\n  float fVar36;\n  float fVar37;\n  byte bVar24;\n  byte bVar25;\n  byte bVar26;\n  byte bVar27;\n  \n  dVar16 = DAT_0042f2e8;\n  fVar15 = DAT_0041abe0;\n  fVar14 = DAT_0041abdc;\n  fVar13 = DAT_0041abd8;\n  dVar12 = DAT_00404938;\n  dVar11 = DAT_00404930;\n  dVar10 = DAT_00404928;\n  dVar5 = DAT_00404920;\n  fVar36 = _DAT_003fa400;\n  dVar9 = DAT_003fa3a0;\n  dVar8 = DAT_003f9c40;\n  dVar7 = DAT_003f9c28;\n  dVar4 = DAT_003f95f8;\n  if (param_6 == 0) {\n                    \n    __assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x89f,\n                  "ExportGrayAlphaQuantum");\n  }\n  if (*(long *)(param_6 + 0x30) != 0xabacadab) {\n                    \n    __assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x8a0,\n                  "ExportGrayAlphaQuantum");\n  }\n  uVar34 = *param_2;\n  if (uVar34 == 8) {\n    uVar34 = 0;\n    if ((long)param_3 < 1) {\n      return;\n    }\n    do {\n      lVar32 = *(long *)(param_1 + 0x360);\n      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n      if (NAN(fVar36)) {\n        bVar17 = 0;\n      }\n      else {\n        bVar17 = 0;\n        if ((0.0 < fVar36) && (dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12)) {\n          bVar17 = (byte)(int)(dVar4 + dVar7);\n        }\n      }\n      *param_5 = bVar17;\n      bVar17 = 0xff;\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if ((0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)) {\n            bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);\n          }\n        }\n      }\n      param_5[1] = bVar17;\n      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n      param_5 = param_5 + param_2[6] + 2;\n      uVar34 = uVar34 + 1;\n    } while (uVar34 != param_3);\n    return;\n  }\n  if (uVar34 < 9) {\n    if (uVar34 == 1) {\n      bVar35 = (int)param_2[7] == 0;\n      bVar6 = !bVar35;\n      if (param_3 != 3 && -1 < (long)(param_3 - 3)) {\n        pbVar1 = param_5 + (param_3 - 4 >> 2) + 1;\n        do {\n          *param_5 = 0;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar18 = (byte)(uVar28 << 7);\n          *param_5 = bVar18;\n          bVar17 = 0x40;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar17 = 0x40;\n            }\n            else {\n              bVar17 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar17 = bVar17 | (byte)(uVar28 << 5);\n          *param_5 = bVar17;\n          bVar18 = 0x10;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 0x10;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            bVar2 = bVar6;\n          }\n          bVar17 = bVar17 | bVar2 * '\b';\n          *param_5 = bVar17;\n          bVar18 = 4;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 4;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar6;\n          if (DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) <= DAT_003fc580) {\n            bVar2 = bVar35;\n          }\n          bVar17 = bVar17 | bVar2 * '\x02';\n          *param_5 = bVar17;\n          fVar36 = _DAT_003fa400;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          *param_5 = bVar17 | fVar36 == _DAT_003fa400;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + 1;\n        } while (param_5 != pbVar1);\n      }\n      if ((param_3 & 3) == 0) {\n        return;\n      }\n      *param_5 = 0;\n      fVar15 = DAT_0041abe0;\n      fVar14 = DAT_0041abdc;\n      fVar13 = DAT_0041abd8;\n      fVar36 = _DAT_003fa400;\n      bVar17 = 7;\n      lVar32 = 0;\n      do {\n        lVar3 = *(long *)(param_1 + 0x360);\n        bVar2 = bVar35;\n        if (DAT_003fc580 <\n            fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4) +\n            fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4) +\n            fVar15 * *(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)) {\n          bVar2 = bVar6;\n        }\n        bVar18 = bVar2 << (bVar17 & 0x1f) | *param_5;\n        *param_5 = bVar18;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        uVar28 = (uint)(!NAN(fVar37) && !NAN(_DAT_003fa400));\n        if (fVar37 != _DAT_003fa400) {\n          uVar28 = 0;\n        }\n        *param_5 = (byte)(uVar28 << (bVar17 - 1 & 0x1f)) | bVar18;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        lVar32 = lVar32 + 2;\n        bVar17 = bVar17 - 2;\n      } while (lVar32 <= (long)(ulong)((uint)param_3 & 3));\n      return;\n    }\n    if (uVar34 == 4) {\n      pbVar1 = param_5 + param_3;\n      if ((long)param_3 < 1) {\n        return;\n      }\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar37 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar37)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if (0.0 < fVar37) {\n            dVar4 = (double)fVar37 / dVar11;\n            bVar17 = 0xff;\n            if (dVar4 < dVar12) {\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }\n          }\n        }\n        *param_5 = bVar17 & 0xf0;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        *param_5 = bVar17 & 0xf0 | (byte)(int)((double)fVar37 * dVar16 + dVar7) & 0xf;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + 1;\n      } while (param_5 != pbVar1);\n      return;\n    }\nLAB_002734da:\n    uVar33 = 0;\n    if (uVar34 == 0) goto LAB_002734e9;\n  }\n  else {\n    if (uVar34 == 0x20) {\n      if ((int)param_2[2] == 1) {\n        if ((long)param_3 < 1) {\n          return;\n        }\n        uVar34 = 0;\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar37 = (float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3]);\n          bVar18 = (byte)((uint)fVar37 >> 8);\n          bVar27 = (byte)((uint)fVar37 >> 0x10);\n          bVar17 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = SUB41(fVar37,0);\n            param_5[1] = bVar18;\n            param_5[2] = bVar27;\n            param_5[3] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = bVar27;\n            param_5[2] = bVar18;\n            param_5[3] = SUB41(fVar37,0);\n          }\n          fVar37 = fVar36;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          fVar37 = (float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3]);\n          bVar17 = (byte)((uint)fVar37 >> 8);\n          bVar18 = (byte)((uint)fVar37 >> 0x10);\n          bVar27 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            param_5[4] = SUB41(fVar37,0);\n            param_5[5] = bVar17;\n            param_5[6] = bVar18;\n            param_5[7] = bVar27;\n          }\n          else {\n            param_5[4] = bVar27;\n            param_5[5] = bVar18;\n            param_5[6] = bVar17;\n            param_5[7] = SUB41(fVar37,0);\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 8;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      uVar34 = 0;\n      if ((long)param_3 < 1) {\n        return;\n      }\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar36)) {\n          uVar20 = 0;\n        }\n        else {\n          uVar20 = 0;\n          if ((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)) {\n            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = (byte)uVar20;\n          param_5[1] = bVar17;\n          param_5[2] = bVar18;\n          param_5[3] = bVar27;\n        }\n        else {\n          *param_5 = bVar27;\n          param_5[1] = bVar18;\n          param_5[2] = bVar17;\n          param_5[3] = (byte)uVar20;\n        }\n        uVar20 = 0xffffffff;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          if (NAN(fVar36)) {\n            uVar20 = 0;\n          }\n          else {\n            uVar20 = 0;\n            if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          param_5[4] = (byte)uVar20;\n          param_5[5] = bVar17;\n          param_5[6] = bVar18;\n          param_5[7] = bVar27;\n        }\n        else {\n          param_5[4] = bVar27;\n          param_5[5] = bVar18;\n          param_5[6] = bVar17;\n          param_5[7] = (byte)uVar20;\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 8;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }\n    if (uVar34 != 0x40) {\n      if (uVar34 == 0x10) {\n        if ((int)param_2[2] == 1) {\n          if ((long)param_3 < 1) {\n            return;\n          }\n          uVar34 = 0;\n          do {\n            lVar32 = *(long *)(param_1 + 0x360);\n            uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }\n            else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }\n            fVar36 = _DAT_003fa400;\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }\n            uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }\n            else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }\n            param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n            param_5 = param_5 + param_2[6] + 4;\n            uVar34 = uVar34 + 1;\n          } while (uVar34 != param_3);\n          return;\n        }\n        uVar34 = 0;\n        if ((long)param_3 < 1) {\n          return;\n        }\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n          if (NAN(fVar36)) {\n            uVar19 = 0;\n          }\n          else {\n            uVar19 = 0;\n            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = (byte)uVar19;\n            param_5[1] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = (byte)uVar19;\n          }\n          uVar19 = 0xffff;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            if (NAN(fVar36)) {\n              uVar19 = 0;\n            }\n            else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            param_5[2] = (byte)uVar19;\n            param_5[3] = bVar17;\n          }\n          else {\n            param_5[2] = bVar17;\n            param_5[3] = (byte)uVar19;\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 4;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      goto LAB_002734da;\n    }\n    if ((int)param_2[2] == 1) {\n      if ((long)param_3 < 1) {\n        return;\n      }\n      uVar34 = 0;\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        dVar4 = (double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                (double)param_2[0xd] + (double)param_2[3];\n        bVar18 = (byte)((ulong)dVar4 >> 8);\n        bVar23 = (byte)((ulong)dVar4 >> 0x10);\n        bVar24 = (byte)((ulong)dVar4 >> 0x18);\n        bVar25 = (byte)((ulong)dVar4 >> 0x20);\n        bVar26 = (byte)((ulong)dVar4 >> 0x28);\n        bVar27 = (byte)((ulong)dVar4 >> 0x30);\n        bVar17 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = SUB81(dVar4,0);\n          param_5[1] = bVar18;\n          param_5[2] = bVar23;\n          param_5[3] = bVar24;\n          param_5[4] = bVar25;\n          param_5[5] = bVar26;\n          param_5[6] = bVar27;\n          param_5[7] = bVar17;\n        }\n        else {\n          *param_5 = bVar17;\n          param_5[1] = bVar27;\n          param_5[2] = bVar26;\n          param_5[3] = bVar25;\n          param_5[4] = bVar24;\n          param_5[5] = bVar23;\n          param_5[6] = bVar18;\n          param_5[7] = SUB81(dVar4,0);\n        }\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        dVar4 = (double)fVar37 * (double)param_2[0xd] + (double)param_2[3];\n        bVar17 = (byte)((ulong)dVar4 >> 8);\n        bVar18 = (byte)((ulong)dVar4 >> 0x10);\n        bVar27 = (byte)((ulong)dVar4 >> 0x18);\n        bVar26 = (byte)((ulong)dVar4 >> 0x20);\n        bVar25 = (byte)((ulong)dVar4 >> 0x28);\n        bVar24 = (byte)((ulong)dVar4 >> 0x30);\n        bVar23 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          param_5[8] = SUB81(dVar4,0);\n          param_5[9] = bVar17;\n          param_5[10] = bVar18;\n          param_5[0xb] = bVar27;\n          param_5[0xc] = bVar26;\n          param_5[0xd] = bVar25;\n          param_5[0xe] = bVar24;\n          param_5[0xf] = bVar23;\n        }\n        else {\n          param_5[8] = bVar23;\n          param_5[9] = bVar24;\n          param_5[10] = bVar25;\n          param_5[0xb] = bVar26;\n          param_5[0xc] = bVar27;\n          param_5[0xd] = bVar18;\n          param_5[0xe] = bVar17;\n          param_5[0xf] = SUB81(dVar4,0);\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 0x10;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }\n  }\n  if (0x40 < uVar34) {\n    uVar34 = 0;\n  }\n  uVar33 = (2L << ((char)uVar34 - 1U & 0x3f)) - 1;\nLAB_002734e9:\n  if (0 < (long)param_3) {\n    uVar34 = 0;\n    do {\n      lVar32 = *(long *)(param_1 + 0x360);\n      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n      if (NAN(fVar36)) {\n        uVar31 = 0;\n      }\n      else {\n        uVar31 = 0;\n        if (0.0 < fVar36) {\n          dVar5 = ((double)fVar36 * (double)uVar33) / dVar4;\n          uVar31 = 0xffffffffffffffff;\n          if (dVar5 < dVar9) {\n            dVar5 = dVar5 + dVar7;\n            if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }\n          }\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      fVar36 = _DAT_003fa400;\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) == 0) {\nLAB_002745f5:\n        dVar5 = ((double)fVar36 * (double)uVar33) / DAT_003f95f8;\n        uVar31 = 0xffffffffffffffff;\n        if (dVar5 < DAT_003fa3a0) {\n          dVar5 = dVar5 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar5) {\n            uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar31 = (ulong)dVar5;\n          }\n        }\n      }\n      else {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          uVar31 = 0;\n        }\n        else {\n          uVar31 = 0;\n          if (0.0 < fVar36) goto LAB_002745f5;\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n      param_5 = param_5 + param_2[6];\n      uVar34 = uVar34 + 1;\n    } while (param_3 != uVar34);\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00273473(long param_1,ulong *param_2,ulong param_3,long param_4,byte *param_5,long param_6)" (identifier "FUN_00273473") (parameter_list "(long param_1,ulong *param_2,ulong param_3,long param_4,byte *param_5,long param_6)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "ulong *param_2" (type_identifier "ulong") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "ulong param_3" (type_identifier "ulong") (identifier "param_3")) (, ",") (parameter_declaration "long param_4" (sized_type_specifier "long" (long "long")) (identifier "param_4")) (, ",") (parameter_declaration "byte *param_5" (type_identifier "byte") (pointer_declarator "*param_5" (* "*") (identifier "param_5"))) (, ",") (parameter_declaration "long param_6" (sized_type_specifier "long" (long "long")) (identifier "param_6")) () ")"))) (compound_statement "{\n  byte *pbVar1;\n  bool bVar2;\n  long lVar3;\n  double dVar4;\n  double dVar5;\n  bool bVar6;\n  double dVar7;\n  double dVar8;\n  double dVar9;\n  double dVar10;\n  double dVar11;\n  double dVar12;\n  float fVar13;\n  float fVar14;\n  float fVar15;\n  double dVar16;\n  byte bVar17;\n  byte bVar18;\n  undefined2 uVar19;\n  undefined4 uVar20;\n  ulong uVar21;\n  ulong uVar22;\n  byte bVar23;\n  uint uVar28;\n  ulong uVar29;\n  ulong uVar30;\n  ulong uVar31;\n  long lVar32;\n  ulong uVar33;\n  ulong uVar34;\n  bool bVar35;\n  float fVar36;\n  float fVar37;\n  byte bVar24;\n  byte bVar25;\n  byte bVar26;\n  byte bVar27;\n  \n  dVar16 = DAT_0042f2e8;\n  fVar15 = DAT_0041abe0;\n  fVar14 = DAT_0041abdc;\n  fVar13 = DAT_0041abd8;\n  dVar12 = DAT_00404938;\n  dVar11 = DAT_00404930;\n  dVar10 = DAT_00404928;\n  dVar5 = DAT_00404920;\n  fVar36 = _DAT_003fa400;\n  dVar9 = DAT_003fa3a0;\n  dVar8 = DAT_003f9c40;\n  dVar7 = DAT_003f9c28;\n  dVar4 = DAT_003f95f8;\n  if (param_6 == 0) {\n                    \n    __assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x89f,\n                  "ExportGrayAlphaQuantum");\n  }\n  if (*(long *)(param_6 + 0x30) != 0xabacadab) {\n                    \n    __assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x8a0,\n                  "ExportGrayAlphaQuantum");\n  }\n  uVar34 = *param_2;\n  if (uVar34 == 8) {\n    uVar34 = 0;\n    if ((long)param_3 < 1) {\n      return;\n    }\n    do {\n      lVar32 = *(long *)(param_1 + 0x360);\n      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n      if (NAN(fVar36)) {\n        bVar17 = 0;\n      }\n      else {\n        bVar17 = 0;\n        if ((0.0 < fVar36) && (dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12)) {\n          bVar17 = (byte)(int)(dVar4 + dVar7);\n        }\n      }\n      *param_5 = bVar17;\n      bVar17 = 0xff;\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if ((0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)) {\n            bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);\n          }\n        }\n      }\n      param_5[1] = bVar17;\n      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n      param_5 = param_5 + param_2[6] + 2;\n      uVar34 = uVar34 + 1;\n    } while (uVar34 != param_3);\n    return;\n  }\n  if (uVar34 < 9) {\n    if (uVar34 == 1) {\n      bVar35 = (int)param_2[7] == 0;\n      bVar6 = !bVar35;\n      if (param_3 != 3 && -1 < (long)(param_3 - 3)) {\n        pbVar1 = param_5 + (param_3 - 4 >> 2) + 1;\n        do {\n          *param_5 = 0;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar18 = (byte)(uVar28 << 7);\n          *param_5 = bVar18;\n          bVar17 = 0x40;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar17 = 0x40;\n            }\n            else {\n              bVar17 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar17 = bVar17 | (byte)(uVar28 << 5);\n          *param_5 = bVar17;\n          bVar18 = 0x10;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 0x10;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            bVar2 = bVar6;\n          }\n          bVar17 = bVar17 | bVar2 * '\b';\n          *param_5 = bVar17;\n          bVar18 = 4;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 4;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar6;\n          if (DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) <= DAT_003fc580) {\n            bVar2 = bVar35;\n          }\n          bVar17 = bVar17 | bVar2 * '\x02';\n          *param_5 = bVar17;\n          fVar36 = _DAT_003fa400;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          *param_5 = bVar17 | fVar36 == _DAT_003fa400;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + 1;\n        } while (param_5 != pbVar1);\n      }\n      if ((param_3 & 3) == 0) {\n        return;\n      }\n      *param_5 = 0;\n      fVar15 = DAT_0041abe0;\n      fVar14 = DAT_0041abdc;\n      fVar13 = DAT_0041abd8;\n      fVar36 = _DAT_003fa400;\n      bVar17 = 7;\n      lVar32 = 0;\n      do {\n        lVar3 = *(long *)(param_1 + 0x360);\n        bVar2 = bVar35;\n        if (DAT_003fc580 <\n            fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4) +\n            fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4) +\n            fVar15 * *(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)) {\n          bVar2 = bVar6;\n        }\n        bVar18 = bVar2 << (bVar17 & 0x1f) | *param_5;\n        *param_5 = bVar18;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        uVar28 = (uint)(!NAN(fVar37) && !NAN(_DAT_003fa400));\n        if (fVar37 != _DAT_003fa400) {\n          uVar28 = 0;\n        }\n        *param_5 = (byte)(uVar28 << (bVar17 - 1 & 0x1f)) | bVar18;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        lVar32 = lVar32 + 2;\n        bVar17 = bVar17 - 2;\n      } while (lVar32 <= (long)(ulong)((uint)param_3 & 3));\n      return;\n    }\n    if (uVar34 == 4) {\n      pbVar1 = param_5 + param_3;\n      if ((long)param_3 < 1) {\n        return;\n      }\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar37 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar37)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if (0.0 < fVar37) {\n            dVar4 = (double)fVar37 / dVar11;\n            bVar17 = 0xff;\n            if (dVar4 < dVar12) {\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }\n          }\n        }\n        *param_5 = bVar17 & 0xf0;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        *param_5 = bVar17 & 0xf0 | (byte)(int)((double)fVar37 * dVar16 + dVar7) & 0xf;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + 1;\n      } while (param_5 != pbVar1);\n      return;\n    }\nLAB_002734da:\n    uVar33 = 0;\n    if (uVar34 == 0) goto LAB_002734e9;\n  }\n  else {\n    if (uVar34 == 0x20) {\n      if ((int)param_2[2] == 1) {\n        if ((long)param_3 < 1) {\n          return;\n        }\n        uVar34 = 0;\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar37 = (float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3]);\n          bVar18 = (byte)((uint)fVar37 >> 8);\n          bVar27 = (byte)((uint)fVar37 >> 0x10);\n          bVar17 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = SUB41(fVar37,0);\n            param_5[1] = bVar18;\n            param_5[2] = bVar27;\n            param_5[3] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = bVar27;\n            param_5[2] = bVar18;\n            param_5[3] = SUB41(fVar37,0);\n          }\n          fVar37 = fVar36;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          fVar37 = (float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3]);\n          bVar17 = (byte)((uint)fVar37 >> 8);\n          bVar18 = (byte)((uint)fVar37 >> 0x10);\n          bVar27 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            param_5[4] = SUB41(fVar37,0);\n            param_5[5] = bVar17;\n            param_5[6] = bVar18;\n            param_5[7] = bVar27;\n          }\n          else {\n            param_5[4] = bVar27;\n            param_5[5] = bVar18;\n            param_5[6] = bVar17;\n            param_5[7] = SUB41(fVar37,0);\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 8;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      uVar34 = 0;\n      if ((long)param_3 < 1) {\n        return;\n      }\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar36)) {\n          uVar20 = 0;\n        }\n        else {\n          uVar20 = 0;\n          if ((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)) {\n            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = (byte)uVar20;\n          param_5[1] = bVar17;\n          param_5[2] = bVar18;\n          param_5[3] = bVar27;\n        }\n        else {\n          *param_5 = bVar27;\n          param_5[1] = bVar18;\n          param_5[2] = bVar17;\n          param_5[3] = (byte)uVar20;\n        }\n        uVar20 = 0xffffffff;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          if (NAN(fVar36)) {\n            uVar20 = 0;\n          }\n          else {\n            uVar20 = 0;\n            if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          param_5[4] = (byte)uVar20;\n          param_5[5] = bVar17;\n          param_5[6] = bVar18;\n          param_5[7] = bVar27;\n        }\n        else {\n          param_5[4] = bVar27;\n          param_5[5] = bVar18;\n          param_5[6] = bVar17;\n          param_5[7] = (byte)uVar20;\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 8;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }\n    if (uVar34 != 0x40) {\n      if (uVar34 == 0x10) {\n        if ((int)param_2[2] == 1) {\n          if ((long)param_3 < 1) {\n            return;\n          }\n          uVar34 = 0;\n          do {\n            lVar32 = *(long *)(param_1 + 0x360);\n            uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }\n            else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }\n            fVar36 = _DAT_003fa400;\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }\n            uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }\n            else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }\n            param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n            param_5 = param_5 + param_2[6] + 4;\n            uVar34 = uVar34 + 1;\n          } while (uVar34 != param_3);\n          return;\n        }\n        uVar34 = 0;\n        if ((long)param_3 < 1) {\n          return;\n        }\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n          if (NAN(fVar36)) {\n            uVar19 = 0;\n          }\n          else {\n            uVar19 = 0;\n            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = (byte)uVar19;\n            param_5[1] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = (byte)uVar19;\n          }\n          uVar19 = 0xffff;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            if (NAN(fVar36)) {\n              uVar19 = 0;\n            }\n            else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            param_5[2] = (byte)uVar19;\n            param_5[3] = bVar17;\n          }\n          else {\n            param_5[2] = bVar17;\n            param_5[3] = (byte)uVar19;\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 4;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      goto LAB_002734da;\n    }\n    if ((int)param_2[2] == 1) {\n      if ((long)param_3 < 1) {\n        return;\n      }\n      uVar34 = 0;\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        dVar4 = (double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                (double)param_2[0xd] + (double)param_2[3];\n        bVar18 = (byte)((ulong)dVar4 >> 8);\n        bVar23 = (byte)((ulong)dVar4 >> 0x10);\n        bVar24 = (byte)((ulong)dVar4 >> 0x18);\n        bVar25 = (byte)((ulong)dVar4 >> 0x20);\n        bVar26 = (byte)((ulong)dVar4 >> 0x28);\n        bVar27 = (byte)((ulong)dVar4 >> 0x30);\n        bVar17 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = SUB81(dVar4,0);\n          param_5[1] = bVar18;\n          param_5[2] = bVar23;\n          param_5[3] = bVar24;\n          param_5[4] = bVar25;\n          param_5[5] = bVar26;\n          param_5[6] = bVar27;\n          param_5[7] = bVar17;\n        }\n        else {\n          *param_5 = bVar17;\n          param_5[1] = bVar27;\n          param_5[2] = bVar26;\n          param_5[3] = bVar25;\n          param_5[4] = bVar24;\n          param_5[5] = bVar23;\n          param_5[6] = bVar18;\n          param_5[7] = SUB81(dVar4,0);\n        }\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        dVar4 = (double)fVar37 * (double)param_2[0xd] + (double)param_2[3];\n        bVar17 = (byte)((ulong)dVar4 >> 8);\n        bVar18 = (byte)((ulong)dVar4 >> 0x10);\n        bVar27 = (byte)((ulong)dVar4 >> 0x18);\n        bVar26 = (byte)((ulong)dVar4 >> 0x20);\n        bVar25 = (byte)((ulong)dVar4 >> 0x28);\n        bVar24 = (byte)((ulong)dVar4 >> 0x30);\n        bVar23 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          param_5[8] = SUB81(dVar4,0);\n          param_5[9] = bVar17;\n          param_5[10] = bVar18;\n          param_5[0xb] = bVar27;\n          param_5[0xc] = bVar26;\n          param_5[0xd] = bVar25;\n          param_5[0xe] = bVar24;\n          param_5[0xf] = bVar23;\n        }\n        else {\n          param_5[8] = bVar23;\n          param_5[9] = bVar24;\n          param_5[10] = bVar25;\n          param_5[0xb] = bVar26;\n          param_5[0xc] = bVar27;\n          param_5[0xd] = bVar18;\n          param_5[0xe] = bVar17;\n          param_5[0xf] = SUB81(dVar4,0);\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 0x10;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }\n  }\n  if (0x40 < uVar34) {\n    uVar34 = 0;\n  }\n  uVar33 = (2L << ((char)uVar34 - 1U & 0x3f)) - 1;\nLAB_002734e9:\n  if (0 < (long)param_3) {\n    uVar34 = 0;\n    do {\n      lVar32 = *(long *)(param_1 + 0x360);\n      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n      if (NAN(fVar36)) {\n        uVar31 = 0;\n      }\n      else {\n        uVar31 = 0;\n        if (0.0 < fVar36) {\n          dVar5 = ((double)fVar36 * (double)uVar33) / dVar4;\n          uVar31 = 0xffffffffffffffff;\n          if (dVar5 < dVar9) {\n            dVar5 = dVar5 + dVar7;\n            if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }\n          }\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      fVar36 = _DAT_003fa400;\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) == 0) {\nLAB_002745f5:\n        dVar5 = ((double)fVar36 * (double)uVar33) / DAT_003f95f8;\n        uVar31 = 0xffffffffffffffff;\n        if (dVar5 < DAT_003fa3a0) {\n          dVar5 = dVar5 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar5) {\n            uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar31 = (ulong)dVar5;\n          }\n        }\n      }\n      else {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          uVar31 = 0;\n        }\n        else {\n          uVar31 = 0;\n          if (0.0 < fVar36) goto LAB_002745f5;\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n      param_5 = param_5 + param_2[6];\n      uVar34 = uVar34 + 1;\n    } while (param_3 != uVar34);\n  }\n  return;\n}" ({ "{") (declaration "byte *pbVar1;" (type_identifier "byte") (pointer_declarator "*pbVar1" (* "*") (identifier "pbVar1")) (; ";")) (declaration "bool bVar2;" (primitive_type "bool") (identifier "bVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "double dVar4;" (primitive_type "double") (identifier "dVar4") (; ";")) (declaration "double dVar5;" (primitive_type "double") (identifier "dVar5") (; ";")) (declaration "bool bVar6;" (primitive_type "bool") (identifier "bVar6") (; ";")) (declaration "double dVar7;" (primitive_type "double") (identifier "dVar7") (; ";")) (declaration "double dVar8;" (primitive_type "double") (identifier "dVar8") (; ";")) (declaration "double dVar9;" (primitive_type "double") (identifier "dVar9") (; ";")) (declaration "double dVar10;" (primitive_type "double") (identifier "dVar10") (; ";")) (declaration "double dVar11;" (primitive_type "double") (identifier "dVar11") (; ";")) (declaration "double dVar12;" (primitive_type "double") (identifier "dVar12") (; ";")) (declaration "float fVar13;" (primitive_type "float") (identifier "fVar13") (; ";")) (declaration "float fVar14;" (primitive_type "float") (identifier "fVar14") (; ";")) (declaration "float fVar15;" (primitive_type "float") (identifier "fVar15") (; ";")) (declaration "double dVar16;" (primitive_type "double") (identifier "dVar16") (; ";")) (declaration "byte bVar17;" (type_identifier "byte") (identifier "bVar17") (; ";")) (declaration "byte bVar18;" (type_identifier "byte") (identifier "bVar18") (; ";")) (declaration "undefined2 uVar19;" (type_identifier "undefined2") (identifier "uVar19") (; ";")) (declaration "undefined4 uVar20;" (type_identifier "undefined4") (identifier "uVar20") (; ";")) (declaration "ulong uVar21;" (type_identifier "ulong") (identifier "uVar21") (; ";")) (declaration "ulong uVar22;" (type_identifier "ulong") (identifier "uVar22") (; ";")) (declaration "byte bVar23;" (type_identifier "byte") (identifier "bVar23") (; ";")) (declaration "uint uVar28;" (type_identifier "uint") (identifier "uVar28") (; ";")) (declaration "ulong uVar29;" (type_identifier "ulong") (identifier "uVar29") (; ";")) (declaration "ulong uVar30;" (type_identifier "ulong") (identifier "uVar30") (; ";")) (declaration "ulong uVar31;" (type_identifier "ulong") (identifier "uVar31") (; ";")) (declaration "long lVar32;" (sized_type_specifier "long" (long "long")) (identifier "lVar32") (; ";")) (declaration "ulong uVar33;" (type_identifier "ulong") (identifier "uVar33") (; ";")) (declaration "ulong uVar34;" (type_identifier "ulong") (identifier "uVar34") (; ";")) (declaration "bool bVar35;" (primitive_type "bool") (identifier "bVar35") (; ";")) (declaration "float fVar36;" (primitive_type "float") (identifier "fVar36") (; ";")) (declaration "float fVar37;" (primitive_type "float") (identifier "fVar37") (; ";")) (declaration "byte bVar24;" (type_identifier "byte") (identifier "bVar24") (; ";")) (declaration "byte bVar25;" (type_identifier "byte") (identifier "bVar25") (; ";")) (declaration "byte bVar26;" (type_identifier "byte") (identifier "bVar26") (; ";")) (declaration "byte bVar27;" (type_identifier "byte") (identifier "bVar27") (; ";")) (expression_statement "dVar16 = DAT_0042f2e8;" (assignment_expression "dVar16 = DAT_0042f2e8" (identifier "dVar16") (= "=") (identifier "DAT_0042f2e8")) (; ";")) (expression_statement "fVar15 = DAT_0041abe0;" (assignment_expression "fVar15 = DAT_0041abe0" (identifier "fVar15") (= "=") (identifier "DAT_0041abe0")) (; ";")) (expression_statement "fVar14 = DAT_0041abdc;" (assignment_expression "fVar14 = DAT_0041abdc" (identifier "fVar14") (= "=") (identifier "DAT_0041abdc")) (; ";")) (expression_statement "fVar13 = DAT_0041abd8;" (assignment_expression "fVar13 = DAT_0041abd8" (identifier "fVar13") (= "=") (identifier "DAT_0041abd8")) (; ";")) (expression_statement "dVar12 = DAT_00404938;" (assignment_expression "dVar12 = DAT_00404938" (identifier "dVar12") (= "=") (identifier "DAT_00404938")) (; ";")) (expression_statement "dVar11 = DAT_00404930;" (assignment_expression "dVar11 = DAT_00404930" (identifier "dVar11") (= "=") (identifier "DAT_00404930")) (; ";")) (expression_statement "dVar10 = DAT_00404928;" (assignment_expression "dVar10 = DAT_00404928" (identifier "dVar10") (= "=") (identifier "DAT_00404928")) (; ";")) (expression_statement "dVar5 = DAT_00404920;" (assignment_expression "dVar5 = DAT_00404920" (identifier "dVar5") (= "=") (identifier "DAT_00404920")) (; ";")) (expression_statement "fVar36 = _DAT_003fa400;" (assignment_expression "fVar36 = _DAT_003fa400" (identifier "fVar36") (= "=") (identifier "_DAT_003fa400")) (; ";")) (expression_statement "dVar9 = DAT_003fa3a0;" (assignment_expression "dVar9 = DAT_003fa3a0" (identifier "dVar9") (= "=") (identifier "DAT_003fa3a0")) (; ";")) (expression_statement "dVar8 = DAT_003f9c40;" (assignment_expression "dVar8 = DAT_003f9c40" (identifier "dVar8") (= "=") (identifier "DAT_003f9c40")) (; ";")) (expression_statement "dVar7 = DAT_003f9c28;" (assignment_expression "dVar7 = DAT_003f9c28" (identifier "dVar7") (= "=") (identifier "DAT_003f9c28")) (; ";")) (expression_statement "dVar4 = DAT_003f95f8;" (assignment_expression "dVar4 = DAT_003f95f8" (identifier "dVar4") (= "=") (identifier "DAT_003f95f8")) (; ";")) (if_statement "if (param_6 == 0) {\n                    \n    __assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x89f,\n                  "ExportGrayAlphaQuantum");\n  }" (if "if") (parenthesized_expression "(param_6 == 0)" (( "(") (binary_expression "param_6 == 0" (identifier "param_6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    __assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x89f,\n                  "ExportGrayAlphaQuantum");\n  }" ({ "{") (expression_statement "__assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x89f,\n                  "ExportGrayAlphaQuantum");" (call_expression "__assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x89f,\n                  "ExportGrayAlphaQuantum")" (identifier "__assert_fail") (argument_list "("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x89f,\n                  "ExportGrayAlphaQuantum")" (( "(") (string_literal ""exception != (ExceptionInfo *) NULL"" (" """) (string_content "exception != (ExceptionInfo *) NULL") (" """)) (, ",") (string_literal ""MagickCore/quantum-export.c"" (" """) (string_content "MagickCore/quantum-export.c") (" """)) (, ",") (number_literal "0x89f") (, ",") (string_literal ""ExportGrayAlphaQuantum"" (" """) (string_content "ExportGrayAlphaQuantum") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if (*(long *)(param_6 + 0x30) != 0xabacadab) {\n                    \n    __assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x8a0,\n                  "ExportGrayAlphaQuantum");\n  }" (if "if") (parenthesized_expression "(*(long *)(param_6 + 0x30) != 0xabacadab)" (( "(") (binary_expression "*(long *)(param_6 + 0x30) != 0xabacadab" (pointer_expression "*(long *)(param_6 + 0x30)" (* "*") (cast_expression "(long *)(param_6 + 0x30)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + 0x30)" (( "(") (binary_expression "param_6 + 0x30" (identifier "param_6") (+ "+") (number_literal "0x30")) () ")")))) (!= "!=") (number_literal "0xabacadab")) () ")")) (compound_statement "{\n                    \n    __assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x8a0,\n                  "ExportGrayAlphaQuantum");\n  }" ({ "{") (expression_statement "__assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x8a0,\n                  "ExportGrayAlphaQuantum");" (call_expression "__assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x8a0,\n                  "ExportGrayAlphaQuantum")" (identifier "__assert_fail") (argument_list "("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x8a0,\n                  "ExportGrayAlphaQuantum")" (( "(") (string_literal ""exception->signature == MagickCoreSignature"" (" """) (string_content "exception->signature == MagickCoreSignature") (" """)) (, ",") (string_literal ""MagickCore/quantum-export.c"" (" """) (string_content "MagickCore/quantum-export.c") (" """)) (, ",") (number_literal "0x8a0") (, ",") (string_literal ""ExportGrayAlphaQuantum"" (" """) (string_content "ExportGrayAlphaQuantum") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "uVar34 = *param_2;" (assignment_expression "uVar34 = *param_2" (identifier "uVar34") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (if_statement "if (uVar34 == 8) {\n    uVar34 = 0;\n    if ((long)param_3 < 1) {\n      return;\n    }\n    do {\n      lVar32 = *(long *)(param_1 + 0x360);\n      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n      if (NAN(fVar36)) {\n        bVar17 = 0;\n      }\n      else {\n        bVar17 = 0;\n        if ((0.0 < fVar36) && (dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12)) {\n          bVar17 = (byte)(int)(dVar4 + dVar7);\n        }\n      }\n      *param_5 = bVar17;\n      bVar17 = 0xff;\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if ((0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)) {\n            bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);\n          }\n        }\n      }\n      param_5[1] = bVar17;\n      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n      param_5 = param_5 + param_2[6] + 2;\n      uVar34 = uVar34 + 1;\n    } while (uVar34 != param_3);\n    return;\n  }" (if "if") (parenthesized_expression "(uVar34 == 8)" (( "(") (binary_expression "uVar34 == 8" (identifier "uVar34") (== "==") (number_literal "8")) () ")")) (compound_statement "{\n    uVar34 = 0;\n    if ((long)param_3 < 1) {\n      return;\n    }\n    do {\n      lVar32 = *(long *)(param_1 + 0x360);\n      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n      if (NAN(fVar36)) {\n        bVar17 = 0;\n      }\n      else {\n        bVar17 = 0;\n        if ((0.0 < fVar36) && (dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12)) {\n          bVar17 = (byte)(int)(dVar4 + dVar7);\n        }\n      }\n      *param_5 = bVar17;\n      bVar17 = 0xff;\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if ((0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)) {\n            bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);\n          }\n        }\n      }\n      param_5[1] = bVar17;\n      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n      param_5 = param_5 + param_2[6] + 2;\n      uVar34 = uVar34 + 1;\n    } while (uVar34 != param_3);\n    return;\n  }" ({ "{") (expression_statement "uVar34 = 0;" (assignment_expression "uVar34 = 0" (identifier "uVar34") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((long)param_3 < 1) {\n      return;\n    }" (if "if") (parenthesized_expression "((long)param_3 < 1)" (( "(") (binary_expression "(long)param_3 < 1" (cast_expression "(long)param_3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_3")) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (do_statement "do {\n      lVar32 = *(long *)(param_1 + 0x360);\n      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n      if (NAN(fVar36)) {\n        bVar17 = 0;\n      }\n      else {\n        bVar17 = 0;\n        if ((0.0 < fVar36) && (dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12)) {\n          bVar17 = (byte)(int)(dVar4 + dVar7);\n        }\n      }\n      *param_5 = bVar17;\n      bVar17 = 0xff;\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if ((0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)) {\n            bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);\n          }\n        }\n      }\n      param_5[1] = bVar17;\n      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n      param_5 = param_5 + param_2[6] + 2;\n      uVar34 = uVar34 + 1;\n    } while (uVar34 != param_3);" (do "do") (compound_statement "{\n      lVar32 = *(long *)(param_1 + 0x360);\n      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n      if (NAN(fVar36)) {\n        bVar17 = 0;\n      }\n      else {\n        bVar17 = 0;\n        if ((0.0 < fVar36) && (dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12)) {\n          bVar17 = (byte)(int)(dVar4 + dVar7);\n        }\n      }\n      *param_5 = bVar17;\n      bVar17 = 0xff;\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if ((0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)) {\n            bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);\n          }\n        }\n      }\n      param_5[1] = bVar17;\n      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n      param_5 = param_5 + param_2[6] + 2;\n      uVar34 = uVar34 + 1;\n    }" ({ "{") (expression_statement "lVar32 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar32 = *(long *)(param_1 + 0x360)" (identifier "lVar32") (= "=") (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")"))))) (; ";")) (expression_statement "fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);" (assignment_expression "fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (identifier "fVar36") (= "=") (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (identifier "fVar14") (* "*") (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x18) * 4)" (( "(") (binary_expression "param_4 + *(long *)(lVar32 + 0x18) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(lVar32 + 0x18) * 4" (pointer_expression "*(long *)(lVar32 + 0x18)" (* "*") (cast_expression "(long *)(lVar32 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar32 + 0x18)" (( "(") (binary_expression "lVar32 + 0x18" (identifier "lVar32") (+ "+") (number_literal "0x18")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) (+ "+") (binary_expression "fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (identifier "fVar13") (* "*") (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(lVar32 + 8) * 4)" (( "(") (binary_expression "param_4 + *(long *)(lVar32 + 8) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(lVar32 + 8) * 4" (pointer_expression "*(long *)(lVar32 + 8)" (* "*") (cast_expression "(long *)(lVar32 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar32 + 8)" (( "(") (binary_expression "lVar32 + 8" (identifier "lVar32") (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "4"))) () ")")))))) (+ "+") (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (identifier "fVar15") (* "*") (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x28) * 4)" (( "(") (binary_expression "param_4 + *(long *)(lVar32 + 0x28) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(lVar32 + 0x28) * 4" (pointer_expression "*(long *)(lVar32 + 0x28)" (* "*") (cast_expression "(long *)(lVar32 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar32 + 0x28)" (( "(") (binary_expression "lVar32 + 0x28" (identifier "lVar32") (+ "+") (number_literal "0x28")) () ")")))) (* "*") (number_literal "4"))) () ")"))))))) (; ";")) (if_statement "if (NAN(fVar36)) {\n        bVar17 = 0;\n      }\n      else {\n        bVar17 = 0;\n        if ((0.0 < fVar36) && (dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12)) {\n          bVar17 = (byte)(int)(dVar4 + dVar7);\n        }\n      }" (if "if") (parenthesized_expression "(NAN(fVar36))" (( "(") (call_expression "NAN(fVar36)" (identifier "NAN") (argument_list "(fVar36)" (( "(") (identifier "fVar36") () ")"))) () ")")) (compound_statement "{\n        bVar17 = 0;\n      }" ({ "{") (expression_statement "bVar17 = 0;" (assignment_expression "bVar17 = 0" (identifier "bVar17") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n        bVar17 = 0;\n        if ((0.0 < fVar36) && (dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12)) {\n          bVar17 = (byte)(int)(dVar4 + dVar7);\n        }\n      }" (else "else") (compound_statement "{\n        bVar17 = 0;\n        if ((0.0 < fVar36) && (dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12)) {\n          bVar17 = (byte)(int)(dVar4 + dVar7);\n        }\n      }" ({ "{") (expression_statement "bVar17 = 0;" (assignment_expression "bVar17 = 0" (identifier "bVar17") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((0.0 < fVar36) && (dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12)) {\n          bVar17 = (byte)(int)(dVar4 + dVar7);\n        }" (if "if") (parenthesized_expression "((0.0 < fVar36) && (dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12))" (( "(") (binary_expression "(0.0 < fVar36) && (dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12)" (parenthesized_expression "(0.0 < fVar36)" (( "(") (binary_expression "0.0 < fVar36" (number_literal "0.0") (< "<") (identifier "fVar36")) () ")")) (&& "&&") (parenthesized_expression "(dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12)" (( "(") (comma_expression "dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12" (assignment_expression "dVar4 = (double)fVar36 / dVar11" (identifier "dVar4") (= "=") (binary_expression "(double)fVar36 / dVar11" (cast_expression "(double)fVar36" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "fVar36")) (/ "/") (identifier "dVar11"))) (, ",") (comma_expression "bVar17 = 0xff, dVar4 < dVar12" (assignment_expression "bVar17 = 0xff" (identifier "bVar17") (= "=") (number_literal "0xff")) (, ",") (binary_expression "dVar4 < dVar12" (identifier "dVar4") (< "<") (identifier "dVar12")))) () ")"))) () ")")) (compound_statement "{\n          bVar17 = (byte)(int)(dVar4 + dVar7);\n        }" ({ "{") (expression_statement "bVar17 = (byte)(int)(dVar4 + dVar7);" (assignment_expression "bVar17 = (byte)(int)(dVar4 + dVar7)" (identifier "bVar17") (= "=") (call_expression "(byte)(int)(dVar4 + dVar7)" (call_expression "(byte)(int)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(int)" (( "(") (identifier "int") () ")"))) (argument_list "(dVar4 + dVar7)" (( "(") (binary_expression "dVar4 + dVar7" (identifier "dVar4") (+ "+") (identifier "dVar7")) () ")")))) (; ";")) (} "}"))) (} "}")))) (expression_statement "*param_5 = bVar17;" (assignment_expression "*param_5 = bVar17" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (= "=") (identifier "bVar17")) (; ";")) (expression_statement "bVar17 = 0xff;" (assignment_expression "bVar17 = 0xff" (identifier "bVar17") (= "=") (number_literal "0xff")) (; ";")) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if ((0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)) {\n            bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);\n          }\n        }\n      }" (if "if") (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0)" (( "(") (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44)" (* "*") (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x44)" (( "(") (binary_expression "*(long *)(param_1 + 0x360) + 0x44" (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (number_literal "0x44")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if ((0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)) {\n            bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);\n          }\n        }\n      }" ({ "{") (expression_statement "fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);" (assignment_expression "fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (identifier "fVar36") (= "=") (pointer_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (( "(") (binary_expression "param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48)" (* "*") (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x48)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x48)" (( "(") (binary_expression "*(long *)(param_1 + 0x360) + 0x48" (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (number_literal "0x48")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (if_statement "if (NAN(fVar36)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if ((0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)) {\n            bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);\n          }\n        }" (if "if") (parenthesized_expression "(NAN(fVar36))" (( "(") (call_expression "NAN(fVar36)" (identifier "NAN") (argument_list "(fVar36)" (( "(") (identifier "fVar36") () ")"))) () ")")) (compound_statement "{\n          bVar17 = 0;\n        }" ({ "{") (expression_statement "bVar17 = 0;" (assignment_expression "bVar17 = 0" (identifier "bVar17") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n          bVar17 = 0;\n          if ((0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)) {\n            bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);\n          }\n        }" (else "else") (compound_statement "{\n          bVar17 = 0;\n          if ((0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)) {\n            bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);\n          }\n        }" ({ "{") (expression_statement "bVar17 = 0;" (assignment_expression "bVar17 = 0" (identifier "bVar17") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)) {\n            bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);\n          }" (if "if") (parenthesized_expression "((0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938))" (( "(") (binary_expression "(0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)" (parenthesized_expression "(0.0 < fVar36)" (( "(") (binary_expression "0.0 < fVar36" (number_literal "0.0") (< "<") (identifier "fVar36")) () ")")) (&& "&&") (parenthesized_expression "(bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)" (( "(") (comma_expression "bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938" (assignment_expression "bVar17 = 0xff" (identifier "bVar17") (= "=") (number_literal "0xff")) (, ",") (binary_expression "(double)fVar36 / DAT_00404930 < DAT_00404938" (binary_expression "(double)fVar36 / DAT_00404930" (cast_expression "(double)fVar36" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "fVar36")) (/ "/") (identifier "DAT_00404930")) (< "<") (identifier "DAT_00404938"))) () ")"))) () ")")) (compound_statement "{\n            bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);\n          }" ({ "{") (expression_statement "bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);" (assignment_expression "bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28)" (identifier "bVar17") (= "=") (call_expression "(byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28)" (call_expression "(byte)(int)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(int)" (( "(") (identifier "int") () ")"))) (argument_list "((double)fVar36 / DAT_00404930 + DAT_003f9c28)" (( "(") (binary_expression "(double)fVar36 / DAT_00404930 + DAT_003f9c28" (binary_expression "(double)fVar36 / DAT_00404930" (cast_expression "(double)fVar36" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "fVar36")) (/ "/") (identifier "DAT_00404930")) (+ "+") (identifier "DAT_003f9c28")) () ")")))) (; ";")) (} "}"))) (} "}")))) (} "}"))) (expression_statement "param_5[1] = bVar17;" (assignment_expression "param_5[1] = bVar17" (subscript_expression "param_5[1]" (identifier "param_5") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "bVar17")) (; ";")) (expression_statement "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4" (identifier "param_4") (= "=") (binary_expression "param_4 + *(long *)(param_1 + 0x340) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" (* "*") (cast_expression "(long *)(param_1 + 0x340)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x340)" (( "(") (binary_expression "param_1 + 0x340" (identifier "param_1") (+ "+") (number_literal "0x340")) () ")")))) (* "*") (number_literal "4")))) (; ";")) (expression_statement "param_5 = param_5 + param_2[6] + 2;" (assignment_expression "param_5 = param_5 + param_2[6] + 2" (identifier "param_5") (= "=") (binary_expression "param_5 + param_2[6] + 2" (binary_expression "param_5 + param_2[6]" (identifier "param_5") (+ "+") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]"))) (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar34 = uVar34 + 1;" (assignment_expression "uVar34 = uVar34 + 1" (identifier "uVar34") (= "=") (binary_expression "uVar34 + 1" (identifier "uVar34") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar34 != param_3)" (( "(") (binary_expression "uVar34 != param_3" (identifier "uVar34") (!= "!=") (identifier "param_3")) () ")")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (uVar34 < 9) {\n    if (uVar34 == 1) {\n      bVar35 = (int)param_2[7] == 0;\n      bVar6 = !bVar35;\n      if (param_3 != 3 && -1 < (long)(param_3 - 3)) {\n        pbVar1 = param_5 + (param_3 - 4 >> 2) + 1;\n        do {\n          *param_5 = 0;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar18 = (byte)(uVar28 << 7);\n          *param_5 = bVar18;\n          bVar17 = 0x40;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar17 = 0x40;\n            }\n            else {\n              bVar17 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar17 = bVar17 | (byte)(uVar28 << 5);\n          *param_5 = bVar17;\n          bVar18 = 0x10;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 0x10;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            bVar2 = bVar6;\n          }\n          bVar17 = bVar17 | bVar2 * '\b';\n          *param_5 = bVar17;\n          bVar18 = 4;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 4;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar6;\n          if (DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) <= DAT_003fc580) {\n            bVar2 = bVar35;\n          }\n          bVar17 = bVar17 | bVar2 * '\x02';\n          *param_5 = bVar17;\n          fVar36 = _DAT_003fa400;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          *param_5 = bVar17 | fVar36 == _DAT_003fa400;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + 1;\n        } while (param_5 != pbVar1);\n      }\n      if ((param_3 & 3) == 0) {\n        return;\n      }\n      *param_5 = 0;\n      fVar15 = DAT_0041abe0;\n      fVar14 = DAT_0041abdc;\n      fVar13 = DAT_0041abd8;\n      fVar36 = _DAT_003fa400;\n      bVar17 = 7;\n      lVar32 = 0;\n      do {\n        lVar3 = *(long *)(param_1 + 0x360);\n        bVar2 = bVar35;\n        if (DAT_003fc580 <\n            fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4) +\n            fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4) +\n            fVar15 * *(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)) {\n          bVar2 = bVar6;\n        }\n        bVar18 = bVar2 << (bVar17 & 0x1f) | *param_5;\n        *param_5 = bVar18;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        uVar28 = (uint)(!NAN(fVar37) && !NAN(_DAT_003fa400));\n        if (fVar37 != _DAT_003fa400) {\n          uVar28 = 0;\n        }\n        *param_5 = (byte)(uVar28 << (bVar17 - 1 & 0x1f)) | bVar18;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        lVar32 = lVar32 + 2;\n        bVar17 = bVar17 - 2;\n      } while (lVar32 <= (long)(ulong)((uint)param_3 & 3));\n      return;\n    }\n    if (uVar34 == 4) {\n      pbVar1 = param_5 + param_3;\n      if ((long)param_3 < 1) {\n        return;\n      }\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar37 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar37)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if (0.0 < fVar37) {\n            dVar4 = (double)fVar37 / dVar11;\n            bVar17 = 0xff;\n            if (dVar4 < dVar12) {\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }\n          }\n        }\n        *param_5 = bVar17 & 0xf0;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        *param_5 = bVar17 & 0xf0 | (byte)(int)((double)fVar37 * dVar16 + dVar7) & 0xf;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + 1;\n      } while (param_5 != pbVar1);\n      return;\n    }\nLAB_002734da:\n    uVar33 = 0;\n    if (uVar34 == 0) goto LAB_002734e9;\n  }\n  else {\n    if (uVar34 == 0x20) {\n      if ((int)param_2[2] == 1) {\n        if ((long)param_3 < 1) {\n          return;\n        }\n        uVar34 = 0;\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar37 = (float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3]);\n          bVar18 = (byte)((uint)fVar37 >> 8);\n          bVar27 = (byte)((uint)fVar37 >> 0x10);\n          bVar17 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = SUB41(fVar37,0);\n            param_5[1] = bVar18;\n            param_5[2] = bVar27;\n            param_5[3] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = bVar27;\n            param_5[2] = bVar18;\n            param_5[3] = SUB41(fVar37,0);\n          }\n          fVar37 = fVar36;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          fVar37 = (float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3]);\n          bVar17 = (byte)((uint)fVar37 >> 8);\n          bVar18 = (byte)((uint)fVar37 >> 0x10);\n          bVar27 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            param_5[4] = SUB41(fVar37,0);\n            param_5[5] = bVar17;\n            param_5[6] = bVar18;\n            param_5[7] = bVar27;\n          }\n          else {\n            param_5[4] = bVar27;\n            param_5[5] = bVar18;\n            param_5[6] = bVar17;\n            param_5[7] = SUB41(fVar37,0);\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 8;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      uVar34 = 0;\n      if ((long)param_3 < 1) {\n        return;\n      }\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar36)) {\n          uVar20 = 0;\n        }\n        else {\n          uVar20 = 0;\n          if ((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)) {\n            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = (byte)uVar20;\n          param_5[1] = bVar17;\n          param_5[2] = bVar18;\n          param_5[3] = bVar27;\n        }\n        else {\n          *param_5 = bVar27;\n          param_5[1] = bVar18;\n          param_5[2] = bVar17;\n          param_5[3] = (byte)uVar20;\n        }\n        uVar20 = 0xffffffff;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          if (NAN(fVar36)) {\n            uVar20 = 0;\n          }\n          else {\n            uVar20 = 0;\n            if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          param_5[4] = (byte)uVar20;\n          param_5[5] = bVar17;\n          param_5[6] = bVar18;\n          param_5[7] = bVar27;\n        }\n        else {\n          param_5[4] = bVar27;\n          param_5[5] = bVar18;\n          param_5[6] = bVar17;\n          param_5[7] = (byte)uVar20;\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 8;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }\n    if (uVar34 != 0x40) {\n      if (uVar34 == 0x10) {\n        if ((int)param_2[2] == 1) {\n          if ((long)param_3 < 1) {\n            return;\n          }\n          uVar34 = 0;\n          do {\n            lVar32 = *(long *)(param_1 + 0x360);\n            uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }\n            else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }\n            fVar36 = _DAT_003fa400;\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }\n            uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }\n            else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }\n            param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n            param_5 = param_5 + param_2[6] + 4;\n            uVar34 = uVar34 + 1;\n          } while (uVar34 != param_3);\n          return;\n        }\n        uVar34 = 0;\n        if ((long)param_3 < 1) {\n          return;\n        }\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n          if (NAN(fVar36)) {\n            uVar19 = 0;\n          }\n          else {\n            uVar19 = 0;\n            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = (byte)uVar19;\n            param_5[1] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = (byte)uVar19;\n          }\n          uVar19 = 0xffff;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            if (NAN(fVar36)) {\n              uVar19 = 0;\n            }\n            else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            param_5[2] = (byte)uVar19;\n            param_5[3] = bVar17;\n          }\n          else {\n            param_5[2] = bVar17;\n            param_5[3] = (byte)uVar19;\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 4;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      goto LAB_002734da;\n    }\n    if ((int)param_2[2] == 1) {\n      if ((long)param_3 < 1) {\n        return;\n      }\n      uVar34 = 0;\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        dVar4 = (double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                (double)param_2[0xd] + (double)param_2[3];\n        bVar18 = (byte)((ulong)dVar4 >> 8);\n        bVar23 = (byte)((ulong)dVar4 >> 0x10);\n        bVar24 = (byte)((ulong)dVar4 >> 0x18);\n        bVar25 = (byte)((ulong)dVar4 >> 0x20);\n        bVar26 = (byte)((ulong)dVar4 >> 0x28);\n        bVar27 = (byte)((ulong)dVar4 >> 0x30);\n        bVar17 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = SUB81(dVar4,0);\n          param_5[1] = bVar18;\n          param_5[2] = bVar23;\n          param_5[3] = bVar24;\n          param_5[4] = bVar25;\n          param_5[5] = bVar26;\n          param_5[6] = bVar27;\n          param_5[7] = bVar17;\n        }\n        else {\n          *param_5 = bVar17;\n          param_5[1] = bVar27;\n          param_5[2] = bVar26;\n          param_5[3] = bVar25;\n          param_5[4] = bVar24;\n          param_5[5] = bVar23;\n          param_5[6] = bVar18;\n          param_5[7] = SUB81(dVar4,0);\n        }\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        dVar4 = (double)fVar37 * (double)param_2[0xd] + (double)param_2[3];\n        bVar17 = (byte)((ulong)dVar4 >> 8);\n        bVar18 = (byte)((ulong)dVar4 >> 0x10);\n        bVar27 = (byte)((ulong)dVar4 >> 0x18);\n        bVar26 = (byte)((ulong)dVar4 >> 0x20);\n        bVar25 = (byte)((ulong)dVar4 >> 0x28);\n        bVar24 = (byte)((ulong)dVar4 >> 0x30);\n        bVar23 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          param_5[8] = SUB81(dVar4,0);\n          param_5[9] = bVar17;\n          param_5[10] = bVar18;\n          param_5[0xb] = bVar27;\n          param_5[0xc] = bVar26;\n          param_5[0xd] = bVar25;\n          param_5[0xe] = bVar24;\n          param_5[0xf] = bVar23;\n        }\n        else {\n          param_5[8] = bVar23;\n          param_5[9] = bVar24;\n          param_5[10] = bVar25;\n          param_5[0xb] = bVar26;\n          param_5[0xc] = bVar27;\n          param_5[0xd] = bVar18;\n          param_5[0xe] = bVar17;\n          param_5[0xf] = SUB81(dVar4,0);\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 0x10;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }\n  }" (if "if") (parenthesized_expression "(uVar34 < 9)" (( "(") (binary_expression "uVar34 < 9" (identifier "uVar34") (< "<") (number_literal "9")) () ")")) (compound_statement "{\n    if (uVar34 == 1) {\n      bVar35 = (int)param_2[7] == 0;\n      bVar6 = !bVar35;\n      if (param_3 != 3 && -1 < (long)(param_3 - 3)) {\n        pbVar1 = param_5 + (param_3 - 4 >> 2) + 1;\n        do {\n          *param_5 = 0;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar18 = (byte)(uVar28 << 7);\n          *param_5 = bVar18;\n          bVar17 = 0x40;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar17 = 0x40;\n            }\n            else {\n              bVar17 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar17 = bVar17 | (byte)(uVar28 << 5);\n          *param_5 = bVar17;\n          bVar18 = 0x10;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 0x10;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            bVar2 = bVar6;\n          }\n          bVar17 = bVar17 | bVar2 * '\b';\n          *param_5 = bVar17;\n          bVar18 = 4;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 4;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar6;\n          if (DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) <= DAT_003fc580) {\n            bVar2 = bVar35;\n          }\n          bVar17 = bVar17 | bVar2 * '\x02';\n          *param_5 = bVar17;\n          fVar36 = _DAT_003fa400;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          *param_5 = bVar17 | fVar36 == _DAT_003fa400;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + 1;\n        } while (param_5 != pbVar1);\n      }\n      if ((param_3 & 3) == 0) {\n        return;\n      }\n      *param_5 = 0;\n      fVar15 = DAT_0041abe0;\n      fVar14 = DAT_0041abdc;\n      fVar13 = DAT_0041abd8;\n      fVar36 = _DAT_003fa400;\n      bVar17 = 7;\n      lVar32 = 0;\n      do {\n        lVar3 = *(long *)(param_1 + 0x360);\n        bVar2 = bVar35;\n        if (DAT_003fc580 <\n            fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4) +\n            fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4) +\n            fVar15 * *(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)) {\n          bVar2 = bVar6;\n        }\n        bVar18 = bVar2 << (bVar17 & 0x1f) | *param_5;\n        *param_5 = bVar18;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        uVar28 = (uint)(!NAN(fVar37) && !NAN(_DAT_003fa400));\n        if (fVar37 != _DAT_003fa400) {\n          uVar28 = 0;\n        }\n        *param_5 = (byte)(uVar28 << (bVar17 - 1 & 0x1f)) | bVar18;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        lVar32 = lVar32 + 2;\n        bVar17 = bVar17 - 2;\n      } while (lVar32 <= (long)(ulong)((uint)param_3 & 3));\n      return;\n    }\n    if (uVar34 == 4) {\n      pbVar1 = param_5 + param_3;\n      if ((long)param_3 < 1) {\n        return;\n      }\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar37 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar37)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if (0.0 < fVar37) {\n            dVar4 = (double)fVar37 / dVar11;\n            bVar17 = 0xff;\n            if (dVar4 < dVar12) {\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }\n          }\n        }\n        *param_5 = bVar17 & 0xf0;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        *param_5 = bVar17 & 0xf0 | (byte)(int)((double)fVar37 * dVar16 + dVar7) & 0xf;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + 1;\n      } while (param_5 != pbVar1);\n      return;\n    }\nLAB_002734da:\n    uVar33 = 0;\n    if (uVar34 == 0) goto LAB_002734e9;\n  }" ({ "{") (if_statement "if (uVar34 == 1) {\n      bVar35 = (int)param_2[7] == 0;\n      bVar6 = !bVar35;\n      if (param_3 != 3 && -1 < (long)(param_3 - 3)) {\n        pbVar1 = param_5 + (param_3 - 4 >> 2) + 1;\n        do {\n          *param_5 = 0;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar18 = (byte)(uVar28 << 7);\n          *param_5 = bVar18;\n          bVar17 = 0x40;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar17 = 0x40;\n            }\n            else {\n              bVar17 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar17 = bVar17 | (byte)(uVar28 << 5);\n          *param_5 = bVar17;\n          bVar18 = 0x10;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 0x10;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            bVar2 = bVar6;\n          }\n          bVar17 = bVar17 | bVar2 * '\b';\n          *param_5 = bVar17;\n          bVar18 = 4;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 4;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar6;\n          if (DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) <= DAT_003fc580) {\n            bVar2 = bVar35;\n          }\n          bVar17 = bVar17 | bVar2 * '\x02';\n          *param_5 = bVar17;\n          fVar36 = _DAT_003fa400;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          *param_5 = bVar17 | fVar36 == _DAT_003fa400;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + 1;\n        } while (param_5 != pbVar1);\n      }\n      if ((param_3 & 3) == 0) {\n        return;\n      }\n      *param_5 = 0;\n      fVar15 = DAT_0041abe0;\n      fVar14 = DAT_0041abdc;\n      fVar13 = DAT_0041abd8;\n      fVar36 = _DAT_003fa400;\n      bVar17 = 7;\n      lVar32 = 0;\n      do {\n        lVar3 = *(long *)(param_1 + 0x360);\n        bVar2 = bVar35;\n        if (DAT_003fc580 <\n            fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4) +\n            fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4) +\n            fVar15 * *(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)) {\n          bVar2 = bVar6;\n        }\n        bVar18 = bVar2 << (bVar17 & 0x1f) | *param_5;\n        *param_5 = bVar18;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        uVar28 = (uint)(!NAN(fVar37) && !NAN(_DAT_003fa400));\n        if (fVar37 != _DAT_003fa400) {\n          uVar28 = 0;\n        }\n        *param_5 = (byte)(uVar28 << (bVar17 - 1 & 0x1f)) | bVar18;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        lVar32 = lVar32 + 2;\n        bVar17 = bVar17 - 2;\n      } while (lVar32 <= (long)(ulong)((uint)param_3 & 3));\n      return;\n    }" (if "if") (parenthesized_expression "(uVar34 == 1)" (( "(") (binary_expression "uVar34 == 1" (identifier "uVar34") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n      bVar35 = (int)param_2[7] == 0;\n      bVar6 = !bVar35;\n      if (param_3 != 3 && -1 < (long)(param_3 - 3)) {\n        pbVar1 = param_5 + (param_3 - 4 >> 2) + 1;\n        do {\n          *param_5 = 0;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar18 = (byte)(uVar28 << 7);\n          *param_5 = bVar18;\n          bVar17 = 0x40;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar17 = 0x40;\n            }\n            else {\n              bVar17 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar17 = bVar17 | (byte)(uVar28 << 5);\n          *param_5 = bVar17;\n          bVar18 = 0x10;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 0x10;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            bVar2 = bVar6;\n          }\n          bVar17 = bVar17 | bVar2 * '\b';\n          *param_5 = bVar17;\n          bVar18 = 4;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 4;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar6;\n          if (DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) <= DAT_003fc580) {\n            bVar2 = bVar35;\n          }\n          bVar17 = bVar17 | bVar2 * '\x02';\n          *param_5 = bVar17;\n          fVar36 = _DAT_003fa400;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          *param_5 = bVar17 | fVar36 == _DAT_003fa400;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + 1;\n        } while (param_5 != pbVar1);\n      }\n      if ((param_3 & 3) == 0) {\n        return;\n      }\n      *param_5 = 0;\n      fVar15 = DAT_0041abe0;\n      fVar14 = DAT_0041abdc;\n      fVar13 = DAT_0041abd8;\n      fVar36 = _DAT_003fa400;\n      bVar17 = 7;\n      lVar32 = 0;\n      do {\n        lVar3 = *(long *)(param_1 + 0x360);\n        bVar2 = bVar35;\n        if (DAT_003fc580 <\n            fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4) +\n            fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4) +\n            fVar15 * *(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)) {\n          bVar2 = bVar6;\n        }\n        bVar18 = bVar2 << (bVar17 & 0x1f) | *param_5;\n        *param_5 = bVar18;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        uVar28 = (uint)(!NAN(fVar37) && !NAN(_DAT_003fa400));\n        if (fVar37 != _DAT_003fa400) {\n          uVar28 = 0;\n        }\n        *param_5 = (byte)(uVar28 << (bVar17 - 1 & 0x1f)) | bVar18;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        lVar32 = lVar32 + 2;\n        bVar17 = bVar17 - 2;\n      } while (lVar32 <= (long)(ulong)((uint)param_3 & 3));\n      return;\n    }" ({ "{") (expression_statement "bVar35 = (int)param_2[7] == 0;" (assignment_expression "bVar35 = (int)param_2[7] == 0" (identifier "bVar35") (= "=") (binary_expression "(int)param_2[7] == 0" (cast_expression "(int)param_2[7]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]"))) (== "==") (number_literal "0"))) (; ";")) (expression_statement "bVar6 = !bVar35;" (assignment_expression "bVar6 = !bVar35" (identifier "bVar6") (= "=") (unary_expression "!bVar35" (! "!") (identifier "bVar35"))) (; ";")) (if_statement "if (param_3 != 3 && -1 < (long)(param_3 - 3)) {\n        pbVar1 = param_5 + (param_3 - 4 >> 2) + 1;\n        do {\n          *param_5 = 0;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar18 = (byte)(uVar28 << 7);\n          *param_5 = bVar18;\n          bVar17 = 0x40;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar17 = 0x40;\n            }\n            else {\n              bVar17 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar17 = bVar17 | (byte)(uVar28 << 5);\n          *param_5 = bVar17;\n          bVar18 = 0x10;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 0x10;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            bVar2 = bVar6;\n          }\n          bVar17 = bVar17 | bVar2 * '\b';\n          *param_5 = bVar17;\n          bVar18 = 4;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 4;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar6;\n          if (DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) <= DAT_003fc580) {\n            bVar2 = bVar35;\n          }\n          bVar17 = bVar17 | bVar2 * '\x02';\n          *param_5 = bVar17;\n          fVar36 = _DAT_003fa400;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          *param_5 = bVar17 | fVar36 == _DAT_003fa400;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + 1;\n        } while (param_5 != pbVar1);\n      }" (if "if") (parenthesized_expression "(param_3 != 3 && -1 < (long)(param_3 - 3))" (( "(") (binary_expression "param_3 != 3 && -1 < (long)(param_3 - 3)" (binary_expression "param_3 != 3" (identifier "param_3") (!= "!=") (number_literal "3")) (&& "&&") (binary_expression "-1 < (long)(param_3 - 3)" (number_literal "-1") (< "<") (cast_expression "(long)(param_3 - 3)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(param_3 - 3)" (( "(") (binary_expression "param_3 - 3" (identifier "param_3") (- "-") (number_literal "3")) () ")"))))) () ")")) (compound_statement "{\n        pbVar1 = param_5 + (param_3 - 4 >> 2) + 1;\n        do {\n          *param_5 = 0;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar18 = (byte)(uVar28 << 7);\n          *param_5 = bVar18;\n          bVar17 = 0x40;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar17 = 0x40;\n            }\n            else {\n              bVar17 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar17 = bVar17 | (byte)(uVar28 << 5);\n          *param_5 = bVar17;\n          bVar18 = 0x10;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 0x10;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            bVar2 = bVar6;\n          }\n          bVar17 = bVar17 | bVar2 * '\b';\n          *param_5 = bVar17;\n          bVar18 = 4;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 4;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar6;\n          if (DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) <= DAT_003fc580) {\n            bVar2 = bVar35;\n          }\n          bVar17 = bVar17 | bVar2 * '\x02';\n          *param_5 = bVar17;\n          fVar36 = _DAT_003fa400;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          *param_5 = bVar17 | fVar36 == _DAT_003fa400;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + 1;\n        } while (param_5 != pbVar1);\n      }" ({ "{") (expression_statement "pbVar1 = param_5 + (param_3 - 4 >> 2) + 1;" (assignment_expression "pbVar1 = param_5 + (param_3 - 4 >> 2) + 1" (identifier "pbVar1") (= "=") (binary_expression "param_5 + (param_3 - 4 >> 2) + 1" (binary_expression "param_5 + (param_3 - 4 >> 2)" (identifier "param_5") (+ "+") (parenthesized_expression "(param_3 - 4 >> 2)" (( "(") (binary_expression "param_3 - 4 >> 2" (binary_expression "param_3 - 4" (identifier "param_3") (- "-") (number_literal "4")) (>> ">>") (number_literal "2")) () ")"))) (+ "+") (number_literal "1"))) (; ";")) (do_statement "do {\n          *param_5 = 0;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar18 = (byte)(uVar28 << 7);\n          *param_5 = bVar18;\n          bVar17 = 0x40;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar17 = 0x40;\n            }\n            else {\n              bVar17 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar17 = bVar17 | (byte)(uVar28 << 5);\n          *param_5 = bVar17;\n          bVar18 = 0x10;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 0x10;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            bVar2 = bVar6;\n          }\n          bVar17 = bVar17 | bVar2 * '\b';\n          *param_5 = bVar17;\n          bVar18 = 4;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 4;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar6;\n          if (DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) <= DAT_003fc580) {\n            bVar2 = bVar35;\n          }\n          bVar17 = bVar17 | bVar2 * '\x02';\n          *param_5 = bVar17;\n          fVar36 = _DAT_003fa400;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          *param_5 = bVar17 | fVar36 == _DAT_003fa400;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + 1;\n        } while (param_5 != pbVar1);" (do "do") (compound_statement "{\n          *param_5 = 0;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar18 = (byte)(uVar28 << 7);\n          *param_5 = bVar18;\n          bVar17 = 0x40;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar17 = 0x40;\n            }\n            else {\n              bVar17 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          uVar28 = (uint)bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            uVar28 = (uint)bVar6;\n          }\n          bVar17 = bVar17 | (byte)(uVar28 << 5);\n          *param_5 = bVar17;\n          bVar18 = 0x10;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 0x10;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar35;\n          if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            bVar2 = bVar6;\n          }\n          bVar17 = bVar17 | bVar2 * '\b';\n          *param_5 = bVar17;\n          bVar18 = 4;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 4;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }\n          bVar17 = bVar17 | bVar18;\n          *param_5 = bVar17;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          lVar32 = *(long *)(param_1 + 0x360);\n          bVar2 = bVar6;\n          if (DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) <= DAT_003fc580) {\n            bVar2 = bVar35;\n          }\n          bVar17 = bVar17 | bVar2 * '\x02';\n          *param_5 = bVar17;\n          fVar36 = _DAT_003fa400;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          *param_5 = bVar17 | fVar36 == _DAT_003fa400;\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + 1;\n        }" ({ "{") (expression_statement "*param_5 = 0;" (assignment_expression "*param_5 = 0" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (= "=") (number_literal "0")) (; ";")) (expression_statement "lVar32 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar32 = *(long *)(param_1 + 0x360)" (identifier "lVar32") (= "=") (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")"))))) (; ";")) (expression_statement "uVar28 = (uint)bVar35;" (assignment_expression "uVar28 = (uint)bVar35" (identifier "uVar28") (= "=") (cast_expression "(uint)bVar35" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar35"))) (; ";")) (if_statement "if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)) {\n            uVar28 = (uint)bVar6;\n          }" (if "if") (parenthesized_expression "(DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4))" (( "(") (binary_expression "DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (identifier "DAT_003fc580") (< "<") (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (identifier "fVar15") (* "*") (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x28) * 4)" (( "(") (binary_expression "param_4 + *(long *)(lVar32 + 0x28) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(lVar32 + 0x28) * 4" (pointer_expression "*(long *)(lVar32 + 0x28)" (* "*") (cast_expression "(long *)(lVar32 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar32 + 0x28)" (( "(") (binary_expression "lVar32 + 0x28" (identifier "lVar32") (+ "+") (number_literal "0x28")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) (+ "+") (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (identifier "fVar14") (* "*") (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x18) * 4)" (( "(") (binary_expression "param_4 + *(long *)(lVar32 + 0x18) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(lVar32 + 0x18) * 4" (pointer_expression "*(long *)(lVar32 + 0x18)" (* "*") (cast_expression "(long *)(lVar32 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar32 + 0x18)" (( "(") (binary_expression "lVar32 + 0x18" (identifier "lVar32") (+ "+") (number_literal "0x18")) () ")")))) (* "*") (number_literal "4"))) () ")")))))) (+ "+") (binary_expression "fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (identifier "fVar13") (* "*") (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(lVar32 + 8) * 4)" (( "(") (binary_expression "param_4 + *(long *)(lVar32 + 8) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(lVar32 + 8) * 4" (pointer_expression "*(long *)(lVar32 + 8)" (* "*") (cast_expression "(long *)(lVar32 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar32 + 8)" (( "(") (binary_expression "lVar32 + 8" (identifier "lVar32") (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "4"))) () ")"))))))) () ")")) (compound_statement "{\n            uVar28 = (uint)bVar6;\n          }" ({ "{") (expression_statement "uVar28 = (uint)bVar6;" (assignment_expression "uVar28 = (uint)bVar6" (identifier "uVar28") (= "=") (cast_expression "(uint)bVar6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar6"))) (; ";")) (} "}"))) (expression_statement "bVar18 = (byte)(uVar28 << 7);" (assignment_expression "bVar18 = (byte)(uVar28 << 7)" (identifier "bVar18") (= "=") (call_expression "(byte)(uVar28 << 7)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar28 << 7)" (( "(") (binary_expression "uVar28 << 7" (identifier "uVar28") (<< "<<") (number_literal "7")) () ")")))) (; ";")) (expression_statement "*param_5 = bVar18;" (assignment_expression "*param_5 = bVar18" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (= "=") (identifier "bVar18")) (; ";")) (expression_statement "bVar17 = 0x40;" (assignment_expression "bVar17 = 0x40" (identifier "bVar17") (= "=") (number_literal "0x40")) (; ";")) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar17 = 0x40;\n            }\n            else {\n              bVar17 = 0;\n            }\n          }" (if "if") (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0)" (( "(") (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44)" (* "*") (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x44)" (( "(") (binary_expression "*(long *)(param_1 + 0x360) + 0x44" (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (number_literal "0x44")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar17 = 0x40;\n            }\n            else {\n              bVar17 = 0;\n            }\n          }" ({ "{") (if_statement "if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar17 = 0x40;\n            }\n            else {\n              bVar17 = 0;\n            }" (if "if") (parenthesized_expression "(*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400)" (( "(") (binary_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400" (pointer_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (( "(") (binary_expression "param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48)" (* "*") (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x48)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x48)" (( "(") (binary_expression "*(long *)(param_1 + 0x360) + 0x48" (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (number_literal "0x48")) () ")")))) (* "*") (number_literal "4"))) () ")")))) (== "==") (identifier "_DAT_003fa400")) () ")")) (compound_statement "{\n              bVar17 = 0x40;\n            }" ({ "{") (expression_statement "bVar17 = 0x40;" (assignment_expression "bVar17 = 0x40" (identifier "bVar17") (= "=") (number_literal "0x40")) (; ";")) (} "}")) (else_clause "else {\n              bVar17 = 0;\n            }" (else "else") (compound_statement "{\n              bVar17 = 0;\n            }" ({ "{") (expression_statement "bVar17 = 0;" (assignment_expression "bVar17 = 0" (identifier "bVar17") (= "=") (number_literal "0")) (; ";")) (} "}")))) (} "}"))) (expression_statement "bVar17 = bVar17 | bVar18;" (assignment_expression "bVar17 = bVar17 | bVar18" (identifier "bVar17") (= "=") (binary_expression "bVar17 | bVar18" (identifier "bVar17") (| "|") (identifier "bVar18"))) (; ";")) (expression_statement "*param_5 = bVar17;" (assignment_expression "*param_5 = bVar17" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (= "=") (identifier "bVar17")) (; ";")) (expression_statement "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4" (identifier "param_4") (= "=") (binary_expression "param_4 + *(long *)(param_1 + 0x340) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" (* "*") (cast_expression "(long *)(param_1 + 0x340)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x340)" (( "(") (binary_expression "param_1 + 0x340" (identifier "param_1") (+ "+") (number_literal "0x340")) () ")")))) (* "*") (number_literal "4")))) (; ";")) (expression_statement "lVar32 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar32 = *(long *)(param_1 + 0x360)" (identifier "lVar32") (= "=") (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")"))))) (; ";")) (expression_statement "uVar28 = (uint)bVar35;" (assignment_expression "uVar28 = (uint)bVar35" (identifier "uVar28") (= "=") (cast_expression "(uint)bVar35" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar35"))) (; ";")) (if_statement "if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            uVar28 = (uint)bVar6;\n          }" (if "if") (parenthesized_expression "(DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4))" (( "(") (binary_expression "DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (identifier "DAT_003fc580") (< "<") (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (identifier "fVar15") (* "*") (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x28) * 4)" (( "(") (binary_expression "param_4 + *(long *)(lVar32 + 0x28) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(lVar32 + 0x28) * 4" (pointer_expression "*(long *)(lVar32 + 0x28)" (* "*") (cast_expression "(long *)(lVar32 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar32 + 0x28)" (( "(") (binary_expression "lVar32 + 0x28" (identifier "lVar32") (+ "+") (number_literal "0x28")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) (+ "+") (binary_expression "fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (identifier "fVar13") (* "*") (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(lVar32 + 8) * 4)" (( "(") (binary_expression "param_4 + *(long *)(lVar32 + 8) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(lVar32 + 8) * 4" (pointer_expression "*(long *)(lVar32 + 8)" (* "*") (cast_expression "(long *)(lVar32 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar32 + 8)" (( "(") (binary_expression "lVar32 + 8" (identifier "lVar32") (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "4"))) () ")")))))) (+ "+") (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (identifier "fVar14") (* "*") (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x18) * 4)" (( "(") (binary_expression "param_4 + *(long *)(lVar32 + 0x18) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(lVar32 + 0x18) * 4" (pointer_expression "*(long *)(lVar32 + 0x18)" (* "*") (cast_expression "(long *)(lVar32 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar32 + 0x18)" (( "(") (binary_expression "lVar32 + 0x18" (identifier "lVar32") (+ "+") (number_literal "0x18")) () ")")))) (* "*") (number_literal "4"))) () ")"))))))) () ")")) (compound_statement "{\n            uVar28 = (uint)bVar6;\n          }" ({ "{") (expression_statement "uVar28 = (uint)bVar6;" (assignment_expression "uVar28 = (uint)bVar6" (identifier "uVar28") (= "=") (cast_expression "(uint)bVar6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar6"))) (; ";")) (} "}"))) (expression_statement "bVar17 = bVar17 | (byte)(uVar28 << 5);" (assignment_expression "bVar17 = bVar17 | (byte)(uVar28 << 5)" (identifier "bVar17") (= "=") (binary_expression "bVar17 | (byte)(uVar28 << 5)" (identifier "bVar17") (| "|") (call_expression "(byte)(uVar28 << 5)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar28 << 5)" (( "(") (binary_expression "uVar28 << 5" (identifier "uVar28") (<< "<<") (number_literal "5")) () ")"))))) (; ";")) (expression_statement "*param_5 = bVar17;" (assignment_expression "*param_5 = bVar17" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (= "=") (identifier "bVar17")) (; ";")) (expression_statement "bVar18 = 0x10;" (assignment_expression "bVar18 = 0x10" (identifier "bVar18") (= "=") (number_literal "0x10")) (; ";")) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 0x10;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }" (if "if") (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0)" (( "(") (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44)" (* "*") (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x44)" (( "(") (binary_expression "*(long *)(param_1 + 0x360) + 0x44" (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (number_literal "0x44")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 0x10;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }" ({ "{") (if_statement "if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 0x10;\n            }\n            else {\n              bVar18 = 0;\n            }" (if "if") (parenthesized_expression "(*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400)" (( "(") (binary_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400" (pointer_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (( "(") (binary_expression "param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48)" (* "*") (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x48)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x48)" (( "(") (binary_expression "*(long *)(param_1 + 0x360) + 0x48" (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (number_literal "0x48")) () ")")))) (* "*") (number_literal "4"))) () ")")))) (== "==") (identifier "_DAT_003fa400")) () ")")) (compound_statement "{\n              bVar18 = 0x10;\n            }" ({ "{") (expression_statement "bVar18 = 0x10;" (assignment_expression "bVar18 = 0x10" (identifier "bVar18") (= "=") (number_literal "0x10")) (; ";")) (} "}")) (else_clause "else {\n              bVar18 = 0;\n            }" (else "else") (compound_statement "{\n              bVar18 = 0;\n            }" ({ "{") (expression_statement "bVar18 = 0;" (assignment_expression "bVar18 = 0" (identifier "bVar18") (= "=") (number_literal "0")) (; ";")) (} "}")))) (} "}"))) (expression_statement "bVar17 = bVar17 | bVar18;" (assignment_expression "bVar17 = bVar17 | bVar18" (identifier "bVar17") (= "=") (binary_expression "bVar17 | bVar18" (identifier "bVar17") (| "|") (identifier "bVar18"))) (; ";")) (expression_statement "*param_5 = bVar17;" (assignment_expression "*param_5 = bVar17" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (= "=") (identifier "bVar17")) (; ";")) (expression_statement "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4" (identifier "param_4") (= "=") (binary_expression "param_4 + *(long *)(param_1 + 0x340) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" (* "*") (cast_expression "(long *)(param_1 + 0x340)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x340)" (( "(") (binary_expression "param_1 + 0x340" (identifier "param_1") (+ "+") (number_literal "0x340")) () ")")))) (* "*") (number_literal "4")))) (; ";")) (expression_statement "lVar32 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar32 = *(long *)(param_1 + 0x360)" (identifier "lVar32") (= "=") (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")"))))) (; ";")) (expression_statement "bVar2 = bVar35;" (assignment_expression "bVar2 = bVar35" (identifier "bVar2") (= "=") (identifier "bVar35")) (; ";")) (if_statement "if (DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {\n            bVar2 = bVar6;\n          }" (if "if") (parenthesized_expression "(DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4))" (( "(") (binary_expression "DAT_003fc580 <\n              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (identifier "DAT_003fc580") (< "<") (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (identifier "fVar15") (* "*") (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x28) * 4)" (( "(") (binary_expression "param_4 + *(long *)(lVar32 + 0x28) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(lVar32 + 0x28) * 4" (pointer_expression "*(long *)(lVar32 + 0x28)" (* "*") (cast_expression "(long *)(lVar32 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar32 + 0x28)" (( "(") (binary_expression "lVar32 + 0x28" (identifier "lVar32") (+ "+") (number_literal "0x28")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) (+ "+") (binary_expression "fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (identifier "fVar13") (* "*") (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(lVar32 + 8) * 4)" (( "(") (binary_expression "param_4 + *(long *)(lVar32 + 8) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(lVar32 + 8) * 4" (pointer_expression "*(long *)(lVar32 + 8)" (* "*") (cast_expression "(long *)(lVar32 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar32 + 8)" (( "(") (binary_expression "lVar32 + 8" (identifier "lVar32") (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "4"))) () ")")))))) (+ "+") (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (identifier "fVar14") (* "*") (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x18) * 4)" (( "(") (binary_expression "param_4 + *(long *)(lVar32 + 0x18) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(lVar32 + 0x18) * 4" (pointer_expression "*(long *)(lVar32 + 0x18)" (* "*") (cast_expression "(long *)(lVar32 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar32 + 0x18)" (( "(") (binary_expression "lVar32 + 0x18" (identifier "lVar32") (+ "+") (number_literal "0x18")) () ")")))) (* "*") (number_literal "4"))) () ")"))))))) () ")")) (compound_statement "{\n            bVar2 = bVar6;\n          }" ({ "{") (expression_statement "bVar2 = bVar6;" (assignment_expression "bVar2 = bVar6" (identifier "bVar2") (= "=") (identifier "bVar6")) (; ";")) (} "}"))) (expression_statement "bVar17 = bVar17 | bVar2 * '\b';" (assignment_expression "bVar17 = bVar17 | bVar2 * '\b'" (identifier "bVar17") (= "=") (binary_expression "bVar17 | bVar2 * '\b'" (identifier "bVar17") (| "|") (binary_expression "bVar2 * '\b'" (identifier "bVar2") (* "*") (char_literal "'\b'" (' "'") (escape_sequence "\b") (' "'"))))) (; ";")) (expression_statement "*param_5 = bVar17;" (assignment_expression "*param_5 = bVar17" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (= "=") (identifier "bVar17")) (; ";")) (expression_statement "bVar18 = 4;" (assignment_expression "bVar18 = 4" (identifier "bVar18") (= "=") (number_literal "4")) (; ";")) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 4;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }" (if "if") (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0)" (( "(") (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44)" (* "*") (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x44)" (( "(") (binary_expression "*(long *)(param_1 + 0x360) + 0x44" (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (number_literal "0x44")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 4;\n            }\n            else {\n              bVar18 = 0;\n            }\n          }" ({ "{") (if_statement "if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400) {\n              bVar18 = 4;\n            }\n            else {\n              bVar18 = 0;\n            }" (if "if") (parenthesized_expression "(*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400)" (( "(") (binary_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==\n                _DAT_003fa400" (pointer_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (( "(") (binary_expression "param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48)" (* "*") (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x48)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x48)" (( "(") (binary_expression "*(long *)(param_1 + 0x360) + 0x48" (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (number_literal "0x48")) () ")")))) (* "*") (number_literal "4"))) () ")")))) (== "==") (identifier "_DAT_003fa400")) () ")")) (compound_statement "{\n              bVar18 = 4;\n            }" ({ "{") (expression_statement "bVar18 = 4;" (assignment_expression "bVar18 = 4" (identifier "bVar18") (= "=") (number_literal "4")) (; ";")) (} "}")) (else_clause "else {\n              bVar18 = 0;\n            }" (else "else") (compound_statement "{\n              bVar18 = 0;\n            }" ({ "{") (expression_statement "bVar18 = 0;" (assignment_expression "bVar18 = 0" (identifier "bVar18") (= "=") (number_literal "0")) (; ";")) (} "}")))) (} "}"))) (expression_statement "bVar17 = bVar17 | bVar18;" (assignment_expression "bVar17 = bVar17 | bVar18" (identifier "bVar17") (= "=") (binary_expression "bVar17 | bVar18" (identifier "bVar17") (| "|") (identifier "bVar18"))) (; ";")) (expression_statement "*param_5 = bVar17;" (assignment_expression "*param_5 = bVar17" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (= "=") (identifier "bVar17")) (; ";")) (expression_statement "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4" (identifier "param_4") (= "=") (binary_expression "param_4 + *(long *)(param_1 + 0x340) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" (* "*") (cast_expression "(long *)(param_1 + 0x340)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x340)" (( "(") (binary_expression "param_1 + 0x340" (identifier "param_1") (+ "+") (number_literal "0x340")) () ")")))) (* "*") (number_literal "4")))) (; ";")) (expression_statement "lVar32 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar32 = *(long *)(param_1 + 0x360)" (identifier "lVar32") (= "=") (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")"))))) (; ";")) (expression_statement "bVar2 = bVar6;" (assignment_expression "bVar2 = bVar6" (identifier "bVar2") (= "=") (identifier "bVar6")) (; ";")) (if_statement "if (DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) <= DAT_003fc580) {\n            bVar2 = bVar35;\n          }" (if "if") (parenthesized_expression "(DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) <= DAT_003fc580)" (( "(") (binary_expression "DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) <= DAT_003fc580" (binary_expression "DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (binary_expression "DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +\n              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (binary_expression "DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (identifier "DAT_0041abe0") (* "*") (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x28) * 4)" (( "(") (binary_expression "param_4 + *(long *)(lVar32 + 0x28) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(lVar32 + 0x28) * 4" (pointer_expression "*(long *)(lVar32 + 0x28)" (* "*") (cast_expression "(long *)(lVar32 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar32 + 0x28)" (( "(") (binary_expression "lVar32 + 0x28" (identifier "lVar32") (+ "+") (number_literal "0x28")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) (+ "+") (binary_expression "DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (identifier "DAT_0041abd8") (* "*") (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(lVar32 + 8) * 4)" (( "(") (binary_expression "param_4 + *(long *)(lVar32 + 8) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(lVar32 + 8) * 4" (pointer_expression "*(long *)(lVar32 + 8)" (* "*") (cast_expression "(long *)(lVar32 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar32 + 8)" (( "(") (binary_expression "lVar32 + 8" (identifier "lVar32") (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "4"))) () ")")))))) (+ "+") (binary_expression "DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (identifier "DAT_0041abdc") (* "*") (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x18) * 4)" (( "(") (binary_expression "param_4 + *(long *)(lVar32 + 0x18) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(lVar32 + 0x18) * 4" (pointer_expression "*(long *)(lVar32 + 0x18)" (* "*") (cast_expression "(long *)(lVar32 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar32 + 0x18)" (( "(") (binary_expression "lVar32 + 0x18" (identifier "lVar32") (+ "+") (number_literal "0x18")) () ")")))) (* "*") (number_literal "4"))) () ")")))))) (<= "<=") (identifier "DAT_003fc580")) () ")")) (compound_statement "{\n            bVar2 = bVar35;\n          }" ({ "{") (expression_statement "bVar2 = bVar35;" (assignment_expression "bVar2 = bVar35" (identifier "bVar2") (= "=") (identifier "bVar35")) (; ";")) (} "}"))) (expression_statement "bVar17 = bVar17 | bVar2 * '\x02';" (assignment_expression "bVar17 = bVar17 | bVar2 * '\x02'" (identifier "bVar17") (= "=") (binary_expression "bVar17 | bVar2 * '\x02'" (identifier "bVar17") (| "|") (binary_expression "bVar2 * '\x02'" (identifier "bVar2") (* "*") (char_literal "'\x02'" (' "'") (escape_sequence "\x02") (' "'"))))) (; ";")) (expression_statement "*param_5 = bVar17;" (assignment_expression "*param_5 = bVar17" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (= "=") (identifier "bVar17")) (; ";")) (expression_statement "fVar36 = _DAT_003fa400;" (assignment_expression "fVar36 = _DAT_003fa400" (identifier "fVar36") (= "=") (identifier "_DAT_003fa400")) (; ";")) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }" (if "if") (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0)" (( "(") (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44)" (* "*") (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x44)" (( "(") (binary_expression "*(long *)(param_1 + 0x360) + 0x44" (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (number_literal "0x44")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }" ({ "{") (expression_statement "fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);" (assignment_expression "fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (identifier "fVar36") (= "=") (pointer_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (( "(") (binary_expression "param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48)" (* "*") (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x48)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x48)" (( "(") (binary_expression "*(long *)(param_1 + 0x360) + 0x48" (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (number_literal "0x48")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (} "}"))) (expression_statement "*param_5 = bVar17 | fVar36 == _DAT_003fa400;" (assignment_expression "*param_5 = bVar17 | fVar36 == _DAT_003fa400" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (= "=") (binary_expression "bVar17 | fVar36 == _DAT_003fa400" (identifier "bVar17") (| "|") (binary_expression "fVar36 == _DAT_003fa400" (identifier "fVar36") (== "==") (identifier "_DAT_003fa400")))) (; ";")) (expression_statement "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4" (identifier "param_4") (= "=") (binary_expression "param_4 + *(long *)(param_1 + 0x340) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" (* "*") (cast_expression "(long *)(param_1 + 0x340)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x340)" (( "(") (binary_expression "param_1 + 0x340" (identifier "param_1") (+ "+") (number_literal "0x340")) () ")")))) (* "*") (number_literal "4")))) (; ";")) (expression_statement "param_5 = param_5 + 1;" (assignment_expression "param_5 = param_5 + 1" (identifier "param_5") (= "=") (binary_expression "param_5 + 1" (identifier "param_5") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_5 != pbVar1)" (( "(") (binary_expression "param_5 != pbVar1" (identifier "param_5") (!= "!=") (identifier "pbVar1")) () ")")) (; ";")) (} "}"))) (if_statement "if ((param_3 & 3) == 0) {\n        return;\n      }" (if "if") (parenthesized_expression "((param_3 & 3) == 0)" (( "(") (binary_expression "(param_3 & 3) == 0" (parenthesized_expression "(param_3 & 3)" (( "(") (binary_expression "param_3 & 3" (identifier "param_3") (& "&") (number_literal "3")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        return;\n      }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "*param_5 = 0;" (assignment_expression "*param_5 = 0" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (= "=") (number_literal "0")) (; ";")) (expression_statement "fVar15 = DAT_0041abe0;" (assignment_expression "fVar15 = DAT_0041abe0" (identifier "fVar15") (= "=") (identifier "DAT_0041abe0")) (; ";")) (expression_statement "fVar14 = DAT_0041abdc;" (assignment_expression "fVar14 = DAT_0041abdc" (identifier "fVar14") (= "=") (identifier "DAT_0041abdc")) (; ";")) (expression_statement "fVar13 = DAT_0041abd8;" (assignment_expression "fVar13 = DAT_0041abd8" (identifier "fVar13") (= "=") (identifier "DAT_0041abd8")) (; ";")) (expression_statement "fVar36 = _DAT_003fa400;" (assignment_expression "fVar36 = _DAT_003fa400" (identifier "fVar36") (= "=") (identifier "_DAT_003fa400")) (; ";")) (expression_statement "bVar17 = 7;" (assignment_expression "bVar17 = 7" (identifier "bVar17") (= "=") (number_literal "7")) (; ";")) (expression_statement "lVar32 = 0;" (assignment_expression "lVar32 = 0" (identifier "lVar32") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        lVar3 = *(long *)(param_1 + 0x360);\n        bVar2 = bVar35;\n        if (DAT_003fc580 <\n            fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4) +\n            fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4) +\n            fVar15 * *(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)) {\n          bVar2 = bVar6;\n        }\n        bVar18 = bVar2 << (bVar17 & 0x1f) | *param_5;\n        *param_5 = bVar18;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        uVar28 = (uint)(!NAN(fVar37) && !NAN(_DAT_003fa400));\n        if (fVar37 != _DAT_003fa400) {\n          uVar28 = 0;\n        }\n        *param_5 = (byte)(uVar28 << (bVar17 - 1 & 0x1f)) | bVar18;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        lVar32 = lVar32 + 2;\n        bVar17 = bVar17 - 2;\n      } while (lVar32 <= (long)(ulong)((uint)param_3 & 3));" (do "do") (compound_statement "{\n        lVar3 = *(long *)(param_1 + 0x360);\n        bVar2 = bVar35;\n        if (DAT_003fc580 <\n            fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4) +\n            fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4) +\n            fVar15 * *(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)) {\n          bVar2 = bVar6;\n        }\n        bVar18 = bVar2 << (bVar17 & 0x1f) | *param_5;\n        *param_5 = bVar18;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        uVar28 = (uint)(!NAN(fVar37) && !NAN(_DAT_003fa400));\n        if (fVar37 != _DAT_003fa400) {\n          uVar28 = 0;\n        }\n        *param_5 = (byte)(uVar28 << (bVar17 - 1 & 0x1f)) | bVar18;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        lVar32 = lVar32 + 2;\n        bVar17 = bVar17 - 2;\n      }" ({ "{") (expression_statement "lVar3 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar3 = *(long *)(param_1 + 0x360)" (identifier "lVar3") (= "=") (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")"))))) (; ";")) (expression_statement "bVar2 = bVar35;" (assignment_expression "bVar2 = bVar35" (identifier "bVar2") (= "=") (identifier "bVar35")) (; ";")) (if_statement "if (DAT_003fc580 <\n            fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4) +\n            fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4) +\n            fVar15 * *(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)) {\n          bVar2 = bVar6;\n        }" (if "if") (parenthesized_expression "(DAT_003fc580 <\n            fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4) +\n            fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4) +\n            fVar15 * *(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4))" (( "(") (binary_expression "DAT_003fc580 <\n            fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4) +\n            fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4) +\n            fVar15 * *(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)" (identifier "DAT_003fc580") (< "<") (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4) +\n            fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4) +\n            fVar15 * *(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4) +\n            fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4)" (identifier "fVar14") (* "*") (pointer_expression "*(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(lVar3 + 0x18) * 4)" (( "(") (binary_expression "param_4 + *(long *)(lVar3 + 0x18) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(lVar3 + 0x18) * 4" (pointer_expression "*(long *)(lVar3 + 0x18)" (* "*") (cast_expression "(long *)(lVar3 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 0x18)" (( "(") (binary_expression "lVar3 + 0x18" (identifier "lVar3") (+ "+") (number_literal "0x18")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) (+ "+") (binary_expression "fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4)" (identifier "fVar13") (* "*") (pointer_expression "*(float *)(param_4 + *(long *)(lVar3 + 8) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(lVar3 + 8) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(lVar3 + 8) * 4)" (( "(") (binary_expression "param_4 + *(long *)(lVar3 + 8) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(lVar3 + 8) * 4" (pointer_expression "*(long *)(lVar3 + 8)" (* "*") (cast_expression "(long *)(lVar3 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 8)" (( "(") (binary_expression "lVar3 + 8" (identifier "lVar3") (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "4"))) () ")")))))) (+ "+") (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)" (identifier "fVar15") (* "*") (pointer_expression "*(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(lVar3 + 0x28) * 4)" (( "(") (binary_expression "param_4 + *(long *)(lVar3 + 0x28) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(lVar3 + 0x28) * 4" (pointer_expression "*(long *)(lVar3 + 0x28)" (* "*") (cast_expression "(long *)(lVar3 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 0x28)" (( "(") (binary_expression "lVar3 + 0x28" (identifier "lVar3") (+ "+") (number_literal "0x28")) () ")")))) (* "*") (number_literal "4"))) () ")"))))))) () ")")) (compound_statement "{\n          bVar2 = bVar6;\n        }" ({ "{") (expression_statement "bVar2 = bVar6;" (assignment_expression "bVar2 = bVar6" (identifier "bVar2") (= "=") (identifier "bVar6")) (; ";")) (} "}"))) (expression_statement "bVar18 = bVar2 << (bVar17 & 0x1f) | *param_5;" (assignment_expression "bVar18 = bVar2 << (bVar17 & 0x1f) | *param_5" (identifier "bVar18") (= "=") (binary_expression "bVar2 << (bVar17 & 0x1f) | *param_5" (binary_expression "bVar2 << (bVar17 & 0x1f)" (identifier "bVar2") (<< "<<") (parenthesized_expression "(bVar17 & 0x1f)" (( "(") (binary_expression "bVar17 & 0x1f" (identifier "bVar17") (& "&") (number_literal "0x1f")) () ")"))) (| "|") (pointer_expression "*param_5" (* "*") (identifier "param_5")))) (; ";")) (expression_statement "*param_5 = bVar18;" (assignment_expression "*param_5 = bVar18" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (= "=") (identifier "bVar18")) (; ";")) (expression_statement "fVar37 = fVar36;" (assignment_expression "fVar37 = fVar36" (identifier "fVar37") (= "=") (identifier "fVar36")) (; ";")) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }" (if "if") (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0)" (( "(") (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44)" (* "*") (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x44)" (( "(") (binary_expression "*(long *)(param_1 + 0x360) + 0x44" (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (number_literal "0x44")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }" ({ "{") (expression_statement "fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);" (assignment_expression "fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (identifier "fVar37") (= "=") (pointer_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (( "(") (binary_expression "param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48)" (* "*") (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x48)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x48)" (( "(") (binary_expression "*(long *)(param_1 + 0x360) + 0x48" (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (number_literal "0x48")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (} "}"))) (expression_statement "uVar28 = (uint)(!NAN(fVar37) && !NAN(_DAT_003fa400));" (assignment_expression "uVar28 = (uint)(!NAN(fVar37) && !NAN(_DAT_003fa400))" (identifier "uVar28") (= "=") (call_expression "(uint)(!NAN(fVar37) && !NAN(_DAT_003fa400))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(!NAN(fVar37) && !NAN(_DAT_003fa400))" (( "(") (binary_expression "!NAN(fVar37) && !NAN(_DAT_003fa400)" (unary_expression "!NAN(fVar37)" (! "!") (call_expression "NAN(fVar37)" (identifier "NAN") (argument_list "(fVar37)" (( "(") (identifier "fVar37") () ")")))) (&& "&&") (unary_expression "!NAN(_DAT_003fa400)" (! "!") (call_expression "NAN(_DAT_003fa400)" (identifier "NAN") (argument_list "(_DAT_003fa400)" (( "(") (identifier "_DAT_003fa400") () ")"))))) () ")")))) (; ";")) (if_statement "if (fVar37 != _DAT_003fa400) {\n          uVar28 = 0;\n        }" (if "if") (parenthesized_expression "(fVar37 != _DAT_003fa400)" (( "(") (binary_expression "fVar37 != _DAT_003fa400" (identifier "fVar37") (!= "!=") (identifier "_DAT_003fa400")) () ")")) (compound_statement "{\n          uVar28 = 0;\n        }" ({ "{") (expression_statement "uVar28 = 0;" (assignment_expression "uVar28 = 0" (identifier "uVar28") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "*param_5 = (byte)(uVar28 << (bVar17 - 1 & 0x1f)) | bVar18;" (assignment_expression "*param_5 = (byte)(uVar28 << (bVar17 - 1 & 0x1f)) | bVar18" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (= "=") (binary_expression "(byte)(uVar28 << (bVar17 - 1 & 0x1f)) | bVar18" (call_expression "(byte)(uVar28 << (bVar17 - 1 & 0x1f))" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar28 << (bVar17 - 1 & 0x1f))" (( "(") (binary_expression "uVar28 << (bVar17 - 1 & 0x1f)" (identifier "uVar28") (<< "<<") (parenthesized_expression "(bVar17 - 1 & 0x1f)" (( "(") (binary_expression "bVar17 - 1 & 0x1f" (binary_expression "bVar17 - 1" (identifier "bVar17") (- "-") (number_literal "1")) (& "&") (number_literal "0x1f")) () ")"))) () ")"))) (| "|") (identifier "bVar18"))) (; ";")) (expression_statement "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4" (identifier "param_4") (= "=") (binary_expression "param_4 + *(long *)(param_1 + 0x340) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" (* "*") (cast_expression "(long *)(param_1 + 0x340)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x340)" (( "(") (binary_expression "param_1 + 0x340" (identifier "param_1") (+ "+") (number_literal "0x340")) () ")")))) (* "*") (number_literal "4")))) (; ";")) (expression_statement "lVar32 = lVar32 + 2;" (assignment_expression "lVar32 = lVar32 + 2" (identifier "lVar32") (= "=") (binary_expression "lVar32 + 2" (identifier "lVar32") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "bVar17 = bVar17 - 2;" (assignment_expression "bVar17 = bVar17 - 2" (identifier "bVar17") (= "=") (binary_expression "bVar17 - 2" (identifier "bVar17") (- "-") (number_literal "2"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar32 <= (long)(ulong)((uint)param_3 & 3))" (( "(") (binary_expression "lVar32 <= (long)(ulong)((uint)param_3 & 3)" (identifier "lVar32") (<= "<=") (cast_expression "(long)(ulong)((uint)param_3 & 3)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (call_expression "(ulong)((uint)param_3 & 3)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "((uint)param_3 & 3)" (( "(") (binary_expression "(uint)param_3 & 3" (cast_expression "(uint)param_3" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_3")) (& "&") (number_literal "3")) () ")"))))) () ")")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (uVar34 == 4) {\n      pbVar1 = param_5 + param_3;\n      if ((long)param_3 < 1) {\n        return;\n      }\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar37 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar37)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if (0.0 < fVar37) {\n            dVar4 = (double)fVar37 / dVar11;\n            bVar17 = 0xff;\n            if (dVar4 < dVar12) {\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }\n          }\n        }\n        *param_5 = bVar17 & 0xf0;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        *param_5 = bVar17 & 0xf0 | (byte)(int)((double)fVar37 * dVar16 + dVar7) & 0xf;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + 1;\n      } while (param_5 != pbVar1);\n      return;\n    }" (if "if") (parenthesized_expression "(uVar34 == 4)" (( "(") (binary_expression "uVar34 == 4" (identifier "uVar34") (== "==") (number_literal "4")) () ")")) (compound_statement "{\n      pbVar1 = param_5 + param_3;\n      if ((long)param_3 < 1) {\n        return;\n      }\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar37 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar37)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if (0.0 < fVar37) {\n            dVar4 = (double)fVar37 / dVar11;\n            bVar17 = 0xff;\n            if (dVar4 < dVar12) {\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }\n          }\n        }\n        *param_5 = bVar17 & 0xf0;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        *param_5 = bVar17 & 0xf0 | (byte)(int)((double)fVar37 * dVar16 + dVar7) & 0xf;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + 1;\n      } while (param_5 != pbVar1);\n      return;\n    }" ({ "{") (expression_statement "pbVar1 = param_5 + param_3;" (assignment_expression "pbVar1 = param_5 + param_3" (identifier "pbVar1") (= "=") (binary_expression "param_5 + param_3" (identifier "param_5") (+ "+") (identifier "param_3"))) (; ";")) (if_statement "if ((long)param_3 < 1) {\n        return;\n      }" (if "if") (parenthesized_expression "((long)param_3 < 1)" (( "(") (binary_expression "(long)param_3 < 1" (cast_expression "(long)param_3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_3")) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n        return;\n      }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (do_statement "do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar37 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar37)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if (0.0 < fVar37) {\n            dVar4 = (double)fVar37 / dVar11;\n            bVar17 = 0xff;\n            if (dVar4 < dVar12) {\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }\n          }\n        }\n        *param_5 = bVar17 & 0xf0;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        *param_5 = bVar17 & 0xf0 | (byte)(int)((double)fVar37 * dVar16 + dVar7) & 0xf;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + 1;\n      } while (param_5 != pbVar1);" (do "do") (compound_statement "{\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar37 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar37)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if (0.0 < fVar37) {\n            dVar4 = (double)fVar37 / dVar11;\n            bVar17 = 0xff;\n            if (dVar4 < dVar12) {\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }\n          }\n        }\n        *param_5 = bVar17 & 0xf0;\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        *param_5 = bVar17 & 0xf0 | (byte)(int)((double)fVar37 * dVar16 + dVar7) & 0xf;\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + 1;\n      }" ({ "{") (expression_statement "lVar32 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar32 = *(long *)(param_1 + 0x360)" (identifier "lVar32") (= "=") (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")"))))) (; ";")) (expression_statement "fVar37 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);" (assignment_expression "fVar37 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (identifier "fVar37") (= "=") (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (identifier "fVar14") (* "*") (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x18) * 4)" (( "(") (binary_expression "param_4 + *(long *)(lVar32 + 0x18) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(lVar32 + 0x18) * 4" (pointer_expression "*(long *)(lVar32 + 0x18)" (* "*") (cast_expression "(long *)(lVar32 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar32 + 0x18)" (( "(") (binary_expression "lVar32 + 0x18" (identifier "lVar32") (+ "+") (number_literal "0x18")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) (+ "+") (binary_expression "fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (identifier "fVar13") (* "*") (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(lVar32 + 8) * 4)" (( "(") (binary_expression "param_4 + *(long *)(lVar32 + 8) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(lVar32 + 8) * 4" (pointer_expression "*(long *)(lVar32 + 8)" (* "*") (cast_expression "(long *)(lVar32 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar32 + 8)" (( "(") (binary_expression "lVar32 + 8" (identifier "lVar32") (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "4"))) () ")")))))) (+ "+") (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (identifier "fVar15") (* "*") (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x28) * 4)" (( "(") (binary_expression "param_4 + *(long *)(lVar32 + 0x28) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(lVar32 + 0x28) * 4" (pointer_expression "*(long *)(lVar32 + 0x28)" (* "*") (cast_expression "(long *)(lVar32 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar32 + 0x28)" (( "(") (binary_expression "lVar32 + 0x28" (identifier "lVar32") (+ "+") (number_literal "0x28")) () ")")))) (* "*") (number_literal "4"))) () ")"))))))) (; ";")) (if_statement "if (NAN(fVar37)) {\n          bVar17 = 0;\n        }\n        else {\n          bVar17 = 0;\n          if (0.0 < fVar37) {\n            dVar4 = (double)fVar37 / dVar11;\n            bVar17 = 0xff;\n            if (dVar4 < dVar12) {\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }\n          }\n        }" (if "if") (parenthesized_expression "(NAN(fVar37))" (( "(") (call_expression "NAN(fVar37)" (identifier "NAN") (argument_list "(fVar37)" (( "(") (identifier "fVar37") () ")"))) () ")")) (compound_statement "{\n          bVar17 = 0;\n        }" ({ "{") (expression_statement "bVar17 = 0;" (assignment_expression "bVar17 = 0" (identifier "bVar17") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n          bVar17 = 0;\n          if (0.0 < fVar37) {\n            dVar4 = (double)fVar37 / dVar11;\n            bVar17 = 0xff;\n            if (dVar4 < dVar12) {\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }\n          }\n        }" (else "else") (compound_statement "{\n          bVar17 = 0;\n          if (0.0 < fVar37) {\n            dVar4 = (double)fVar37 / dVar11;\n            bVar17 = 0xff;\n            if (dVar4 < dVar12) {\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }\n          }\n        }" ({ "{") (expression_statement "bVar17 = 0;" (assignment_expression "bVar17 = 0" (identifier "bVar17") (= "=") (number_literal "0")) (; ";")) (if_statement "if (0.0 < fVar37) {\n            dVar4 = (double)fVar37 / dVar11;\n            bVar17 = 0xff;\n            if (dVar4 < dVar12) {\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }\n          }" (if "if") (parenthesized_expression "(0.0 < fVar37)" (( "(") (binary_expression "0.0 < fVar37" (number_literal "0.0") (< "<") (identifier "fVar37")) () ")")) (compound_statement "{\n            dVar4 = (double)fVar37 / dVar11;\n            bVar17 = 0xff;\n            if (dVar4 < dVar12) {\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }\n          }" ({ "{") (expression_statement "dVar4 = (double)fVar37 / dVar11;" (assignment_expression "dVar4 = (double)fVar37 / dVar11" (identifier "dVar4") (= "=") (binary_expression "(double)fVar37 / dVar11" (cast_expression "(double)fVar37" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "fVar37")) (/ "/") (identifier "dVar11"))) (; ";")) (expression_statement "bVar17 = 0xff;" (assignment_expression "bVar17 = 0xff" (identifier "bVar17") (= "=") (number_literal "0xff")) (; ";")) (if_statement "if (dVar4 < dVar12) {\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }" (if "if") (parenthesized_expression "(dVar4 < dVar12)" (( "(") (binary_expression "dVar4 < dVar12" (identifier "dVar4") (< "<") (identifier "dVar12")) () ")")) (compound_statement "{\n              bVar17 = (byte)(int)(dVar4 + dVar7);\n            }" ({ "{") (expression_statement "bVar17 = (byte)(int)(dVar4 + dVar7);" (assignment_expression "bVar17 = (byte)(int)(dVar4 + dVar7)" (identifier "bVar17") (= "=") (call_expression "(byte)(int)(dVar4 + dVar7)" (call_expression "(byte)(int)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(int)" (( "(") (identifier "int") () ")"))) (argument_list "(dVar4 + dVar7)" (( "(") (binary_expression "dVar4 + dVar7" (identifier "dVar4") (+ "+") (identifier "dVar7")) () ")")))) (; ";")) (} "}"))) (} "}"))) (} "}")))) (expression_statement "*param_5 = bVar17 & 0xf0;" (assignment_expression "*param_5 = bVar17 & 0xf0" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (= "=") (binary_expression "bVar17 & 0xf0" (identifier "bVar17") (& "&") (number_literal "0xf0"))) (; ";")) (expression_statement "fVar37 = fVar36;" (assignment_expression "fVar37 = fVar36" (identifier "fVar37") (= "=") (identifier "fVar36")) (; ";")) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }" (if "if") (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0)" (( "(") (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44)" (* "*") (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x44)" (( "(") (binary_expression "*(long *)(param_1 + 0x360) + 0x44" (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (number_literal "0x44")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }" ({ "{") (expression_statement "fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);" (assignment_expression "fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (identifier "fVar37") (= "=") (pointer_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (( "(") (binary_expression "param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48)" (* "*") (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x48)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x48)" (( "(") (binary_expression "*(long *)(param_1 + 0x360) + 0x48" (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (number_literal "0x48")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (} "}"))) (expression_statement "*param_5 = bVar17 & 0xf0 | (byte)(int)((double)fVar37 * dVar16 + dVar7) & 0xf;" (assignment_expression "*param_5 = bVar17 & 0xf0 | (byte)(int)((double)fVar37 * dVar16 + dVar7) & 0xf" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (= "=") (binary_expression "bVar17 & 0xf0 | (byte)(int)((double)fVar37 * dVar16 + dVar7) & 0xf" (binary_expression "bVar17 & 0xf0" (identifier "bVar17") (& "&") (number_literal "0xf0")) (| "|") (binary_expression "(byte)(int)((double)fVar37 * dVar16 + dVar7) & 0xf" (call_expression "(byte)(int)((double)fVar37 * dVar16 + dVar7)" (call_expression "(byte)(int)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(int)" (( "(") (identifier "int") () ")"))) (argument_list "((double)fVar37 * dVar16 + dVar7)" (( "(") (binary_expression "(double)fVar37 * dVar16 + dVar7" (binary_expression "(double)fVar37 * dVar16" (cast_expression "(double)fVar37" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "fVar37")) (* "*") (identifier "dVar16")) (+ "+") (identifier "dVar7")) () ")"))) (& "&") (number_literal "0xf")))) (; ";")) (expression_statement "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4" (identifier "param_4") (= "=") (binary_expression "param_4 + *(long *)(param_1 + 0x340) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" (* "*") (cast_expression "(long *)(param_1 + 0x340)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x340)" (( "(") (binary_expression "param_1 + 0x340" (identifier "param_1") (+ "+") (number_literal "0x340")) () ")")))) (* "*") (number_literal "4")))) (; ";")) (expression_statement "param_5 = param_5 + 1;" (assignment_expression "param_5 = param_5 + 1" (identifier "param_5") (= "=") (binary_expression "param_5 + 1" (identifier "param_5") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_5 != pbVar1)" (( "(") (binary_expression "param_5 != pbVar1" (identifier "param_5") (!= "!=") (identifier "pbVar1")) () ")")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (labeled_statement "LAB_002734da:\n    uVar33 = 0;" (statement_identifier "LAB_002734da") (: ":") (expression_statement "uVar33 = 0;" (assignment_expression "uVar33 = 0" (identifier "uVar33") (= "=") (number_literal "0")) (; ";"))) (if_statement "if (uVar34 == 0) goto LAB_002734e9;" (if "if") (parenthesized_expression "(uVar34 == 0)" (( "(") (binary_expression "uVar34 == 0" (identifier "uVar34") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_002734e9;" (goto "goto") (statement_identifier "LAB_002734e9") (; ";"))) (} "}")) (else_clause "else {\n    if (uVar34 == 0x20) {\n      if ((int)param_2[2] == 1) {\n        if ((long)param_3 < 1) {\n          return;\n        }\n        uVar34 = 0;\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar37 = (float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3]);\n          bVar18 = (byte)((uint)fVar37 >> 8);\n          bVar27 = (byte)((uint)fVar37 >> 0x10);\n          bVar17 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = SUB41(fVar37,0);\n            param_5[1] = bVar18;\n            param_5[2] = bVar27;\n            param_5[3] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = bVar27;\n            param_5[2] = bVar18;\n            param_5[3] = SUB41(fVar37,0);\n          }\n          fVar37 = fVar36;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          fVar37 = (float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3]);\n          bVar17 = (byte)((uint)fVar37 >> 8);\n          bVar18 = (byte)((uint)fVar37 >> 0x10);\n          bVar27 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            param_5[4] = SUB41(fVar37,0);\n            param_5[5] = bVar17;\n            param_5[6] = bVar18;\n            param_5[7] = bVar27;\n          }\n          else {\n            param_5[4] = bVar27;\n            param_5[5] = bVar18;\n            param_5[6] = bVar17;\n            param_5[7] = SUB41(fVar37,0);\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 8;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      uVar34 = 0;\n      if ((long)param_3 < 1) {\n        return;\n      }\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar36)) {\n          uVar20 = 0;\n        }\n        else {\n          uVar20 = 0;\n          if ((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)) {\n            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = (byte)uVar20;\n          param_5[1] = bVar17;\n          param_5[2] = bVar18;\n          param_5[3] = bVar27;\n        }\n        else {\n          *param_5 = bVar27;\n          param_5[1] = bVar18;\n          param_5[2] = bVar17;\n          param_5[3] = (byte)uVar20;\n        }\n        uVar20 = 0xffffffff;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          if (NAN(fVar36)) {\n            uVar20 = 0;\n          }\n          else {\n            uVar20 = 0;\n            if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          param_5[4] = (byte)uVar20;\n          param_5[5] = bVar17;\n          param_5[6] = bVar18;\n          param_5[7] = bVar27;\n        }\n        else {\n          param_5[4] = bVar27;\n          param_5[5] = bVar18;\n          param_5[6] = bVar17;\n          param_5[7] = (byte)uVar20;\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 8;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }\n    if (uVar34 != 0x40) {\n      if (uVar34 == 0x10) {\n        if ((int)param_2[2] == 1) {\n          if ((long)param_3 < 1) {\n            return;\n          }\n          uVar34 = 0;\n          do {\n            lVar32 = *(long *)(param_1 + 0x360);\n            uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }\n            else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }\n            fVar36 = _DAT_003fa400;\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }\n            uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }\n            else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }\n            param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n            param_5 = param_5 + param_2[6] + 4;\n            uVar34 = uVar34 + 1;\n          } while (uVar34 != param_3);\n          return;\n        }\n        uVar34 = 0;\n        if ((long)param_3 < 1) {\n          return;\n        }\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n          if (NAN(fVar36)) {\n            uVar19 = 0;\n          }\n          else {\n            uVar19 = 0;\n            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = (byte)uVar19;\n            param_5[1] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = (byte)uVar19;\n          }\n          uVar19 = 0xffff;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            if (NAN(fVar36)) {\n              uVar19 = 0;\n            }\n            else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            param_5[2] = (byte)uVar19;\n            param_5[3] = bVar17;\n          }\n          else {\n            param_5[2] = bVar17;\n            param_5[3] = (byte)uVar19;\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 4;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      goto LAB_002734da;\n    }\n    if ((int)param_2[2] == 1) {\n      if ((long)param_3 < 1) {\n        return;\n      }\n      uVar34 = 0;\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        dVar4 = (double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                (double)param_2[0xd] + (double)param_2[3];\n        bVar18 = (byte)((ulong)dVar4 >> 8);\n        bVar23 = (byte)((ulong)dVar4 >> 0x10);\n        bVar24 = (byte)((ulong)dVar4 >> 0x18);\n        bVar25 = (byte)((ulong)dVar4 >> 0x20);\n        bVar26 = (byte)((ulong)dVar4 >> 0x28);\n        bVar27 = (byte)((ulong)dVar4 >> 0x30);\n        bVar17 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = SUB81(dVar4,0);\n          param_5[1] = bVar18;\n          param_5[2] = bVar23;\n          param_5[3] = bVar24;\n          param_5[4] = bVar25;\n          param_5[5] = bVar26;\n          param_5[6] = bVar27;\n          param_5[7] = bVar17;\n        }\n        else {\n          *param_5 = bVar17;\n          param_5[1] = bVar27;\n          param_5[2] = bVar26;\n          param_5[3] = bVar25;\n          param_5[4] = bVar24;\n          param_5[5] = bVar23;\n          param_5[6] = bVar18;\n          param_5[7] = SUB81(dVar4,0);\n        }\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        dVar4 = (double)fVar37 * (double)param_2[0xd] + (double)param_2[3];\n        bVar17 = (byte)((ulong)dVar4 >> 8);\n        bVar18 = (byte)((ulong)dVar4 >> 0x10);\n        bVar27 = (byte)((ulong)dVar4 >> 0x18);\n        bVar26 = (byte)((ulong)dVar4 >> 0x20);\n        bVar25 = (byte)((ulong)dVar4 >> 0x28);\n        bVar24 = (byte)((ulong)dVar4 >> 0x30);\n        bVar23 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          param_5[8] = SUB81(dVar4,0);\n          param_5[9] = bVar17;\n          param_5[10] = bVar18;\n          param_5[0xb] = bVar27;\n          param_5[0xc] = bVar26;\n          param_5[0xd] = bVar25;\n          param_5[0xe] = bVar24;\n          param_5[0xf] = bVar23;\n        }\n        else {\n          param_5[8] = bVar23;\n          param_5[9] = bVar24;\n          param_5[10] = bVar25;\n          param_5[0xb] = bVar26;\n          param_5[0xc] = bVar27;\n          param_5[0xd] = bVar18;\n          param_5[0xe] = bVar17;\n          param_5[0xf] = SUB81(dVar4,0);\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 0x10;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }\n  }" (else "else") (compound_statement "{\n    if (uVar34 == 0x20) {\n      if ((int)param_2[2] == 1) {\n        if ((long)param_3 < 1) {\n          return;\n        }\n        uVar34 = 0;\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar37 = (float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3]);\n          bVar18 = (byte)((uint)fVar37 >> 8);\n          bVar27 = (byte)((uint)fVar37 >> 0x10);\n          bVar17 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = SUB41(fVar37,0);\n            param_5[1] = bVar18;\n            param_5[2] = bVar27;\n            param_5[3] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = bVar27;\n            param_5[2] = bVar18;\n            param_5[3] = SUB41(fVar37,0);\n          }\n          fVar37 = fVar36;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          fVar37 = (float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3]);\n          bVar17 = (byte)((uint)fVar37 >> 8);\n          bVar18 = (byte)((uint)fVar37 >> 0x10);\n          bVar27 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            param_5[4] = SUB41(fVar37,0);\n            param_5[5] = bVar17;\n            param_5[6] = bVar18;\n            param_5[7] = bVar27;\n          }\n          else {\n            param_5[4] = bVar27;\n            param_5[5] = bVar18;\n            param_5[6] = bVar17;\n            param_5[7] = SUB41(fVar37,0);\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 8;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      uVar34 = 0;\n      if ((long)param_3 < 1) {\n        return;\n      }\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar36)) {\n          uVar20 = 0;\n        }\n        else {\n          uVar20 = 0;\n          if ((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)) {\n            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = (byte)uVar20;\n          param_5[1] = bVar17;\n          param_5[2] = bVar18;\n          param_5[3] = bVar27;\n        }\n        else {\n          *param_5 = bVar27;\n          param_5[1] = bVar18;\n          param_5[2] = bVar17;\n          param_5[3] = (byte)uVar20;\n        }\n        uVar20 = 0xffffffff;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          if (NAN(fVar36)) {\n            uVar20 = 0;\n          }\n          else {\n            uVar20 = 0;\n            if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          param_5[4] = (byte)uVar20;\n          param_5[5] = bVar17;\n          param_5[6] = bVar18;\n          param_5[7] = bVar27;\n        }\n        else {\n          param_5[4] = bVar27;\n          param_5[5] = bVar18;\n          param_5[6] = bVar17;\n          param_5[7] = (byte)uVar20;\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 8;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }\n    if (uVar34 != 0x40) {\n      if (uVar34 == 0x10) {\n        if ((int)param_2[2] == 1) {\n          if ((long)param_3 < 1) {\n            return;\n          }\n          uVar34 = 0;\n          do {\n            lVar32 = *(long *)(param_1 + 0x360);\n            uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }\n            else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }\n            fVar36 = _DAT_003fa400;\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }\n            uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }\n            else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }\n            param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n            param_5 = param_5 + param_2[6] + 4;\n            uVar34 = uVar34 + 1;\n          } while (uVar34 != param_3);\n          return;\n        }\n        uVar34 = 0;\n        if ((long)param_3 < 1) {\n          return;\n        }\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n          if (NAN(fVar36)) {\n            uVar19 = 0;\n          }\n          else {\n            uVar19 = 0;\n            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = (byte)uVar19;\n            param_5[1] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = (byte)uVar19;\n          }\n          uVar19 = 0xffff;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            if (NAN(fVar36)) {\n              uVar19 = 0;\n            }\n            else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            param_5[2] = (byte)uVar19;\n            param_5[3] = bVar17;\n          }\n          else {\n            param_5[2] = bVar17;\n            param_5[3] = (byte)uVar19;\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 4;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      goto LAB_002734da;\n    }\n    if ((int)param_2[2] == 1) {\n      if ((long)param_3 < 1) {\n        return;\n      }\n      uVar34 = 0;\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        dVar4 = (double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                (double)param_2[0xd] + (double)param_2[3];\n        bVar18 = (byte)((ulong)dVar4 >> 8);\n        bVar23 = (byte)((ulong)dVar4 >> 0x10);\n        bVar24 = (byte)((ulong)dVar4 >> 0x18);\n        bVar25 = (byte)((ulong)dVar4 >> 0x20);\n        bVar26 = (byte)((ulong)dVar4 >> 0x28);\n        bVar27 = (byte)((ulong)dVar4 >> 0x30);\n        bVar17 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = SUB81(dVar4,0);\n          param_5[1] = bVar18;\n          param_5[2] = bVar23;\n          param_5[3] = bVar24;\n          param_5[4] = bVar25;\n          param_5[5] = bVar26;\n          param_5[6] = bVar27;\n          param_5[7] = bVar17;\n        }\n        else {\n          *param_5 = bVar17;\n          param_5[1] = bVar27;\n          param_5[2] = bVar26;\n          param_5[3] = bVar25;\n          param_5[4] = bVar24;\n          param_5[5] = bVar23;\n          param_5[6] = bVar18;\n          param_5[7] = SUB81(dVar4,0);\n        }\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        dVar4 = (double)fVar37 * (double)param_2[0xd] + (double)param_2[3];\n        bVar17 = (byte)((ulong)dVar4 >> 8);\n        bVar18 = (byte)((ulong)dVar4 >> 0x10);\n        bVar27 = (byte)((ulong)dVar4 >> 0x18);\n        bVar26 = (byte)((ulong)dVar4 >> 0x20);\n        bVar25 = (byte)((ulong)dVar4 >> 0x28);\n        bVar24 = (byte)((ulong)dVar4 >> 0x30);\n        bVar23 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          param_5[8] = SUB81(dVar4,0);\n          param_5[9] = bVar17;\n          param_5[10] = bVar18;\n          param_5[0xb] = bVar27;\n          param_5[0xc] = bVar26;\n          param_5[0xd] = bVar25;\n          param_5[0xe] = bVar24;\n          param_5[0xf] = bVar23;\n        }\n        else {\n          param_5[8] = bVar23;\n          param_5[9] = bVar24;\n          param_5[10] = bVar25;\n          param_5[0xb] = bVar26;\n          param_5[0xc] = bVar27;\n          param_5[0xd] = bVar18;\n          param_5[0xe] = bVar17;\n          param_5[0xf] = SUB81(dVar4,0);\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 0x10;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }\n  }" ({ "{") (if_statement "if (uVar34 == 0x20) {\n      if ((int)param_2[2] == 1) {\n        if ((long)param_3 < 1) {\n          return;\n        }\n        uVar34 = 0;\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar37 = (float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3]);\n          bVar18 = (byte)((uint)fVar37 >> 8);\n          bVar27 = (byte)((uint)fVar37 >> 0x10);\n          bVar17 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = SUB41(fVar37,0);\n            param_5[1] = bVar18;\n            param_5[2] = bVar27;\n            param_5[3] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = bVar27;\n            param_5[2] = bVar18;\n            param_5[3] = SUB41(fVar37,0);\n          }\n          fVar37 = fVar36;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          fVar37 = (float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3]);\n          bVar17 = (byte)((uint)fVar37 >> 8);\n          bVar18 = (byte)((uint)fVar37 >> 0x10);\n          bVar27 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            param_5[4] = SUB41(fVar37,0);\n            param_5[5] = bVar17;\n            param_5[6] = bVar18;\n            param_5[7] = bVar27;\n          }\n          else {\n            param_5[4] = bVar27;\n            param_5[5] = bVar18;\n            param_5[6] = bVar17;\n            param_5[7] = SUB41(fVar37,0);\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 8;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      uVar34 = 0;\n      if ((long)param_3 < 1) {\n        return;\n      }\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar36)) {\n          uVar20 = 0;\n        }\n        else {\n          uVar20 = 0;\n          if ((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)) {\n            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = (byte)uVar20;\n          param_5[1] = bVar17;\n          param_5[2] = bVar18;\n          param_5[3] = bVar27;\n        }\n        else {\n          *param_5 = bVar27;\n          param_5[1] = bVar18;\n          param_5[2] = bVar17;\n          param_5[3] = (byte)uVar20;\n        }\n        uVar20 = 0xffffffff;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          if (NAN(fVar36)) {\n            uVar20 = 0;\n          }\n          else {\n            uVar20 = 0;\n            if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          param_5[4] = (byte)uVar20;\n          param_5[5] = bVar17;\n          param_5[6] = bVar18;\n          param_5[7] = bVar27;\n        }\n        else {\n          param_5[4] = bVar27;\n          param_5[5] = bVar18;\n          param_5[6] = bVar17;\n          param_5[7] = (byte)uVar20;\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 8;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }" (if "if") (parenthesized_expression "(uVar34 == 0x20)" (( "(") (binary_expression "uVar34 == 0x20" (identifier "uVar34") (== "==") (number_literal "0x20")) () ")")) (compound_statement "{\n      if ((int)param_2[2] == 1) {\n        if ((long)param_3 < 1) {\n          return;\n        }\n        uVar34 = 0;\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar37 = (float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3]);\n          bVar18 = (byte)((uint)fVar37 >> 8);\n          bVar27 = (byte)((uint)fVar37 >> 0x10);\n          bVar17 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = SUB41(fVar37,0);\n            param_5[1] = bVar18;\n            param_5[2] = bVar27;\n            param_5[3] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = bVar27;\n            param_5[2] = bVar18;\n            param_5[3] = SUB41(fVar37,0);\n          }\n          fVar37 = fVar36;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          fVar37 = (float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3]);\n          bVar17 = (byte)((uint)fVar37 >> 8);\n          bVar18 = (byte)((uint)fVar37 >> 0x10);\n          bVar27 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            param_5[4] = SUB41(fVar37,0);\n            param_5[5] = bVar17;\n            param_5[6] = bVar18;\n            param_5[7] = bVar27;\n          }\n          else {\n            param_5[4] = bVar27;\n            param_5[5] = bVar18;\n            param_5[6] = bVar17;\n            param_5[7] = SUB41(fVar37,0);\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 8;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      uVar34 = 0;\n      if ((long)param_3 < 1) {\n        return;\n      }\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar36)) {\n          uVar20 = 0;\n        }\n        else {\n          uVar20 = 0;\n          if ((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)) {\n            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = (byte)uVar20;\n          param_5[1] = bVar17;\n          param_5[2] = bVar18;\n          param_5[3] = bVar27;\n        }\n        else {\n          *param_5 = bVar27;\n          param_5[1] = bVar18;\n          param_5[2] = bVar17;\n          param_5[3] = (byte)uVar20;\n        }\n        uVar20 = 0xffffffff;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          if (NAN(fVar36)) {\n            uVar20 = 0;\n          }\n          else {\n            uVar20 = 0;\n            if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          param_5[4] = (byte)uVar20;\n          param_5[5] = bVar17;\n          param_5[6] = bVar18;\n          param_5[7] = bVar27;\n        }\n        else {\n          param_5[4] = bVar27;\n          param_5[5] = bVar18;\n          param_5[6] = bVar17;\n          param_5[7] = (byte)uVar20;\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 8;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }" ({ "{") (if_statement "if ((int)param_2[2] == 1) {\n        if ((long)param_3 < 1) {\n          return;\n        }\n        uVar34 = 0;\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar37 = (float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3]);\n          bVar18 = (byte)((uint)fVar37 >> 8);\n          bVar27 = (byte)((uint)fVar37 >> 0x10);\n          bVar17 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = SUB41(fVar37,0);\n            param_5[1] = bVar18;\n            param_5[2] = bVar27;\n            param_5[3] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = bVar27;\n            param_5[2] = bVar18;\n            param_5[3] = SUB41(fVar37,0);\n          }\n          fVar37 = fVar36;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          fVar37 = (float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3]);\n          bVar17 = (byte)((uint)fVar37 >> 8);\n          bVar18 = (byte)((uint)fVar37 >> 0x10);\n          bVar27 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            param_5[4] = SUB41(fVar37,0);\n            param_5[5] = bVar17;\n            param_5[6] = bVar18;\n            param_5[7] = bVar27;\n          }\n          else {\n            param_5[4] = bVar27;\n            param_5[5] = bVar18;\n            param_5[6] = bVar17;\n            param_5[7] = SUB41(fVar37,0);\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 8;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }" (if "if") (parenthesized_expression "((int)param_2[2] == 1)" (( "(") (binary_expression "(int)param_2[2] == 1" (cast_expression "(int)param_2[2]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n        if ((long)param_3 < 1) {\n          return;\n        }\n        uVar34 = 0;\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar37 = (float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3]);\n          bVar18 = (byte)((uint)fVar37 >> 8);\n          bVar27 = (byte)((uint)fVar37 >> 0x10);\n          bVar17 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = SUB41(fVar37,0);\n            param_5[1] = bVar18;\n            param_5[2] = bVar27;\n            param_5[3] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = bVar27;\n            param_5[2] = bVar18;\n            param_5[3] = SUB41(fVar37,0);\n          }\n          fVar37 = fVar36;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          fVar37 = (float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3]);\n          bVar17 = (byte)((uint)fVar37 >> 8);\n          bVar18 = (byte)((uint)fVar37 >> 0x10);\n          bVar27 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            param_5[4] = SUB41(fVar37,0);\n            param_5[5] = bVar17;\n            param_5[6] = bVar18;\n            param_5[7] = bVar27;\n          }\n          else {\n            param_5[4] = bVar27;\n            param_5[5] = bVar18;\n            param_5[6] = bVar17;\n            param_5[7] = SUB41(fVar37,0);\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 8;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }" ({ "{") (if_statement "if ((long)param_3 < 1) {\n          return;\n        }" (if "if") (parenthesized_expression "((long)param_3 < 1)" (( "(") (binary_expression "(long)param_3 < 1" (cast_expression "(long)param_3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_3")) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n          return;\n        }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "uVar34 = 0;" (assignment_expression "uVar34 = 0" (identifier "uVar34") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar37 = (float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3]);\n          bVar18 = (byte)((uint)fVar37 >> 8);\n          bVar27 = (byte)((uint)fVar37 >> 0x10);\n          bVar17 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = SUB41(fVar37,0);\n            param_5[1] = bVar18;\n            param_5[2] = bVar27;\n            param_5[3] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = bVar27;\n            param_5[2] = bVar18;\n            param_5[3] = SUB41(fVar37,0);\n          }\n          fVar37 = fVar36;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          fVar37 = (float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3]);\n          bVar17 = (byte)((uint)fVar37 >> 8);\n          bVar18 = (byte)((uint)fVar37 >> 0x10);\n          bVar27 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            param_5[4] = SUB41(fVar37,0);\n            param_5[5] = bVar17;\n            param_5[6] = bVar18;\n            param_5[7] = bVar27;\n          }\n          else {\n            param_5[4] = bVar27;\n            param_5[5] = bVar18;\n            param_5[6] = bVar17;\n            param_5[7] = SUB41(fVar37,0);\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 8;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);" (do "do") (compound_statement "{\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar37 = (float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3]);\n          bVar18 = (byte)((uint)fVar37 >> 8);\n          bVar27 = (byte)((uint)fVar37 >> 0x10);\n          bVar17 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = SUB41(fVar37,0);\n            param_5[1] = bVar18;\n            param_5[2] = bVar27;\n            param_5[3] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = bVar27;\n            param_5[2] = bVar18;\n            param_5[3] = SUB41(fVar37,0);\n          }\n          fVar37 = fVar36;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }\n          fVar37 = (float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3]);\n          bVar17 = (byte)((uint)fVar37 >> 8);\n          bVar18 = (byte)((uint)fVar37 >> 0x10);\n          bVar27 = (byte)((uint)fVar37 >> 0x18);\n          if ((int)param_2[0xc] == 1) {\n            param_5[4] = SUB41(fVar37,0);\n            param_5[5] = bVar17;\n            param_5[6] = bVar18;\n            param_5[7] = bVar27;\n          }\n          else {\n            param_5[4] = bVar27;\n            param_5[5] = bVar18;\n            param_5[6] = bVar17;\n            param_5[7] = SUB41(fVar37,0);\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 8;\n          uVar34 = uVar34 + 1;\n        }" ({ "{") (expression_statement "lVar32 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar32 = *(long *)(param_1 + 0x360)" (identifier "lVar32") (= "=") (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")"))))) (; ";")) (expression_statement "fVar37 = (float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3]);" (assignment_expression "fVar37 = (float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3])" (identifier "fVar37") (= "=") (cast_expression "(float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3])" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3])" (( "(") (binary_expression "(double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd] + (double)param_2[3]" (binary_expression "(double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                           (double)param_2[0xd]" (cast_expression "(double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4))" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4))" (( "(") (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (identifier "fVar14") (* "*") (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x18) * 4)" (( "(") (binary_expression "param_4 + *(long *)(lVar32 + 0x18) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(lVar32 + 0x18) * 4" (pointer_expression "*(long *)(lVar32 + 0x18)" (* "*") (cast_expression "(long *)(lVar32 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar32 + 0x18)" (( "(") (binary_expression "lVar32 + 0x18" (identifier "lVar32") (+ "+") (number_literal "0x18")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) (+ "+") (binary_expression "fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (identifier "fVar13") (* "*") (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(lVar32 + 8) * 4)" (( "(") (binary_expression "param_4 + *(long *)(lVar32 + 8) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(lVar32 + 8) * 4" (pointer_expression "*(long *)(lVar32 + 8)" (* "*") (cast_expression "(long *)(lVar32 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar32 + 8)" (( "(") (binary_expression "lVar32 + 8" (identifier "lVar32") (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "4"))) () ")")))))) (+ "+") (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (identifier "fVar15") (* "*") (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x28) * 4)" (( "(") (binary_expression "param_4 + *(long *)(lVar32 + 0x28) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(lVar32 + 0x28) * 4" (pointer_expression "*(long *)(lVar32 + 0x28)" (* "*") (cast_expression "(long *)(lVar32 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar32 + 0x28)" (( "(") (binary_expression "lVar32 + 0x28" (identifier "lVar32") (+ "+") (number_literal "0x28")) () ")")))) (* "*") (number_literal "4"))) () ")")))))) () ")"))) (* "*") (cast_expression "(double)param_2[0xd]" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (subscript_expression "param_2[0xd]" (identifier "param_2") ([ "[") (number_literal "0xd") (] "]")))) (+ "+") (cast_expression "(double)param_2[3]" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")))) () ")")))) (; ";")) (expression_statement "bVar18 = (byte)((uint)fVar37 >> 8);" (assignment_expression "bVar18 = (byte)((uint)fVar37 >> 8)" (identifier "bVar18") (= "=") (call_expression "(byte)((uint)fVar37 >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uint)fVar37 >> 8)" (( "(") (binary_expression "(uint)fVar37 >> 8" (cast_expression "(uint)fVar37" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar37")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "bVar27 = (byte)((uint)fVar37 >> 0x10);" (assignment_expression "bVar27 = (byte)((uint)fVar37 >> 0x10)" (identifier "bVar27") (= "=") (call_expression "(byte)((uint)fVar37 >> 0x10)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uint)fVar37 >> 0x10)" (( "(") (binary_expression "(uint)fVar37 >> 0x10" (cast_expression "(uint)fVar37" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar37")) (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "bVar17 = (byte)((uint)fVar37 >> 0x18);" (assignment_expression "bVar17 = (byte)((uint)fVar37 >> 0x18)" (identifier "bVar17") (= "=") (call_expression "(byte)((uint)fVar37 >> 0x18)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uint)fVar37 >> 0x18)" (( "(") (binary_expression "(uint)fVar37 >> 0x18" (cast_expression "(uint)fVar37" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar37")) (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (if_statement "if ((int)param_2[0xc] == 1) {\n            *param_5 = SUB41(fVar37,0);\n            param_5[1] = bVar18;\n            param_5[2] = bVar27;\n            param_5[3] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = bVar27;\n            param_5[2] = bVar18;\n            param_5[3] = SUB41(fVar37,0);\n          }" (if "if") (parenthesized_expression "((int)param_2[0xc] == 1)" (( "(") (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_2[0xc]" (identifier "param_2") ([ "[") (number_literal "0xc") (] "]"))) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n            *param_5 = SUB41(fVar37,0);\n            param_5[1] = bVar18;\n            param_5[2] = bVar27;\n            param_5[3] = bVar17;\n          }" ({ "{") (expression_statement "*param_5 = SUB41(fVar37,0);" (assignment_expression "*param_5 = SUB41(fVar37,0)" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (= "=") (call_expression "SUB41(fVar37,0)" (identifier "SUB41") (argument_list "(fVar37,0)" (( "(") (identifier "fVar37") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "param_5[1] = bVar18;" (assignment_expression "param_5[1] = bVar18" (subscript_expression "param_5[1]" (identifier "param_5") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "bVar18")) (; ";")) (expression_statement "param_5[2] = bVar27;" (assignment_expression "param_5[2] = bVar27" (subscript_expression "param_5[2]" (identifier "param_5") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "bVar27")) (; ";")) (expression_statement "param_5[3] = bVar17;" (assignment_expression "param_5[3] = bVar17" (subscript_expression "param_5[3]" (identifier "param_5") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "bVar17")) (; ";")) (} "}")) (else_clause "else {\n            *param_5 = bVar17;\n            param_5[1] = bVar27;\n            param_5[2] = bVar18;\n            param_5[3] = SUB41(fVar37,0);\n          }" (else "else") (compound_statement "{\n            *param_5 = bVar17;\n            param_5[1] = bVar27;\n            param_5[2] = bVar18;\n            param_5[3] = SUB41(fVar37,0);\n          }" ({ "{") (expression_statement "*param_5 = bVar17;" (assignment_expression "*param_5 = bVar17" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (= "=") (identifier "bVar17")) (; ";")) (expression_statement "param_5[1] = bVar27;" (assignment_expression "param_5[1] = bVar27" (subscript_expression "param_5[1]" (identifier "param_5") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "bVar27")) (; ";")) (expression_statement "param_5[2] = bVar18;" (assignment_expression "param_5[2] = bVar18" (subscript_expression "param_5[2]" (identifier "param_5") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "bVar18")) (; ";")) (expression_statement "param_5[3] = SUB41(fVar37,0);" (assignment_expression "param_5[3] = SUB41(fVar37,0)" (subscript_expression "param_5[3]" (identifier "param_5") ([ "[") (number_literal "3") (] "]")) (= "=") (call_expression "SUB41(fVar37,0)" (identifier "SUB41") (argument_list "(fVar37,0)" (( "(") (identifier "fVar37") (, ",") (number_literal "0") () ")")))) (; ";")) (} "}")))) (expression_statement "fVar37 = fVar36;" (assignment_expression "fVar37 = fVar36" (identifier "fVar37") (= "=") (identifier "fVar36")) (; ";")) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }" (if "if") (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0)" (( "(") (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44)" (* "*") (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x44)" (( "(") (binary_expression "*(long *)(param_1 + 0x360) + 0x44" (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (number_literal "0x44")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          }" ({ "{") (expression_statement "fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);" (assignment_expression "fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (identifier "fVar37") (= "=") (pointer_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (( "(") (binary_expression "param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48)" (* "*") (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x48)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x48)" (( "(") (binary_expression "*(long *)(param_1 + 0x360) + 0x48" (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (number_literal "0x48")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (} "}"))) (expression_statement "fVar37 = (float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3]);" (assignment_expression "fVar37 = (float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3])" (identifier "fVar37") (= "=") (cast_expression "(float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3])" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "((double)fVar37 * (double)param_2[0xd] + (double)param_2[3])" (( "(") (binary_expression "(double)fVar37 * (double)param_2[0xd] + (double)param_2[3]" (binary_expression "(double)fVar37 * (double)param_2[0xd]" (cast_expression "(double)fVar37" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "fVar37")) (* "*") (cast_expression "(double)param_2[0xd]" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (subscript_expression "param_2[0xd]" (identifier "param_2") ([ "[") (number_literal "0xd") (] "]")))) (+ "+") (cast_expression "(double)param_2[3]" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")))) () ")")))) (; ";")) (expression_statement "bVar17 = (byte)((uint)fVar37 >> 8);" (assignment_expression "bVar17 = (byte)((uint)fVar37 >> 8)" (identifier "bVar17") (= "=") (call_expression "(byte)((uint)fVar37 >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uint)fVar37 >> 8)" (( "(") (binary_expression "(uint)fVar37 >> 8" (cast_expression "(uint)fVar37" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar37")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "bVar18 = (byte)((uint)fVar37 >> 0x10);" (assignment_expression "bVar18 = (byte)((uint)fVar37 >> 0x10)" (identifier "bVar18") (= "=") (call_expression "(byte)((uint)fVar37 >> 0x10)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uint)fVar37 >> 0x10)" (( "(") (binary_expression "(uint)fVar37 >> 0x10" (cast_expression "(uint)fVar37" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar37")) (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "bVar27 = (byte)((uint)fVar37 >> 0x18);" (assignment_expression "bVar27 = (byte)((uint)fVar37 >> 0x18)" (identifier "bVar27") (= "=") (call_expression "(byte)((uint)fVar37 >> 0x18)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uint)fVar37 >> 0x18)" (( "(") (binary_expression "(uint)fVar37 >> 0x18" (cast_expression "(uint)fVar37" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar37")) (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (if_statement "if ((int)param_2[0xc] == 1) {\n            param_5[4] = SUB41(fVar37,0);\n            param_5[5] = bVar17;\n            param_5[6] = bVar18;\n            param_5[7] = bVar27;\n          }\n          else {\n            param_5[4] = bVar27;\n            param_5[5] = bVar18;\n            param_5[6] = bVar17;\n            param_5[7] = SUB41(fVar37,0);\n          }" (if "if") (parenthesized_expression "((int)param_2[0xc] == 1)" (( "(") (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_2[0xc]" (identifier "param_2") ([ "[") (number_literal "0xc") (] "]"))) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n            param_5[4] = SUB41(fVar37,0);\n            param_5[5] = bVar17;\n            param_5[6] = bVar18;\n            param_5[7] = bVar27;\n          }" ({ "{") (expression_statement "param_5[4] = SUB41(fVar37,0);" (assignment_expression "param_5[4] = SUB41(fVar37,0)" (subscript_expression "param_5[4]" (identifier "param_5") ([ "[") (number_literal "4") (] "]")) (= "=") (call_expression "SUB41(fVar37,0)" (identifier "SUB41") (argument_list "(fVar37,0)" (( "(") (identifier "fVar37") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "param_5[5] = bVar17;" (assignment_expression "param_5[5] = bVar17" (subscript_expression "param_5[5]" (identifier "param_5") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "bVar17")) (; ";")) (expression_statement "param_5[6] = bVar18;" (assignment_expression "param_5[6] = bVar18" (subscript_expression "param_5[6]" (identifier "param_5") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "bVar18")) (; ";")) (expression_statement "param_5[7] = bVar27;" (assignment_expression "param_5[7] = bVar27" (subscript_expression "param_5[7]" (identifier "param_5") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "bVar27")) (; ";")) (} "}")) (else_clause "else {\n            param_5[4] = bVar27;\n            param_5[5] = bVar18;\n            param_5[6] = bVar17;\n            param_5[7] = SUB41(fVar37,0);\n          }" (else "else") (compound_statement "{\n            param_5[4] = bVar27;\n            param_5[5] = bVar18;\n            param_5[6] = bVar17;\n            param_5[7] = SUB41(fVar37,0);\n          }" ({ "{") (expression_statement "param_5[4] = bVar27;" (assignment_expression "param_5[4] = bVar27" (subscript_expression "param_5[4]" (identifier "param_5") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "bVar27")) (; ";")) (expression_statement "param_5[5] = bVar18;" (assignment_expression "param_5[5] = bVar18" (subscript_expression "param_5[5]" (identifier "param_5") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "bVar18")) (; ";")) (expression_statement "param_5[6] = bVar17;" (assignment_expression "param_5[6] = bVar17" (subscript_expression "param_5[6]" (identifier "param_5") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "bVar17")) (; ";")) (expression_statement "param_5[7] = SUB41(fVar37,0);" (assignment_expression "param_5[7] = SUB41(fVar37,0)" (subscript_expression "param_5[7]" (identifier "param_5") ([ "[") (number_literal "7") (] "]")) (= "=") (call_expression "SUB41(fVar37,0)" (identifier "SUB41") (argument_list "(fVar37,0)" (( "(") (identifier "fVar37") (, ",") (number_literal "0") () ")")))) (; ";")) (} "}")))) (expression_statement "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4" (identifier "param_4") (= "=") (binary_expression "param_4 + *(long *)(param_1 + 0x340) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" (* "*") (cast_expression "(long *)(param_1 + 0x340)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x340)" (( "(") (binary_expression "param_1 + 0x340" (identifier "param_1") (+ "+") (number_literal "0x340")) () ")")))) (* "*") (number_literal "4")))) (; ";")) (expression_statement "param_5 = param_5 + param_2[6] + 8;" (assignment_expression "param_5 = param_5 + param_2[6] + 8" (identifier "param_5") (= "=") (binary_expression "param_5 + param_2[6] + 8" (binary_expression "param_5 + param_2[6]" (identifier "param_5") (+ "+") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]"))) (+ "+") (number_literal "8"))) (; ";")) (expression_statement "uVar34 = uVar34 + 1;" (assignment_expression "uVar34 = uVar34 + 1" (identifier "uVar34") (= "=") (binary_expression "uVar34 + 1" (identifier "uVar34") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar34 != param_3)" (( "(") (binary_expression "uVar34 != param_3" (identifier "uVar34") (!= "!=") (identifier "param_3")) () ")")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "uVar34 = 0;" (assignment_expression "uVar34 = 0" (identifier "uVar34") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((long)param_3 < 1) {\n        return;\n      }" (if "if") (parenthesized_expression "((long)param_3 < 1)" (( "(") (binary_expression "(long)param_3 < 1" (cast_expression "(long)param_3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_3")) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n        return;\n      }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (do_statement "do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar36)) {\n          uVar20 = 0;\n        }\n        else {\n          uVar20 = 0;\n          if ((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)) {\n            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = (byte)uVar20;\n          param_5[1] = bVar17;\n          param_5[2] = bVar18;\n          param_5[3] = bVar27;\n        }\n        else {\n          *param_5 = bVar27;\n          param_5[1] = bVar18;\n          param_5[2] = bVar17;\n          param_5[3] = (byte)uVar20;\n        }\n        uVar20 = 0xffffffff;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          if (NAN(fVar36)) {\n            uVar20 = 0;\n          }\n          else {\n            uVar20 = 0;\n            if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          param_5[4] = (byte)uVar20;\n          param_5[5] = bVar17;\n          param_5[6] = bVar18;\n          param_5[7] = bVar27;\n        }\n        else {\n          param_5[4] = bVar27;\n          param_5[5] = bVar18;\n          param_5[6] = bVar17;\n          param_5[7] = (byte)uVar20;\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 8;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);" (do "do") (compound_statement "{\n        lVar32 = *(long *)(param_1 + 0x360);\n        fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n        if (NAN(fVar36)) {\n          uVar20 = 0;\n        }\n        else {\n          uVar20 = 0;\n          if ((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)) {\n            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = (byte)uVar20;\n          param_5[1] = bVar17;\n          param_5[2] = bVar18;\n          param_5[3] = bVar27;\n        }\n        else {\n          *param_5 = bVar27;\n          param_5[1] = bVar18;\n          param_5[2] = bVar17;\n          param_5[3] = (byte)uVar20;\n        }\n        uVar20 = 0xffffffff;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          if (NAN(fVar36)) {\n            uVar20 = 0;\n          }\n          else {\n            uVar20 = 0;\n            if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }\n        bVar17 = (byte)((uint)uVar20 >> 8);\n        bVar18 = (byte)((uint)uVar20 >> 0x10);\n        bVar27 = (byte)((uint)uVar20 >> 0x18);\n        if ((int)param_2[0xc] == 1) {\n          param_5[4] = (byte)uVar20;\n          param_5[5] = bVar17;\n          param_5[6] = bVar18;\n          param_5[7] = bVar27;\n        }\n        else {\n          param_5[4] = bVar27;\n          param_5[5] = bVar18;\n          param_5[6] = bVar17;\n          param_5[7] = (byte)uVar20;\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 8;\n        uVar34 = uVar34 + 1;\n      }" ({ "{") (expression_statement "lVar32 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar32 = *(long *)(param_1 + 0x360)" (identifier "lVar32") (= "=") (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")"))))) (; ";")) (expression_statement "fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);" (assignment_expression "fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (identifier "fVar36") (= "=") (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (identifier "fVar14") (* "*") (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x18) * 4)" (( "(") (binary_expression "param_4 + *(long *)(lVar32 + 0x18) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(lVar32 + 0x18) * 4" (pointer_expression "*(long *)(lVar32 + 0x18)" (* "*") (cast_expression "(long *)(lVar32 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar32 + 0x18)" (( "(") (binary_expression "lVar32 + 0x18" (identifier "lVar32") (+ "+") (number_literal "0x18")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) (+ "+") (binary_expression "fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (identifier "fVar13") (* "*") (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(lVar32 + 8) * 4)" (( "(") (binary_expression "param_4 + *(long *)(lVar32 + 8) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(lVar32 + 8) * 4" (pointer_expression "*(long *)(lVar32 + 8)" (* "*") (cast_expression "(long *)(lVar32 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar32 + 8)" (( "(") (binary_expression "lVar32 + 8" (identifier "lVar32") (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "4"))) () ")")))))) (+ "+") (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (identifier "fVar15") (* "*") (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x28) * 4)" (( "(") (binary_expression "param_4 + *(long *)(lVar32 + 0x28) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(lVar32 + 0x28) * 4" (pointer_expression "*(long *)(lVar32 + 0x28)" (* "*") (cast_expression "(long *)(lVar32 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar32 + 0x28)" (( "(") (binary_expression "lVar32 + 0x28" (identifier "lVar32") (+ "+") (number_literal "0x28")) () ")")))) (* "*") (number_literal "4"))) () ")"))))))) (; ";")) (if_statement "if (NAN(fVar36)) {\n          uVar20 = 0;\n        }\n        else {\n          uVar20 = 0;\n          if ((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)) {\n            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);\n          }\n        }" (if "if") (parenthesized_expression "(NAN(fVar36))" (( "(") (call_expression "NAN(fVar36)" (identifier "NAN") (argument_list "(fVar36)" (( "(") (identifier "fVar36") () ")"))) () ")")) (compound_statement "{\n          uVar20 = 0;\n        }" ({ "{") (expression_statement "uVar20 = 0;" (assignment_expression "uVar20 = 0" (identifier "uVar20") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n          uVar20 = 0;\n          if ((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)) {\n            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);\n          }\n        }" (else "else") (compound_statement "{\n          uVar20 = 0;\n          if ((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)) {\n            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);\n          }\n        }" ({ "{") (expression_statement "uVar20 = 0;" (assignment_expression "uVar20 = 0" (identifier "uVar20") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)) {\n            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);\n          }" (if "if") (parenthesized_expression "((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10))" (( "(") (binary_expression "(0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)" (parenthesized_expression "(0.0 < fVar36)" (( "(") (binary_expression "0.0 < fVar36" (number_literal "0.0") (< "<") (identifier "fVar36")) () ")")) (&& "&&") (parenthesized_expression "(uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)" (( "(") (comma_expression "uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10" (assignment_expression "uVar20 = 0xffffffff" (identifier "uVar20") (= "=") (number_literal "0xffffffff")) (, ",") (binary_expression "(double)fVar36 * dVar5 < dVar10" (binary_expression "(double)fVar36 * dVar5" (cast_expression "(double)fVar36" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "fVar36")) (* "*") (identifier "dVar5")) (< "<") (identifier "dVar10"))) () ")"))) () ")")) (compound_statement "{\n            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);\n          }" ({ "{") (expression_statement "uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);" (assignment_expression "uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7)" (identifier "uVar20") (= "=") (call_expression "(undefined4)(long)((double)fVar36 * dVar5 + dVar7)" (call_expression "(undefined4)(long)" (parenthesized_expression "(undefined4)" (( "(") (identifier "undefined4") () ")")) (argument_list "(long)" (( "(") (identifier "long") () ")"))) (argument_list "((double)fVar36 * dVar5 + dVar7)" (( "(") (binary_expression "(double)fVar36 * dVar5 + dVar7" (binary_expression "(double)fVar36 * dVar5" (cast_expression "(double)fVar36" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "fVar36")) (* "*") (identifier "dVar5")) (+ "+") (identifier "dVar7")) () ")")))) (; ";")) (} "}"))) (} "}")))) (expression_statement "bVar17 = (byte)((uint)uVar20 >> 8);" (assignment_expression "bVar17 = (byte)((uint)uVar20 >> 8)" (identifier "bVar17") (= "=") (call_expression "(byte)((uint)uVar20 >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uint)uVar20 >> 8)" (( "(") (binary_expression "(uint)uVar20 >> 8" (cast_expression "(uint)uVar20" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar20")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "bVar18 = (byte)((uint)uVar20 >> 0x10);" (assignment_expression "bVar18 = (byte)((uint)uVar20 >> 0x10)" (identifier "bVar18") (= "=") (call_expression "(byte)((uint)uVar20 >> 0x10)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uint)uVar20 >> 0x10)" (( "(") (binary_expression "(uint)uVar20 >> 0x10" (cast_expression "(uint)uVar20" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar20")) (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "bVar27 = (byte)((uint)uVar20 >> 0x18);" (assignment_expression "bVar27 = (byte)((uint)uVar20 >> 0x18)" (identifier "bVar27") (= "=") (call_expression "(byte)((uint)uVar20 >> 0x18)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uint)uVar20 >> 0x18)" (( "(") (binary_expression "(uint)uVar20 >> 0x18" (cast_expression "(uint)uVar20" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar20")) (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (if_statement "if ((int)param_2[0xc] == 1) {\n          *param_5 = (byte)uVar20;\n          param_5[1] = bVar17;\n          param_5[2] = bVar18;\n          param_5[3] = bVar27;\n        }\n        else {\n          *param_5 = bVar27;\n          param_5[1] = bVar18;\n          param_5[2] = bVar17;\n          param_5[3] = (byte)uVar20;\n        }" (if "if") (parenthesized_expression "((int)param_2[0xc] == 1)" (( "(") (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_2[0xc]" (identifier "param_2") ([ "[") (number_literal "0xc") (] "]"))) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n          *param_5 = (byte)uVar20;\n          param_5[1] = bVar17;\n          param_5[2] = bVar18;\n          param_5[3] = bVar27;\n        }" ({ "{") (expression_statement "*param_5 = (byte)uVar20;" (assignment_expression "*param_5 = (byte)uVar20" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (= "=") (cast_expression "(byte)uVar20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar20"))) (; ";")) (expression_statement "param_5[1] = bVar17;" (assignment_expression "param_5[1] = bVar17" (subscript_expression "param_5[1]" (identifier "param_5") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "bVar17")) (; ";")) (expression_statement "param_5[2] = bVar18;" (assignment_expression "param_5[2] = bVar18" (subscript_expression "param_5[2]" (identifier "param_5") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "bVar18")) (; ";")) (expression_statement "param_5[3] = bVar27;" (assignment_expression "param_5[3] = bVar27" (subscript_expression "param_5[3]" (identifier "param_5") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "bVar27")) (; ";")) (} "}")) (else_clause "else {\n          *param_5 = bVar27;\n          param_5[1] = bVar18;\n          param_5[2] = bVar17;\n          param_5[3] = (byte)uVar20;\n        }" (else "else") (compound_statement "{\n          *param_5 = bVar27;\n          param_5[1] = bVar18;\n          param_5[2] = bVar17;\n          param_5[3] = (byte)uVar20;\n        }" ({ "{") (expression_statement "*param_5 = bVar27;" (assignment_expression "*param_5 = bVar27" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (= "=") (identifier "bVar27")) (; ";")) (expression_statement "param_5[1] = bVar18;" (assignment_expression "param_5[1] = bVar18" (subscript_expression "param_5[1]" (identifier "param_5") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "bVar18")) (; ";")) (expression_statement "param_5[2] = bVar17;" (assignment_expression "param_5[2] = bVar17" (subscript_expression "param_5[2]" (identifier "param_5") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "bVar17")) (; ";")) (expression_statement "param_5[3] = (byte)uVar20;" (assignment_expression "param_5[3] = (byte)uVar20" (subscript_expression "param_5[3]" (identifier "param_5") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(byte)uVar20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar20"))) (; ";")) (} "}")))) (expression_statement "uVar20 = 0xffffffff;" (assignment_expression "uVar20 = 0xffffffff" (identifier "uVar20") (= "=") (number_literal "0xffffffff")) (; ";")) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          if (NAN(fVar36)) {\n            uVar20 = 0;\n          }\n          else {\n            uVar20 = 0;\n            if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }" (if "if") (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0)" (( "(") (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44)" (* "*") (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x44)" (( "(") (binary_expression "*(long *)(param_1 + 0x360) + 0x44" (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (number_literal "0x44")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n          if (NAN(fVar36)) {\n            uVar20 = 0;\n          }\n          else {\n            uVar20 = 0;\n            if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }\n          }\n        }" ({ "{") (expression_statement "fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);" (assignment_expression "fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (identifier "fVar36") (= "=") (pointer_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (( "(") (binary_expression "param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48)" (* "*") (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x48)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x48)" (( "(") (binary_expression "*(long *)(param_1 + 0x360) + 0x48" (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (number_literal "0x48")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (if_statement "if (NAN(fVar36)) {\n            uVar20 = 0;\n          }\n          else {\n            uVar20 = 0;\n            if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }\n          }" (if "if") (parenthesized_expression "(NAN(fVar36))" (( "(") (call_expression "NAN(fVar36)" (identifier "NAN") (argument_list "(fVar36)" (( "(") (identifier "fVar36") () ")"))) () ")")) (compound_statement "{\n            uVar20 = 0;\n          }" ({ "{") (expression_statement "uVar20 = 0;" (assignment_expression "uVar20 = 0" (identifier "uVar20") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n            uVar20 = 0;\n            if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }\n          }" (else "else") (compound_statement "{\n            uVar20 = 0;\n            if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }\n          }" ({ "{") (expression_statement "uVar20 = 0;" (assignment_expression "uVar20 = 0" (identifier "uVar20") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }" (if "if") (parenthesized_expression "((0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928))" (( "(") (binary_expression "(0.0 < fVar36) &&\n               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)" (parenthesized_expression "(0.0 < fVar36)" (( "(") (binary_expression "0.0 < fVar36" (number_literal "0.0") (< "<") (identifier "fVar36")) () ")")) (&& "&&") (parenthesized_expression "(uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)" (( "(") (comma_expression "uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928" (assignment_expression "uVar20 = 0xffffffff" (identifier "uVar20") (= "=") (number_literal "0xffffffff")) (, ",") (binary_expression "(double)fVar36 * DAT_00404920 < DAT_00404928" (binary_expression "(double)fVar36 * DAT_00404920" (cast_expression "(double)fVar36" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "fVar36")) (* "*") (identifier "DAT_00404920")) (< "<") (identifier "DAT_00404928"))) () ")"))) () ")")) (compound_statement "{\n              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);\n            }" ({ "{") (expression_statement "uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);" (assignment_expression "uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28)" (identifier "uVar20") (= "=") (cast_expression "(int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "((double)fVar36 * DAT_00404920 + DAT_003f9c28)" (( "(") (binary_expression "(double)fVar36 * DAT_00404920 + DAT_003f9c28" (binary_expression "(double)fVar36 * DAT_00404920" (cast_expression "(double)fVar36" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "fVar36")) (* "*") (identifier "DAT_00404920")) (+ "+") (identifier "DAT_003f9c28")) () ")"))))) (; ";")) (} "}"))) (} "}")))) (} "}"))) (expression_statement "bVar17 = (byte)((uint)uVar20 >> 8);" (assignment_expression "bVar17 = (byte)((uint)uVar20 >> 8)" (identifier "bVar17") (= "=") (call_expression "(byte)((uint)uVar20 >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uint)uVar20 >> 8)" (( "(") (binary_expression "(uint)uVar20 >> 8" (cast_expression "(uint)uVar20" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar20")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "bVar18 = (byte)((uint)uVar20 >> 0x10);" (assignment_expression "bVar18 = (byte)((uint)uVar20 >> 0x10)" (identifier "bVar18") (= "=") (call_expression "(byte)((uint)uVar20 >> 0x10)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uint)uVar20 >> 0x10)" (( "(") (binary_expression "(uint)uVar20 >> 0x10" (cast_expression "(uint)uVar20" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar20")) (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "bVar27 = (byte)((uint)uVar20 >> 0x18);" (assignment_expression "bVar27 = (byte)((uint)uVar20 >> 0x18)" (identifier "bVar27") (= "=") (call_expression "(byte)((uint)uVar20 >> 0x18)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uint)uVar20 >> 0x18)" (( "(") (binary_expression "(uint)uVar20 >> 0x18" (cast_expression "(uint)uVar20" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar20")) (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (if_statement "if ((int)param_2[0xc] == 1) {\n          param_5[4] = (byte)uVar20;\n          param_5[5] = bVar17;\n          param_5[6] = bVar18;\n          param_5[7] = bVar27;\n        }\n        else {\n          param_5[4] = bVar27;\n          param_5[5] = bVar18;\n          param_5[6] = bVar17;\n          param_5[7] = (byte)uVar20;\n        }" (if "if") (parenthesized_expression "((int)param_2[0xc] == 1)" (( "(") (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_2[0xc]" (identifier "param_2") ([ "[") (number_literal "0xc") (] "]"))) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n          param_5[4] = (byte)uVar20;\n          param_5[5] = bVar17;\n          param_5[6] = bVar18;\n          param_5[7] = bVar27;\n        }" ({ "{") (expression_statement "param_5[4] = (byte)uVar20;" (assignment_expression "param_5[4] = (byte)uVar20" (subscript_expression "param_5[4]" (identifier "param_5") ([ "[") (number_literal "4") (] "]")) (= "=") (cast_expression "(byte)uVar20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar20"))) (; ";")) (expression_statement "param_5[5] = bVar17;" (assignment_expression "param_5[5] = bVar17" (subscript_expression "param_5[5]" (identifier "param_5") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "bVar17")) (; ";")) (expression_statement "param_5[6] = bVar18;" (assignment_expression "param_5[6] = bVar18" (subscript_expression "param_5[6]" (identifier "param_5") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "bVar18")) (; ";")) (expression_statement "param_5[7] = bVar27;" (assignment_expression "param_5[7] = bVar27" (subscript_expression "param_5[7]" (identifier "param_5") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "bVar27")) (; ";")) (} "}")) (else_clause "else {\n          param_5[4] = bVar27;\n          param_5[5] = bVar18;\n          param_5[6] = bVar17;\n          param_5[7] = (byte)uVar20;\n        }" (else "else") (compound_statement "{\n          param_5[4] = bVar27;\n          param_5[5] = bVar18;\n          param_5[6] = bVar17;\n          param_5[7] = (byte)uVar20;\n        }" ({ "{") (expression_statement "param_5[4] = bVar27;" (assignment_expression "param_5[4] = bVar27" (subscript_expression "param_5[4]" (identifier "param_5") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "bVar27")) (; ";")) (expression_statement "param_5[5] = bVar18;" (assignment_expression "param_5[5] = bVar18" (subscript_expression "param_5[5]" (identifier "param_5") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "bVar18")) (; ";")) (expression_statement "param_5[6] = bVar17;" (assignment_expression "param_5[6] = bVar17" (subscript_expression "param_5[6]" (identifier "param_5") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "bVar17")) (; ";")) (expression_statement "param_5[7] = (byte)uVar20;" (assignment_expression "param_5[7] = (byte)uVar20" (subscript_expression "param_5[7]" (identifier "param_5") ([ "[") (number_literal "7") (] "]")) (= "=") (cast_expression "(byte)uVar20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar20"))) (; ";")) (} "}")))) (expression_statement "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4" (identifier "param_4") (= "=") (binary_expression "param_4 + *(long *)(param_1 + 0x340) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" (* "*") (cast_expression "(long *)(param_1 + 0x340)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x340)" (( "(") (binary_expression "param_1 + 0x340" (identifier "param_1") (+ "+") (number_literal "0x340")) () ")")))) (* "*") (number_literal "4")))) (; ";")) (expression_statement "param_5 = param_5 + param_2[6] + 8;" (assignment_expression "param_5 = param_5 + param_2[6] + 8" (identifier "param_5") (= "=") (binary_expression "param_5 + param_2[6] + 8" (binary_expression "param_5 + param_2[6]" (identifier "param_5") (+ "+") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]"))) (+ "+") (number_literal "8"))) (; ";")) (expression_statement "uVar34 = uVar34 + 1;" (assignment_expression "uVar34 = uVar34 + 1" (identifier "uVar34") (= "=") (binary_expression "uVar34 + 1" (identifier "uVar34") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar34 != param_3)" (( "(") (binary_expression "uVar34 != param_3" (identifier "uVar34") (!= "!=") (identifier "param_3")) () ")")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (uVar34 != 0x40) {\n      if (uVar34 == 0x10) {\n        if ((int)param_2[2] == 1) {\n          if ((long)param_3 < 1) {\n            return;\n          }\n          uVar34 = 0;\n          do {\n            lVar32 = *(long *)(param_1 + 0x360);\n            uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }\n            else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }\n            fVar36 = _DAT_003fa400;\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }\n            uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }\n            else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }\n            param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n            param_5 = param_5 + param_2[6] + 4;\n            uVar34 = uVar34 + 1;\n          } while (uVar34 != param_3);\n          return;\n        }\n        uVar34 = 0;\n        if ((long)param_3 < 1) {\n          return;\n        }\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n          if (NAN(fVar36)) {\n            uVar19 = 0;\n          }\n          else {\n            uVar19 = 0;\n            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = (byte)uVar19;\n            param_5[1] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = (byte)uVar19;\n          }\n          uVar19 = 0xffff;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            if (NAN(fVar36)) {\n              uVar19 = 0;\n            }\n            else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            param_5[2] = (byte)uVar19;\n            param_5[3] = bVar17;\n          }\n          else {\n            param_5[2] = bVar17;\n            param_5[3] = (byte)uVar19;\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 4;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      goto LAB_002734da;\n    }" (if "if") (parenthesized_expression "(uVar34 != 0x40)" (( "(") (binary_expression "uVar34 != 0x40" (identifier "uVar34") (!= "!=") (number_literal "0x40")) () ")")) (compound_statement "{\n      if (uVar34 == 0x10) {\n        if ((int)param_2[2] == 1) {\n          if ((long)param_3 < 1) {\n            return;\n          }\n          uVar34 = 0;\n          do {\n            lVar32 = *(long *)(param_1 + 0x360);\n            uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }\n            else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }\n            fVar36 = _DAT_003fa400;\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }\n            uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }\n            else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }\n            param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n            param_5 = param_5 + param_2[6] + 4;\n            uVar34 = uVar34 + 1;\n          } while (uVar34 != param_3);\n          return;\n        }\n        uVar34 = 0;\n        if ((long)param_3 < 1) {\n          return;\n        }\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n          if (NAN(fVar36)) {\n            uVar19 = 0;\n          }\n          else {\n            uVar19 = 0;\n            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = (byte)uVar19;\n            param_5[1] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = (byte)uVar19;\n          }\n          uVar19 = 0xffff;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            if (NAN(fVar36)) {\n              uVar19 = 0;\n            }\n            else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            param_5[2] = (byte)uVar19;\n            param_5[3] = bVar17;\n          }\n          else {\n            param_5[2] = bVar17;\n            param_5[3] = (byte)uVar19;\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 4;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }\n      goto LAB_002734da;\n    }" ({ "{") (if_statement "if (uVar34 == 0x10) {\n        if ((int)param_2[2] == 1) {\n          if ((long)param_3 < 1) {\n            return;\n          }\n          uVar34 = 0;\n          do {\n            lVar32 = *(long *)(param_1 + 0x360);\n            uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }\n            else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }\n            fVar36 = _DAT_003fa400;\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }\n            uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }\n            else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }\n            param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n            param_5 = param_5 + param_2[6] + 4;\n            uVar34 = uVar34 + 1;\n          } while (uVar34 != param_3);\n          return;\n        }\n        uVar34 = 0;\n        if ((long)param_3 < 1) {\n          return;\n        }\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n          if (NAN(fVar36)) {\n            uVar19 = 0;\n          }\n          else {\n            uVar19 = 0;\n            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = (byte)uVar19;\n            param_5[1] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = (byte)uVar19;\n          }\n          uVar19 = 0xffff;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            if (NAN(fVar36)) {\n              uVar19 = 0;\n            }\n            else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            param_5[2] = (byte)uVar19;\n            param_5[3] = bVar17;\n          }\n          else {\n            param_5[2] = bVar17;\n            param_5[3] = (byte)uVar19;\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 4;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }" (if "if") (parenthesized_expression "(uVar34 == 0x10)" (( "(") (binary_expression "uVar34 == 0x10" (identifier "uVar34") (== "==") (number_literal "0x10")) () ")")) (compound_statement "{\n        if ((int)param_2[2] == 1) {\n          if ((long)param_3 < 1) {\n            return;\n          }\n          uVar34 = 0;\n          do {\n            lVar32 = *(long *)(param_1 + 0x360);\n            uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }\n            else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }\n            fVar36 = _DAT_003fa400;\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }\n            uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }\n            else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }\n            param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n            param_5 = param_5 + param_2[6] + 4;\n            uVar34 = uVar34 + 1;\n          } while (uVar34 != param_3);\n          return;\n        }\n        uVar34 = 0;\n        if ((long)param_3 < 1) {\n          return;\n        }\n        do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n          if (NAN(fVar36)) {\n            uVar19 = 0;\n          }\n          else {\n            uVar19 = 0;\n            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = (byte)uVar19;\n            param_5[1] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = (byte)uVar19;\n          }\n          uVar19 = 0xffff;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            if (NAN(fVar36)) {\n              uVar19 = 0;\n            }\n            else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            param_5[2] = (byte)uVar19;\n            param_5[3] = bVar17;\n          }\n          else {\n            param_5[2] = bVar17;\n            param_5[3] = (byte)uVar19;\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 4;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);\n        return;\n      }" ({ "{") (if_statement "if ((int)param_2[2] == 1) {\n          if ((long)param_3 < 1) {\n            return;\n          }\n          uVar34 = 0;\n          do {\n            lVar32 = *(long *)(param_1 + 0x360);\n            uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }\n            else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }\n            fVar36 = _DAT_003fa400;\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }\n            uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }\n            else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }\n            param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n            param_5 = param_5 + param_2[6] + 4;\n            uVar34 = uVar34 + 1;\n          } while (uVar34 != param_3);\n          return;\n        }" (if "if") (parenthesized_expression "((int)param_2[2] == 1)" (( "(") (binary_expression "(int)param_2[2] == 1" (cast_expression "(int)param_2[2]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n          if ((long)param_3 < 1) {\n            return;\n          }\n          uVar34 = 0;\n          do {\n            lVar32 = *(long *)(param_1 + 0x360);\n            uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }\n            else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }\n            fVar36 = _DAT_003fa400;\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }\n            uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }\n            else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }\n            param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n            param_5 = param_5 + param_2[6] + 4;\n            uVar34 = uVar34 + 1;\n          } while (uVar34 != param_3);\n          return;\n        }" ({ "{") (if_statement "if ((long)param_3 < 1) {\n            return;\n          }" (if "if") (parenthesized_expression "((long)param_3 < 1)" (( "(") (binary_expression "(long)param_3 < 1" (cast_expression "(long)param_3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_3")) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n            return;\n          }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "uVar34 = 0;" (assignment_expression "uVar34 = 0" (identifier "uVar34") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n            lVar32 = *(long *)(param_1 + 0x360);\n            uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }\n            else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }\n            fVar36 = _DAT_003fa400;\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }\n            uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }\n            else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }\n            param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n            param_5 = param_5 + param_2[6] + 4;\n            uVar34 = uVar34 + 1;\n          } while (uVar34 != param_3);" (do "do") (compound_statement "{\n            lVar32 = *(long *)(param_1 + 0x360);\n            uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }\n            else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }\n            fVar36 = _DAT_003fa400;\n            if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }\n            uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));\n            bVar17 = (byte)((ushort)uVar19 >> 8);\n            if ((int)param_2[0xc] == 1) {\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }\n            else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }\n            param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n            param_5 = param_5 + param_2[6] + 4;\n            uVar34 = uVar34 + 1;\n          }" ({ "{") (expression_statement "lVar32 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar32 = *(long *)(param_1 + 0x360)" (identifier "lVar32") (= "=") (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")"))))) (; ";")) (expression_statement "uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60));" (assignment_expression "uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60))" (identifier "uVar19") (= "=") (call_expression "FUN_00272577((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60))" (identifier "FUN_00272577") (argument_list "((float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60))" (( "(") (cast_expression "(float)((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "((double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60)" (( "(") (binary_expression "(double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  ) * DAT_003f9c60" (cast_expression "(double)(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  )" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "(DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)\n                                                  )" (( "(") (binary_expression "DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                                                  DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (binary_expression "DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             ) +\n                                                   DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (binary_expression "DAT_0041abdc *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             )" (identifier "DAT_0041abdc") (* "*") (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             )" (* "*") (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             )" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x18) * 4\n                                                             )" (( "(") (binary_expression "param_4 + *(long *)(lVar32 + 0x18) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(lVar32 + 0x18) * 4" (pointer_expression "*(long *)(lVar32 + 0x18)" (* "*") (cast_expression "(long *)(lVar32 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar32 + 0x18)" (( "(") (binary_expression "lVar32 + 0x18" (identifier "lVar32") (+ "+") (number_literal "0x18")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) (+ "+") (binary_expression "DAT_0041abd8 *\n                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (identifier "DAT_0041abd8") (* "*") (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(lVar32 + 8) * 4)" (( "(") (binary_expression "param_4 + *(long *)(lVar32 + 8) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(lVar32 + 8) * 4" (pointer_expression "*(long *)(lVar32 + 8)" (* "*") (cast_expression "(long *)(lVar32 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar32 + 8)" (( "(") (binary_expression "lVar32 + 8" (identifier "lVar32") (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "4"))) () ")")))))) (+ "+") (binary_expression "DAT_0041abe0 *\n                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (identifier "DAT_0041abe0") (* "*") (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x28) * 4)" (( "(") (binary_expression "param_4 + *(long *)(lVar32 + 0x28) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(lVar32 + 0x28) * 4" (pointer_expression "*(long *)(lVar32 + 0x28)" (* "*") (cast_expression "(long *)(lVar32 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar32 + 0x28)" (( "(") (binary_expression "lVar32 + 0x28" (identifier "lVar32") (+ "+") (number_literal "0x28")) () ")")))) (* "*") (number_literal "4"))) () ")")))))) () ")"))) (* "*") (identifier "DAT_003f9c60")) () ")"))) () ")")))) (; ";")) (expression_statement "bVar17 = (byte)((ushort)uVar19 >> 8);" (assignment_expression "bVar17 = (byte)((ushort)uVar19 >> 8)" (identifier "bVar17") (= "=") (call_expression "(byte)((ushort)uVar19 >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ushort)uVar19 >> 8)" (( "(") (binary_expression "(ushort)uVar19 >> 8" (cast_expression "(ushort)uVar19" (( "(") (type_descriptor "ushort" (type_identifier "ushort")) () ")") (identifier "uVar19")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (if_statement "if ((int)param_2[0xc] == 1) {\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }\n            else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }" (if "if") (parenthesized_expression "((int)param_2[0xc] == 1)" (( "(") (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_2[0xc]" (identifier "param_2") ([ "[") (number_literal "0xc") (] "]"))) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n              *param_5 = (byte)uVar19;\n              param_5[1] = bVar17;\n            }" ({ "{") (expression_statement "*param_5 = (byte)uVar19;" (assignment_expression "*param_5 = (byte)uVar19" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (= "=") (cast_expression "(byte)uVar19" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar19"))) (; ";")) (expression_statement "param_5[1] = bVar17;" (assignment_expression "param_5[1] = bVar17" (subscript_expression "param_5[1]" (identifier "param_5") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "bVar17")) (; ";")) (} "}")) (else_clause "else {\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }" (else "else") (compound_statement "{\n              *param_5 = bVar17;\n              param_5[1] = (byte)uVar19;\n            }" ({ "{") (expression_statement "*param_5 = bVar17;" (assignment_expression "*param_5 = bVar17" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (= "=") (identifier "bVar17")) (; ";")) (expression_statement "param_5[1] = (byte)uVar19;" (assignment_expression "param_5[1] = (byte)uVar19" (subscript_expression "param_5[1]" (identifier "param_5") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(byte)uVar19" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar19"))) (; ";")) (} "}")))) (expression_statement "fVar36 = _DAT_003fa400;" (assignment_expression "fVar36 = _DAT_003fa400" (identifier "fVar36") (= "=") (identifier "_DAT_003fa400")) (; ";")) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }" (if "if") (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0)" (( "(") (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44)" (* "*") (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x44)" (( "(") (binary_expression "*(long *)(param_1 + 0x360) + 0x44" (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (number_literal "0x44")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            }" ({ "{") (expression_statement "fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);" (assignment_expression "fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (identifier "fVar36") (= "=") (pointer_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (( "(") (binary_expression "param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48)" (* "*") (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x48)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x48)" (( "(") (binary_expression "*(long *)(param_1 + 0x360) + 0x48" (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (number_literal "0x48")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (} "}"))) (expression_statement "uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));" (assignment_expression "uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60))" (identifier "uVar19") (= "=") (call_expression "FUN_00272577((float)((double)fVar36 * DAT_003f9c60))" (identifier "FUN_00272577") (argument_list "((float)((double)fVar36 * DAT_003f9c60))" (( "(") (cast_expression "(float)((double)fVar36 * DAT_003f9c60)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "((double)fVar36 * DAT_003f9c60)" (( "(") (binary_expression "(double)fVar36 * DAT_003f9c60" (cast_expression "(double)fVar36" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "fVar36")) (* "*") (identifier "DAT_003f9c60")) () ")"))) () ")")))) (; ";")) (expression_statement "bVar17 = (byte)((ushort)uVar19 >> 8);" (assignment_expression "bVar17 = (byte)((ushort)uVar19 >> 8)" (identifier "bVar17") (= "=") (call_expression "(byte)((ushort)uVar19 >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ushort)uVar19 >> 8)" (( "(") (binary_expression "(ushort)uVar19 >> 8" (cast_expression "(ushort)uVar19" (( "(") (type_descriptor "ushort" (type_identifier "ushort")) () ")") (identifier "uVar19")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (if_statement "if ((int)param_2[0xc] == 1) {\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }\n            else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }" (if "if") (parenthesized_expression "((int)param_2[0xc] == 1)" (( "(") (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_2[0xc]" (identifier "param_2") ([ "[") (number_literal "0xc") (] "]"))) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n              param_5[2] = (byte)uVar19;\n              param_5[3] = bVar17;\n            }" ({ "{") (expression_statement "param_5[2] = (byte)uVar19;" (assignment_expression "param_5[2] = (byte)uVar19" (subscript_expression "param_5[2]" (identifier "param_5") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(byte)uVar19" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar19"))) (; ";")) (expression_statement "param_5[3] = bVar17;" (assignment_expression "param_5[3] = bVar17" (subscript_expression "param_5[3]" (identifier "param_5") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "bVar17")) (; ";")) (} "}")) (else_clause "else {\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }" (else "else") (compound_statement "{\n              param_5[2] = bVar17;\n              param_5[3] = (byte)uVar19;\n            }" ({ "{") (expression_statement "param_5[2] = bVar17;" (assignment_expression "param_5[2] = bVar17" (subscript_expression "param_5[2]" (identifier "param_5") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "bVar17")) (; ";")) (expression_statement "param_5[3] = (byte)uVar19;" (assignment_expression "param_5[3] = (byte)uVar19" (subscript_expression "param_5[3]" (identifier "param_5") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(byte)uVar19" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar19"))) (; ";")) (} "}")))) (expression_statement "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4" (identifier "param_4") (= "=") (binary_expression "param_4 + *(long *)(param_1 + 0x340) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" (* "*") (cast_expression "(long *)(param_1 + 0x340)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x340)" (( "(") (binary_expression "param_1 + 0x340" (identifier "param_1") (+ "+") (number_literal "0x340")) () ")")))) (* "*") (number_literal "4")))) (; ";")) (expression_statement "param_5 = param_5 + param_2[6] + 4;" (assignment_expression "param_5 = param_5 + param_2[6] + 4" (identifier "param_5") (= "=") (binary_expression "param_5 + param_2[6] + 4" (binary_expression "param_5 + param_2[6]" (identifier "param_5") (+ "+") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]"))) (+ "+") (number_literal "4"))) (; ";")) (expression_statement "uVar34 = uVar34 + 1;" (assignment_expression "uVar34 = uVar34 + 1" (identifier "uVar34") (= "=") (binary_expression "uVar34 + 1" (identifier "uVar34") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar34 != param_3)" (( "(") (binary_expression "uVar34 != param_3" (identifier "uVar34") (!= "!=") (identifier "param_3")) () ")")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "uVar34 = 0;" (assignment_expression "uVar34 = 0" (identifier "uVar34") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((long)param_3 < 1) {\n          return;\n        }" (if "if") (parenthesized_expression "((long)param_3 < 1)" (( "(") (binary_expression "(long)param_3 < 1" (cast_expression "(long)param_3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_3")) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n          return;\n        }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (do_statement "do {\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n          if (NAN(fVar36)) {\n            uVar19 = 0;\n          }\n          else {\n            uVar19 = 0;\n            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = (byte)uVar19;\n            param_5[1] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = (byte)uVar19;\n          }\n          uVar19 = 0xffff;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            if (NAN(fVar36)) {\n              uVar19 = 0;\n            }\n            else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            param_5[2] = (byte)uVar19;\n            param_5[3] = bVar17;\n          }\n          else {\n            param_5[2] = bVar17;\n            param_5[3] = (byte)uVar19;\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 4;\n          uVar34 = uVar34 + 1;\n        } while (uVar34 != param_3);" (do "do") (compound_statement "{\n          lVar32 = *(long *)(param_1 + 0x360);\n          fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n          if (NAN(fVar36)) {\n            uVar19 = 0;\n          }\n          else {\n            uVar19 = 0;\n            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            *param_5 = (byte)uVar19;\n            param_5[1] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = (byte)uVar19;\n          }\n          uVar19 = 0xffff;\n          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            if (NAN(fVar36)) {\n              uVar19 = 0;\n            }\n            else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }\n          }\n          bVar17 = (byte)((ushort)uVar19 >> 8);\n          if ((int)param_2[0xc] == 1) {\n            param_5[2] = (byte)uVar19;\n            param_5[3] = bVar17;\n          }\n          else {\n            param_5[2] = bVar17;\n            param_5[3] = (byte)uVar19;\n          }\n          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n          param_5 = param_5 + param_2[6] + 4;\n          uVar34 = uVar34 + 1;\n        }" ({ "{") (expression_statement "lVar32 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar32 = *(long *)(param_1 + 0x360)" (identifier "lVar32") (= "=") (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")"))))) (; ";")) (expression_statement "fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);" (assignment_expression "fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (identifier "fVar36") (= "=") (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (identifier "fVar14") (* "*") (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x18) * 4)" (( "(") (binary_expression "param_4 + *(long *)(lVar32 + 0x18) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(lVar32 + 0x18) * 4" (pointer_expression "*(long *)(lVar32 + 0x18)" (* "*") (cast_expression "(long *)(lVar32 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar32 + 0x18)" (( "(") (binary_expression "lVar32 + 0x18" (identifier "lVar32") (+ "+") (number_literal "0x18")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) (+ "+") (binary_expression "fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (identifier "fVar13") (* "*") (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(lVar32 + 8) * 4)" (( "(") (binary_expression "param_4 + *(long *)(lVar32 + 8) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(lVar32 + 8) * 4" (pointer_expression "*(long *)(lVar32 + 8)" (* "*") (cast_expression "(long *)(lVar32 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar32 + 8)" (( "(") (binary_expression "lVar32 + 8" (identifier "lVar32") (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "4"))) () ")")))))) (+ "+") (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (identifier "fVar15") (* "*") (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x28) * 4)" (( "(") (binary_expression "param_4 + *(long *)(lVar32 + 0x28) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(lVar32 + 0x28) * 4" (pointer_expression "*(long *)(lVar32 + 0x28)" (* "*") (cast_expression "(long *)(lVar32 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar32 + 0x28)" (( "(") (binary_expression "lVar32 + 0x28" (identifier "lVar32") (+ "+") (number_literal "0x28")) () ")")))) (* "*") (number_literal "4"))) () ")"))))))) (; ";")) (if_statement "if (NAN(fVar36)) {\n            uVar19 = 0;\n          }\n          else {\n            uVar19 = 0;\n            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }\n          }" (if "if") (parenthesized_expression "(NAN(fVar36))" (( "(") (call_expression "NAN(fVar36)" (identifier "NAN") (argument_list "(fVar36)" (( "(") (identifier "fVar36") () ")"))) () ")")) (compound_statement "{\n            uVar19 = 0;\n          }" ({ "{") (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" (identifier "uVar19") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n            uVar19 = 0;\n            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }\n          }" (else "else") (compound_statement "{\n            uVar19 = 0;\n            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }\n          }" ({ "{") (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" (identifier "uVar19") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }" (if "if") (parenthesized_expression "((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400))" (( "(") (binary_expression "(0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)" (parenthesized_expression "(0.0 < fVar36)" (( "(") (binary_expression "0.0 < fVar36" (number_literal "0.0") (< "<") (identifier "fVar36")) () ")")) (&& "&&") (parenthesized_expression "(uVar19 = 0xffff, fVar36 < _DAT_003fa400)" (( "(") (comma_expression "uVar19 = 0xffff, fVar36 < _DAT_003fa400" (assignment_expression "uVar19 = 0xffff" (identifier "uVar19") (= "=") (number_literal "0xffff")) (, ",") (binary_expression "fVar36 < _DAT_003fa400" (identifier "fVar36") (< "<") (identifier "_DAT_003fa400"))) () ")"))) () ")")) (compound_statement "{\n              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);\n            }" ({ "{") (expression_statement "uVar19 = (undefined2)(int)((double)fVar36 + dVar7);" (assignment_expression "uVar19 = (undefined2)(int)((double)fVar36 + dVar7)" (identifier "uVar19") (= "=") (call_expression "(undefined2)(int)((double)fVar36 + dVar7)" (call_expression "(undefined2)(int)" (parenthesized_expression "(undefined2)" (( "(") (identifier "undefined2") () ")")) (argument_list "(int)" (( "(") (identifier "int") () ")"))) (argument_list "((double)fVar36 + dVar7)" (( "(") (binary_expression "(double)fVar36 + dVar7" (cast_expression "(double)fVar36" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "fVar36")) (+ "+") (identifier "dVar7")) () ")")))) (; ";")) (} "}"))) (} "}")))) (expression_statement "bVar17 = (byte)((ushort)uVar19 >> 8);" (assignment_expression "bVar17 = (byte)((ushort)uVar19 >> 8)" (identifier "bVar17") (= "=") (call_expression "(byte)((ushort)uVar19 >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ushort)uVar19 >> 8)" (( "(") (binary_expression "(ushort)uVar19 >> 8" (cast_expression "(ushort)uVar19" (( "(") (type_descriptor "ushort" (type_identifier "ushort")) () ")") (identifier "uVar19")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (if_statement "if ((int)param_2[0xc] == 1) {\n            *param_5 = (byte)uVar19;\n            param_5[1] = bVar17;\n          }\n          else {\n            *param_5 = bVar17;\n            param_5[1] = (byte)uVar19;\n          }" (if "if") (parenthesized_expression "((int)param_2[0xc] == 1)" (( "(") (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_2[0xc]" (identifier "param_2") ([ "[") (number_literal "0xc") (] "]"))) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n            *param_5 = (byte)uVar19;\n            param_5[1] = bVar17;\n          }" ({ "{") (expression_statement "*param_5 = (byte)uVar19;" (assignment_expression "*param_5 = (byte)uVar19" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (= "=") (cast_expression "(byte)uVar19" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar19"))) (; ";")) (expression_statement "param_5[1] = bVar17;" (assignment_expression "param_5[1] = bVar17" (subscript_expression "param_5[1]" (identifier "param_5") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "bVar17")) (; ";")) (} "}")) (else_clause "else {\n            *param_5 = bVar17;\n            param_5[1] = (byte)uVar19;\n          }" (else "else") (compound_statement "{\n            *param_5 = bVar17;\n            param_5[1] = (byte)uVar19;\n          }" ({ "{") (expression_statement "*param_5 = bVar17;" (assignment_expression "*param_5 = bVar17" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (= "=") (identifier "bVar17")) (; ";")) (expression_statement "param_5[1] = (byte)uVar19;" (assignment_expression "param_5[1] = (byte)uVar19" (subscript_expression "param_5[1]" (identifier "param_5") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(byte)uVar19" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar19"))) (; ";")) (} "}")))) (expression_statement "uVar19 = 0xffff;" (assignment_expression "uVar19 = 0xffff" (identifier "uVar19") (= "=") (number_literal "0xffff")) (; ";")) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            if (NAN(fVar36)) {\n              uVar19 = 0;\n            }\n            else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }\n          }" (if "if") (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0)" (( "(") (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44)" (* "*") (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x44)" (( "(") (binary_expression "*(long *)(param_1 + 0x360) + 0x44" (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (number_literal "0x44")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n            if (NAN(fVar36)) {\n              uVar19 = 0;\n            }\n            else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }\n          }" ({ "{") (expression_statement "fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);" (assignment_expression "fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (identifier "fVar36") (= "=") (pointer_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (( "(") (binary_expression "param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48)" (* "*") (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x48)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x48)" (( "(") (binary_expression "*(long *)(param_1 + 0x360) + 0x48" (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (number_literal "0x48")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (if_statement "if (NAN(fVar36)) {\n              uVar19 = 0;\n            }\n            else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }" (if "if") (parenthesized_expression "(NAN(fVar36))" (( "(") (call_expression "NAN(fVar36)" (identifier "NAN") (argument_list "(fVar36)" (( "(") (identifier "fVar36") () ")"))) () ")")) (compound_statement "{\n              uVar19 = 0;\n            }" ({ "{") (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" (identifier "uVar19") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }" (else "else") (compound_statement "{\n              uVar19 = 0;\n              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }\n            }" ({ "{") (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" (identifier "uVar19") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }" (if "if") (parenthesized_expression "((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400))" (( "(") (binary_expression "(0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)" (parenthesized_expression "(0.0 < fVar36)" (( "(") (binary_expression "0.0 < fVar36" (number_literal "0.0") (< "<") (identifier "fVar36")) () ")")) (&& "&&") (parenthesized_expression "(uVar19 = 0xffff, fVar36 < _DAT_003fa400)" (( "(") (comma_expression "uVar19 = 0xffff, fVar36 < _DAT_003fa400" (assignment_expression "uVar19 = 0xffff" (identifier "uVar19") (= "=") (number_literal "0xffff")) (, ",") (binary_expression "fVar36 < _DAT_003fa400" (identifier "fVar36") (< "<") (identifier "_DAT_003fa400"))) () ")"))) () ")")) (compound_statement "{\n                uVar19 = (short)(int)((double)fVar36 + dVar7);\n              }" ({ "{") (expression_statement "uVar19 = (short)(int)((double)fVar36 + dVar7);" (assignment_expression "uVar19 = (short)(int)((double)fVar36 + dVar7)" (identifier "uVar19") (= "=") (cast_expression "(short)(int)((double)fVar36 + dVar7)" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (cast_expression "(int)((double)fVar36 + dVar7)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((double)fVar36 + dVar7)" (( "(") (binary_expression "(double)fVar36 + dVar7" (cast_expression "(double)fVar36" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "fVar36")) (+ "+") (identifier "dVar7")) () ")"))))) (; ";")) (} "}"))) (} "}")))) (} "}"))) (expression_statement "bVar17 = (byte)((ushort)uVar19 >> 8);" (assignment_expression "bVar17 = (byte)((ushort)uVar19 >> 8)" (identifier "bVar17") (= "=") (call_expression "(byte)((ushort)uVar19 >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ushort)uVar19 >> 8)" (( "(") (binary_expression "(ushort)uVar19 >> 8" (cast_expression "(ushort)uVar19" (( "(") (type_descriptor "ushort" (type_identifier "ushort")) () ")") (identifier "uVar19")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (if_statement "if ((int)param_2[0xc] == 1) {\n            param_5[2] = (byte)uVar19;\n            param_5[3] = bVar17;\n          }\n          else {\n            param_5[2] = bVar17;\n            param_5[3] = (byte)uVar19;\n          }" (if "if") (parenthesized_expression "((int)param_2[0xc] == 1)" (( "(") (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_2[0xc]" (identifier "param_2") ([ "[") (number_literal "0xc") (] "]"))) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n            param_5[2] = (byte)uVar19;\n            param_5[3] = bVar17;\n          }" ({ "{") (expression_statement "param_5[2] = (byte)uVar19;" (assignment_expression "param_5[2] = (byte)uVar19" (subscript_expression "param_5[2]" (identifier "param_5") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(byte)uVar19" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar19"))) (; ";")) (expression_statement "param_5[3] = bVar17;" (assignment_expression "param_5[3] = bVar17" (subscript_expression "param_5[3]" (identifier "param_5") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "bVar17")) (; ";")) (} "}")) (else_clause "else {\n            param_5[2] = bVar17;\n            param_5[3] = (byte)uVar19;\n          }" (else "else") (compound_statement "{\n            param_5[2] = bVar17;\n            param_5[3] = (byte)uVar19;\n          }" ({ "{") (expression_statement "param_5[2] = bVar17;" (assignment_expression "param_5[2] = bVar17" (subscript_expression "param_5[2]" (identifier "param_5") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "bVar17")) (; ";")) (expression_statement "param_5[3] = (byte)uVar19;" (assignment_expression "param_5[3] = (byte)uVar19" (subscript_expression "param_5[3]" (identifier "param_5") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(byte)uVar19" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar19"))) (; ";")) (} "}")))) (expression_statement "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4" (identifier "param_4") (= "=") (binary_expression "param_4 + *(long *)(param_1 + 0x340) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" (* "*") (cast_expression "(long *)(param_1 + 0x340)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x340)" (( "(") (binary_expression "param_1 + 0x340" (identifier "param_1") (+ "+") (number_literal "0x340")) () ")")))) (* "*") (number_literal "4")))) (; ";")) (expression_statement "param_5 = param_5 + param_2[6] + 4;" (assignment_expression "param_5 = param_5 + param_2[6] + 4" (identifier "param_5") (= "=") (binary_expression "param_5 + param_2[6] + 4" (binary_expression "param_5 + param_2[6]" (identifier "param_5") (+ "+") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]"))) (+ "+") (number_literal "4"))) (; ";")) (expression_statement "uVar34 = uVar34 + 1;" (assignment_expression "uVar34 = uVar34 + 1" (identifier "uVar34") (= "=") (binary_expression "uVar34 + 1" (identifier "uVar34") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar34 != param_3)" (( "(") (binary_expression "uVar34 != param_3" (identifier "uVar34") (!= "!=") (identifier "param_3")) () ")")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (goto_statement "goto LAB_002734da;" (goto "goto") (statement_identifier "LAB_002734da") (; ";")) (} "}"))) (if_statement "if ((int)param_2[2] == 1) {\n      if ((long)param_3 < 1) {\n        return;\n      }\n      uVar34 = 0;\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        dVar4 = (double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                (double)param_2[0xd] + (double)param_2[3];\n        bVar18 = (byte)((ulong)dVar4 >> 8);\n        bVar23 = (byte)((ulong)dVar4 >> 0x10);\n        bVar24 = (byte)((ulong)dVar4 >> 0x18);\n        bVar25 = (byte)((ulong)dVar4 >> 0x20);\n        bVar26 = (byte)((ulong)dVar4 >> 0x28);\n        bVar27 = (byte)((ulong)dVar4 >> 0x30);\n        bVar17 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = SUB81(dVar4,0);\n          param_5[1] = bVar18;\n          param_5[2] = bVar23;\n          param_5[3] = bVar24;\n          param_5[4] = bVar25;\n          param_5[5] = bVar26;\n          param_5[6] = bVar27;\n          param_5[7] = bVar17;\n        }\n        else {\n          *param_5 = bVar17;\n          param_5[1] = bVar27;\n          param_5[2] = bVar26;\n          param_5[3] = bVar25;\n          param_5[4] = bVar24;\n          param_5[5] = bVar23;\n          param_5[6] = bVar18;\n          param_5[7] = SUB81(dVar4,0);\n        }\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        dVar4 = (double)fVar37 * (double)param_2[0xd] + (double)param_2[3];\n        bVar17 = (byte)((ulong)dVar4 >> 8);\n        bVar18 = (byte)((ulong)dVar4 >> 0x10);\n        bVar27 = (byte)((ulong)dVar4 >> 0x18);\n        bVar26 = (byte)((ulong)dVar4 >> 0x20);\n        bVar25 = (byte)((ulong)dVar4 >> 0x28);\n        bVar24 = (byte)((ulong)dVar4 >> 0x30);\n        bVar23 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          param_5[8] = SUB81(dVar4,0);\n          param_5[9] = bVar17;\n          param_5[10] = bVar18;\n          param_5[0xb] = bVar27;\n          param_5[0xc] = bVar26;\n          param_5[0xd] = bVar25;\n          param_5[0xe] = bVar24;\n          param_5[0xf] = bVar23;\n        }\n        else {\n          param_5[8] = bVar23;\n          param_5[9] = bVar24;\n          param_5[10] = bVar25;\n          param_5[0xb] = bVar26;\n          param_5[0xc] = bVar27;\n          param_5[0xd] = bVar18;\n          param_5[0xe] = bVar17;\n          param_5[0xf] = SUB81(dVar4,0);\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 0x10;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }" (if "if") (parenthesized_expression "((int)param_2[2] == 1)" (( "(") (binary_expression "(int)param_2[2] == 1" (cast_expression "(int)param_2[2]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n      if ((long)param_3 < 1) {\n        return;\n      }\n      uVar34 = 0;\n      do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        dVar4 = (double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                (double)param_2[0xd] + (double)param_2[3];\n        bVar18 = (byte)((ulong)dVar4 >> 8);\n        bVar23 = (byte)((ulong)dVar4 >> 0x10);\n        bVar24 = (byte)((ulong)dVar4 >> 0x18);\n        bVar25 = (byte)((ulong)dVar4 >> 0x20);\n        bVar26 = (byte)((ulong)dVar4 >> 0x28);\n        bVar27 = (byte)((ulong)dVar4 >> 0x30);\n        bVar17 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = SUB81(dVar4,0);\n          param_5[1] = bVar18;\n          param_5[2] = bVar23;\n          param_5[3] = bVar24;\n          param_5[4] = bVar25;\n          param_5[5] = bVar26;\n          param_5[6] = bVar27;\n          param_5[7] = bVar17;\n        }\n        else {\n          *param_5 = bVar17;\n          param_5[1] = bVar27;\n          param_5[2] = bVar26;\n          param_5[3] = bVar25;\n          param_5[4] = bVar24;\n          param_5[5] = bVar23;\n          param_5[6] = bVar18;\n          param_5[7] = SUB81(dVar4,0);\n        }\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        dVar4 = (double)fVar37 * (double)param_2[0xd] + (double)param_2[3];\n        bVar17 = (byte)((ulong)dVar4 >> 8);\n        bVar18 = (byte)((ulong)dVar4 >> 0x10);\n        bVar27 = (byte)((ulong)dVar4 >> 0x18);\n        bVar26 = (byte)((ulong)dVar4 >> 0x20);\n        bVar25 = (byte)((ulong)dVar4 >> 0x28);\n        bVar24 = (byte)((ulong)dVar4 >> 0x30);\n        bVar23 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          param_5[8] = SUB81(dVar4,0);\n          param_5[9] = bVar17;\n          param_5[10] = bVar18;\n          param_5[0xb] = bVar27;\n          param_5[0xc] = bVar26;\n          param_5[0xd] = bVar25;\n          param_5[0xe] = bVar24;\n          param_5[0xf] = bVar23;\n        }\n        else {\n          param_5[8] = bVar23;\n          param_5[9] = bVar24;\n          param_5[10] = bVar25;\n          param_5[0xb] = bVar26;\n          param_5[0xc] = bVar27;\n          param_5[0xd] = bVar18;\n          param_5[0xe] = bVar17;\n          param_5[0xf] = SUB81(dVar4,0);\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 0x10;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);\n      return;\n    }" ({ "{") (if_statement "if ((long)param_3 < 1) {\n        return;\n      }" (if "if") (parenthesized_expression "((long)param_3 < 1)" (( "(") (binary_expression "(long)param_3 < 1" (cast_expression "(long)param_3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_3")) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n        return;\n      }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "uVar34 = 0;" (assignment_expression "uVar34 = 0" (identifier "uVar34") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        lVar32 = *(long *)(param_1 + 0x360);\n        dVar4 = (double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                (double)param_2[0xd] + (double)param_2[3];\n        bVar18 = (byte)((ulong)dVar4 >> 8);\n        bVar23 = (byte)((ulong)dVar4 >> 0x10);\n        bVar24 = (byte)((ulong)dVar4 >> 0x18);\n        bVar25 = (byte)((ulong)dVar4 >> 0x20);\n        bVar26 = (byte)((ulong)dVar4 >> 0x28);\n        bVar27 = (byte)((ulong)dVar4 >> 0x30);\n        bVar17 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = SUB81(dVar4,0);\n          param_5[1] = bVar18;\n          param_5[2] = bVar23;\n          param_5[3] = bVar24;\n          param_5[4] = bVar25;\n          param_5[5] = bVar26;\n          param_5[6] = bVar27;\n          param_5[7] = bVar17;\n        }\n        else {\n          *param_5 = bVar17;\n          param_5[1] = bVar27;\n          param_5[2] = bVar26;\n          param_5[3] = bVar25;\n          param_5[4] = bVar24;\n          param_5[5] = bVar23;\n          param_5[6] = bVar18;\n          param_5[7] = SUB81(dVar4,0);\n        }\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        dVar4 = (double)fVar37 * (double)param_2[0xd] + (double)param_2[3];\n        bVar17 = (byte)((ulong)dVar4 >> 8);\n        bVar18 = (byte)((ulong)dVar4 >> 0x10);\n        bVar27 = (byte)((ulong)dVar4 >> 0x18);\n        bVar26 = (byte)((ulong)dVar4 >> 0x20);\n        bVar25 = (byte)((ulong)dVar4 >> 0x28);\n        bVar24 = (byte)((ulong)dVar4 >> 0x30);\n        bVar23 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          param_5[8] = SUB81(dVar4,0);\n          param_5[9] = bVar17;\n          param_5[10] = bVar18;\n          param_5[0xb] = bVar27;\n          param_5[0xc] = bVar26;\n          param_5[0xd] = bVar25;\n          param_5[0xe] = bVar24;\n          param_5[0xf] = bVar23;\n        }\n        else {\n          param_5[8] = bVar23;\n          param_5[9] = bVar24;\n          param_5[10] = bVar25;\n          param_5[0xb] = bVar26;\n          param_5[0xc] = bVar27;\n          param_5[0xd] = bVar18;\n          param_5[0xe] = bVar17;\n          param_5[0xf] = SUB81(dVar4,0);\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 0x10;\n        uVar34 = uVar34 + 1;\n      } while (uVar34 != param_3);" (do "do") (compound_statement "{\n        lVar32 = *(long *)(param_1 + 0x360);\n        dVar4 = (double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                (double)param_2[0xd] + (double)param_2[3];\n        bVar18 = (byte)((ulong)dVar4 >> 8);\n        bVar23 = (byte)((ulong)dVar4 >> 0x10);\n        bVar24 = (byte)((ulong)dVar4 >> 0x18);\n        bVar25 = (byte)((ulong)dVar4 >> 0x20);\n        bVar26 = (byte)((ulong)dVar4 >> 0x28);\n        bVar27 = (byte)((ulong)dVar4 >> 0x30);\n        bVar17 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          *param_5 = SUB81(dVar4,0);\n          param_5[1] = bVar18;\n          param_5[2] = bVar23;\n          param_5[3] = bVar24;\n          param_5[4] = bVar25;\n          param_5[5] = bVar26;\n          param_5[6] = bVar27;\n          param_5[7] = bVar17;\n        }\n        else {\n          *param_5 = bVar17;\n          param_5[1] = bVar27;\n          param_5[2] = bVar26;\n          param_5[3] = bVar25;\n          param_5[4] = bVar24;\n          param_5[5] = bVar23;\n          param_5[6] = bVar18;\n          param_5[7] = SUB81(dVar4,0);\n        }\n        fVar37 = fVar36;\n        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }\n        dVar4 = (double)fVar37 * (double)param_2[0xd] + (double)param_2[3];\n        bVar17 = (byte)((ulong)dVar4 >> 8);\n        bVar18 = (byte)((ulong)dVar4 >> 0x10);\n        bVar27 = (byte)((ulong)dVar4 >> 0x18);\n        bVar26 = (byte)((ulong)dVar4 >> 0x20);\n        bVar25 = (byte)((ulong)dVar4 >> 0x28);\n        bVar24 = (byte)((ulong)dVar4 >> 0x30);\n        bVar23 = (byte)((ulong)dVar4 >> 0x38);\n        if ((int)param_2[0xc] == 1) {\n          param_5[8] = SUB81(dVar4,0);\n          param_5[9] = bVar17;\n          param_5[10] = bVar18;\n          param_5[0xb] = bVar27;\n          param_5[0xc] = bVar26;\n          param_5[0xd] = bVar25;\n          param_5[0xe] = bVar24;\n          param_5[0xf] = bVar23;\n        }\n        else {\n          param_5[8] = bVar23;\n          param_5[9] = bVar24;\n          param_5[10] = bVar25;\n          param_5[0xb] = bVar26;\n          param_5[0xc] = bVar27;\n          param_5[0xd] = bVar18;\n          param_5[0xe] = bVar17;\n          param_5[0xf] = SUB81(dVar4,0);\n        }\n        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n        param_5 = param_5 + param_2[6] + 0x10;\n        uVar34 = uVar34 + 1;\n      }" ({ "{") (expression_statement "lVar32 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar32 = *(long *)(param_1 + 0x360)" (identifier "lVar32") (= "=") (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")"))))) (; ";")) (expression_statement "dVar4 = (double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                (double)param_2[0xd] + (double)param_2[3];" (assignment_expression "dVar4 = (double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                (double)param_2[0xd] + (double)param_2[3]" (identifier "dVar4") (= "=") (binary_expression "(double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                (double)param_2[0xd] + (double)param_2[3]" (binary_expression "(double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *\n                (double)param_2[0xd]" (cast_expression "(double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4))" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4))" (( "(") (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (identifier "fVar14") (* "*") (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x18) * 4)" (( "(") (binary_expression "param_4 + *(long *)(lVar32 + 0x18) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(lVar32 + 0x18) * 4" (pointer_expression "*(long *)(lVar32 + 0x18)" (* "*") (cast_expression "(long *)(lVar32 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar32 + 0x18)" (( "(") (binary_expression "lVar32 + 0x18" (identifier "lVar32") (+ "+") (number_literal "0x18")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) (+ "+") (binary_expression "fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (identifier "fVar13") (* "*") (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(lVar32 + 8) * 4)" (( "(") (binary_expression "param_4 + *(long *)(lVar32 + 8) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(lVar32 + 8) * 4" (pointer_expression "*(long *)(lVar32 + 8)" (* "*") (cast_expression "(long *)(lVar32 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar32 + 8)" (( "(") (binary_expression "lVar32 + 8" (identifier "lVar32") (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "4"))) () ")")))))) (+ "+") (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (identifier "fVar15") (* "*") (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x28) * 4)" (( "(") (binary_expression "param_4 + *(long *)(lVar32 + 0x28) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(lVar32 + 0x28) * 4" (pointer_expression "*(long *)(lVar32 + 0x28)" (* "*") (cast_expression "(long *)(lVar32 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar32 + 0x28)" (( "(") (binary_expression "lVar32 + 0x28" (identifier "lVar32") (+ "+") (number_literal "0x28")) () ")")))) (* "*") (number_literal "4"))) () ")")))))) () ")"))) (* "*") (cast_expression "(double)param_2[0xd]" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (subscript_expression "param_2[0xd]" (identifier "param_2") ([ "[") (number_literal "0xd") (] "]")))) (+ "+") (cast_expression "(double)param_2[3]" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]"))))) (; ";")) (expression_statement "bVar18 = (byte)((ulong)dVar4 >> 8);" (assignment_expression "bVar18 = (byte)((ulong)dVar4 >> 8)" (identifier "bVar18") (= "=") (call_expression "(byte)((ulong)dVar4 >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulong)dVar4 >> 8)" (( "(") (binary_expression "(ulong)dVar4 >> 8" (cast_expression "(ulong)dVar4" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "dVar4")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "bVar23 = (byte)((ulong)dVar4 >> 0x10);" (assignment_expression "bVar23 = (byte)((ulong)dVar4 >> 0x10)" (identifier "bVar23") (= "=") (call_expression "(byte)((ulong)dVar4 >> 0x10)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulong)dVar4 >> 0x10)" (( "(") (binary_expression "(ulong)dVar4 >> 0x10" (cast_expression "(ulong)dVar4" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "dVar4")) (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "bVar24 = (byte)((ulong)dVar4 >> 0x18);" (assignment_expression "bVar24 = (byte)((ulong)dVar4 >> 0x18)" (identifier "bVar24") (= "=") (call_expression "(byte)((ulong)dVar4 >> 0x18)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulong)dVar4 >> 0x18)" (( "(") (binary_expression "(ulong)dVar4 >> 0x18" (cast_expression "(ulong)dVar4" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "dVar4")) (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "bVar25 = (byte)((ulong)dVar4 >> 0x20);" (assignment_expression "bVar25 = (byte)((ulong)dVar4 >> 0x20)" (identifier "bVar25") (= "=") (call_expression "(byte)((ulong)dVar4 >> 0x20)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulong)dVar4 >> 0x20)" (( "(") (binary_expression "(ulong)dVar4 >> 0x20" (cast_expression "(ulong)dVar4" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "dVar4")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "bVar26 = (byte)((ulong)dVar4 >> 0x28);" (assignment_expression "bVar26 = (byte)((ulong)dVar4 >> 0x28)" (identifier "bVar26") (= "=") (call_expression "(byte)((ulong)dVar4 >> 0x28)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulong)dVar4 >> 0x28)" (( "(") (binary_expression "(ulong)dVar4 >> 0x28" (cast_expression "(ulong)dVar4" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "dVar4")) (>> ">>") (number_literal "0x28")) () ")")))) (; ";")) (expression_statement "bVar27 = (byte)((ulong)dVar4 >> 0x30);" (assignment_expression "bVar27 = (byte)((ulong)dVar4 >> 0x30)" (identifier "bVar27") (= "=") (call_expression "(byte)((ulong)dVar4 >> 0x30)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulong)dVar4 >> 0x30)" (( "(") (binary_expression "(ulong)dVar4 >> 0x30" (cast_expression "(ulong)dVar4" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "dVar4")) (>> ">>") (number_literal "0x30")) () ")")))) (; ";")) (expression_statement "bVar17 = (byte)((ulong)dVar4 >> 0x38);" (assignment_expression "bVar17 = (byte)((ulong)dVar4 >> 0x38)" (identifier "bVar17") (= "=") (call_expression "(byte)((ulong)dVar4 >> 0x38)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulong)dVar4 >> 0x38)" (( "(") (binary_expression "(ulong)dVar4 >> 0x38" (cast_expression "(ulong)dVar4" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "dVar4")) (>> ">>") (number_literal "0x38")) () ")")))) (; ";")) (if_statement "if ((int)param_2[0xc] == 1) {\n          *param_5 = SUB81(dVar4,0);\n          param_5[1] = bVar18;\n          param_5[2] = bVar23;\n          param_5[3] = bVar24;\n          param_5[4] = bVar25;\n          param_5[5] = bVar26;\n          param_5[6] = bVar27;\n          param_5[7] = bVar17;\n        }\n        else {\n          *param_5 = bVar17;\n          param_5[1] = bVar27;\n          param_5[2] = bVar26;\n          param_5[3] = bVar25;\n          param_5[4] = bVar24;\n          param_5[5] = bVar23;\n          param_5[6] = bVar18;\n          param_5[7] = SUB81(dVar4,0);\n        }" (if "if") (parenthesized_expression "((int)param_2[0xc] == 1)" (( "(") (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_2[0xc]" (identifier "param_2") ([ "[") (number_literal "0xc") (] "]"))) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n          *param_5 = SUB81(dVar4,0);\n          param_5[1] = bVar18;\n          param_5[2] = bVar23;\n          param_5[3] = bVar24;\n          param_5[4] = bVar25;\n          param_5[5] = bVar26;\n          param_5[6] = bVar27;\n          param_5[7] = bVar17;\n        }" ({ "{") (expression_statement "*param_5 = SUB81(dVar4,0);" (assignment_expression "*param_5 = SUB81(dVar4,0)" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (= "=") (call_expression "SUB81(dVar4,0)" (identifier "SUB81") (argument_list "(dVar4,0)" (( "(") (identifier "dVar4") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "param_5[1] = bVar18;" (assignment_expression "param_5[1] = bVar18" (subscript_expression "param_5[1]" (identifier "param_5") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "bVar18")) (; ";")) (expression_statement "param_5[2] = bVar23;" (assignment_expression "param_5[2] = bVar23" (subscript_expression "param_5[2]" (identifier "param_5") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "bVar23")) (; ";")) (expression_statement "param_5[3] = bVar24;" (assignment_expression "param_5[3] = bVar24" (subscript_expression "param_5[3]" (identifier "param_5") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "bVar24")) (; ";")) (expression_statement "param_5[4] = bVar25;" (assignment_expression "param_5[4] = bVar25" (subscript_expression "param_5[4]" (identifier "param_5") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "bVar25")) (; ";")) (expression_statement "param_5[5] = bVar26;" (assignment_expression "param_5[5] = bVar26" (subscript_expression "param_5[5]" (identifier "param_5") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "bVar26")) (; ";")) (expression_statement "param_5[6] = bVar27;" (assignment_expression "param_5[6] = bVar27" (subscript_expression "param_5[6]" (identifier "param_5") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "bVar27")) (; ";")) (expression_statement "param_5[7] = bVar17;" (assignment_expression "param_5[7] = bVar17" (subscript_expression "param_5[7]" (identifier "param_5") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "bVar17")) (; ";")) (} "}")) (else_clause "else {\n          *param_5 = bVar17;\n          param_5[1] = bVar27;\n          param_5[2] = bVar26;\n          param_5[3] = bVar25;\n          param_5[4] = bVar24;\n          param_5[5] = bVar23;\n          param_5[6] = bVar18;\n          param_5[7] = SUB81(dVar4,0);\n        }" (else "else") (compound_statement "{\n          *param_5 = bVar17;\n          param_5[1] = bVar27;\n          param_5[2] = bVar26;\n          param_5[3] = bVar25;\n          param_5[4] = bVar24;\n          param_5[5] = bVar23;\n          param_5[6] = bVar18;\n          param_5[7] = SUB81(dVar4,0);\n        }" ({ "{") (expression_statement "*param_5 = bVar17;" (assignment_expression "*param_5 = bVar17" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (= "=") (identifier "bVar17")) (; ";")) (expression_statement "param_5[1] = bVar27;" (assignment_expression "param_5[1] = bVar27" (subscript_expression "param_5[1]" (identifier "param_5") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "bVar27")) (; ";")) (expression_statement "param_5[2] = bVar26;" (assignment_expression "param_5[2] = bVar26" (subscript_expression "param_5[2]" (identifier "param_5") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "bVar26")) (; ";")) (expression_statement "param_5[3] = bVar25;" (assignment_expression "param_5[3] = bVar25" (subscript_expression "param_5[3]" (identifier "param_5") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "bVar25")) (; ";")) (expression_statement "param_5[4] = bVar24;" (assignment_expression "param_5[4] = bVar24" (subscript_expression "param_5[4]" (identifier "param_5") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "bVar24")) (; ";")) (expression_statement "param_5[5] = bVar23;" (assignment_expression "param_5[5] = bVar23" (subscript_expression "param_5[5]" (identifier "param_5") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "bVar23")) (; ";")) (expression_statement "param_5[6] = bVar18;" (assignment_expression "param_5[6] = bVar18" (subscript_expression "param_5[6]" (identifier "param_5") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "bVar18")) (; ";")) (expression_statement "param_5[7] = SUB81(dVar4,0);" (assignment_expression "param_5[7] = SUB81(dVar4,0)" (subscript_expression "param_5[7]" (identifier "param_5") ([ "[") (number_literal "7") (] "]")) (= "=") (call_expression "SUB81(dVar4,0)" (identifier "SUB81") (argument_list "(dVar4,0)" (( "(") (identifier "dVar4") (, ",") (number_literal "0") () ")")))) (; ";")) (} "}")))) (expression_statement "fVar37 = fVar36;" (assignment_expression "fVar37 = fVar36" (identifier "fVar37") (= "=") (identifier "fVar36")) (; ";")) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }" (if "if") (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0)" (( "(") (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44)" (* "*") (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x44)" (( "(") (binary_expression "*(long *)(param_1 + 0x360) + 0x44" (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (number_literal "0x44")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        }" ({ "{") (expression_statement "fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);" (assignment_expression "fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (identifier "fVar37") (= "=") (pointer_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (( "(") (binary_expression "param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48)" (* "*") (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x48)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x48)" (( "(") (binary_expression "*(long *)(param_1 + 0x360) + 0x48" (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (number_literal "0x48")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (} "}"))) (expression_statement "dVar4 = (double)fVar37 * (double)param_2[0xd] + (double)param_2[3];" (assignment_expression "dVar4 = (double)fVar37 * (double)param_2[0xd] + (double)param_2[3]" (identifier "dVar4") (= "=") (binary_expression "(double)fVar37 * (double)param_2[0xd] + (double)param_2[3]" (binary_expression "(double)fVar37 * (double)param_2[0xd]" (cast_expression "(double)fVar37" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "fVar37")) (* "*") (cast_expression "(double)param_2[0xd]" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (subscript_expression "param_2[0xd]" (identifier "param_2") ([ "[") (number_literal "0xd") (] "]")))) (+ "+") (cast_expression "(double)param_2[3]" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]"))))) (; ";")) (expression_statement "bVar17 = (byte)((ulong)dVar4 >> 8);" (assignment_expression "bVar17 = (byte)((ulong)dVar4 >> 8)" (identifier "bVar17") (= "=") (call_expression "(byte)((ulong)dVar4 >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulong)dVar4 >> 8)" (( "(") (binary_expression "(ulong)dVar4 >> 8" (cast_expression "(ulong)dVar4" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "dVar4")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "bVar18 = (byte)((ulong)dVar4 >> 0x10);" (assignment_expression "bVar18 = (byte)((ulong)dVar4 >> 0x10)" (identifier "bVar18") (= "=") (call_expression "(byte)((ulong)dVar4 >> 0x10)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulong)dVar4 >> 0x10)" (( "(") (binary_expression "(ulong)dVar4 >> 0x10" (cast_expression "(ulong)dVar4" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "dVar4")) (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "bVar27 = (byte)((ulong)dVar4 >> 0x18);" (assignment_expression "bVar27 = (byte)((ulong)dVar4 >> 0x18)" (identifier "bVar27") (= "=") (call_expression "(byte)((ulong)dVar4 >> 0x18)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulong)dVar4 >> 0x18)" (( "(") (binary_expression "(ulong)dVar4 >> 0x18" (cast_expression "(ulong)dVar4" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "dVar4")) (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "bVar26 = (byte)((ulong)dVar4 >> 0x20);" (assignment_expression "bVar26 = (byte)((ulong)dVar4 >> 0x20)" (identifier "bVar26") (= "=") (call_expression "(byte)((ulong)dVar4 >> 0x20)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulong)dVar4 >> 0x20)" (( "(") (binary_expression "(ulong)dVar4 >> 0x20" (cast_expression "(ulong)dVar4" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "dVar4")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "bVar25 = (byte)((ulong)dVar4 >> 0x28);" (assignment_expression "bVar25 = (byte)((ulong)dVar4 >> 0x28)" (identifier "bVar25") (= "=") (call_expression "(byte)((ulong)dVar4 >> 0x28)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulong)dVar4 >> 0x28)" (( "(") (binary_expression "(ulong)dVar4 >> 0x28" (cast_expression "(ulong)dVar4" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "dVar4")) (>> ">>") (number_literal "0x28")) () ")")))) (; ";")) (expression_statement "bVar24 = (byte)((ulong)dVar4 >> 0x30);" (assignment_expression "bVar24 = (byte)((ulong)dVar4 >> 0x30)" (identifier "bVar24") (= "=") (call_expression "(byte)((ulong)dVar4 >> 0x30)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulong)dVar4 >> 0x30)" (( "(") (binary_expression "(ulong)dVar4 >> 0x30" (cast_expression "(ulong)dVar4" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "dVar4")) (>> ">>") (number_literal "0x30")) () ")")))) (; ";")) (expression_statement "bVar23 = (byte)((ulong)dVar4 >> 0x38);" (assignment_expression "bVar23 = (byte)((ulong)dVar4 >> 0x38)" (identifier "bVar23") (= "=") (call_expression "(byte)((ulong)dVar4 >> 0x38)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulong)dVar4 >> 0x38)" (( "(") (binary_expression "(ulong)dVar4 >> 0x38" (cast_expression "(ulong)dVar4" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "dVar4")) (>> ">>") (number_literal "0x38")) () ")")))) (; ";")) (if_statement "if ((int)param_2[0xc] == 1) {\n          param_5[8] = SUB81(dVar4,0);\n          param_5[9] = bVar17;\n          param_5[10] = bVar18;\n          param_5[0xb] = bVar27;\n          param_5[0xc] = bVar26;\n          param_5[0xd] = bVar25;\n          param_5[0xe] = bVar24;\n          param_5[0xf] = bVar23;\n        }\n        else {\n          param_5[8] = bVar23;\n          param_5[9] = bVar24;\n          param_5[10] = bVar25;\n          param_5[0xb] = bVar26;\n          param_5[0xc] = bVar27;\n          param_5[0xd] = bVar18;\n          param_5[0xe] = bVar17;\n          param_5[0xf] = SUB81(dVar4,0);\n        }" (if "if") (parenthesized_expression "((int)param_2[0xc] == 1)" (( "(") (binary_expression "(int)param_2[0xc] == 1" (cast_expression "(int)param_2[0xc]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_2[0xc]" (identifier "param_2") ([ "[") (number_literal "0xc") (] "]"))) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n          param_5[8] = SUB81(dVar4,0);\n          param_5[9] = bVar17;\n          param_5[10] = bVar18;\n          param_5[0xb] = bVar27;\n          param_5[0xc] = bVar26;\n          param_5[0xd] = bVar25;\n          param_5[0xe] = bVar24;\n          param_5[0xf] = bVar23;\n        }" ({ "{") (expression_statement "param_5[8] = SUB81(dVar4,0);" (assignment_expression "param_5[8] = SUB81(dVar4,0)" (subscript_expression "param_5[8]" (identifier "param_5") ([ "[") (number_literal "8") (] "]")) (= "=") (call_expression "SUB81(dVar4,0)" (identifier "SUB81") (argument_list "(dVar4,0)" (( "(") (identifier "dVar4") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "param_5[9] = bVar17;" (assignment_expression "param_5[9] = bVar17" (subscript_expression "param_5[9]" (identifier "param_5") ([ "[") (number_literal "9") (] "]")) (= "=") (identifier "bVar17")) (; ";")) (expression_statement "param_5[10] = bVar18;" (assignment_expression "param_5[10] = bVar18" (subscript_expression "param_5[10]" (identifier "param_5") ([ "[") (number_literal "10") (] "]")) (= "=") (identifier "bVar18")) (; ";")) (expression_statement "param_5[0xb] = bVar27;" (assignment_expression "param_5[0xb] = bVar27" (subscript_expression "param_5[0xb]" (identifier "param_5") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "bVar27")) (; ";")) (expression_statement "param_5[0xc] = bVar26;" (assignment_expression "param_5[0xc] = bVar26" (subscript_expression "param_5[0xc]" (identifier "param_5") ([ "[") (number_literal "0xc") (] "]")) (= "=") (identifier "bVar26")) (; ";")) (expression_statement "param_5[0xd] = bVar25;" (assignment_expression "param_5[0xd] = bVar25" (subscript_expression "param_5[0xd]" (identifier "param_5") ([ "[") (number_literal "0xd") (] "]")) (= "=") (identifier "bVar25")) (; ";")) (expression_statement "param_5[0xe] = bVar24;" (assignment_expression "param_5[0xe] = bVar24" (subscript_expression "param_5[0xe]" (identifier "param_5") ([ "[") (number_literal "0xe") (] "]")) (= "=") (identifier "bVar24")) (; ";")) (expression_statement "param_5[0xf] = bVar23;" (assignment_expression "param_5[0xf] = bVar23" (subscript_expression "param_5[0xf]" (identifier "param_5") ([ "[") (number_literal "0xf") (] "]")) (= "=") (identifier "bVar23")) (; ";")) (} "}")) (else_clause "else {\n          param_5[8] = bVar23;\n          param_5[9] = bVar24;\n          param_5[10] = bVar25;\n          param_5[0xb] = bVar26;\n          param_5[0xc] = bVar27;\n          param_5[0xd] = bVar18;\n          param_5[0xe] = bVar17;\n          param_5[0xf] = SUB81(dVar4,0);\n        }" (else "else") (compound_statement "{\n          param_5[8] = bVar23;\n          param_5[9] = bVar24;\n          param_5[10] = bVar25;\n          param_5[0xb] = bVar26;\n          param_5[0xc] = bVar27;\n          param_5[0xd] = bVar18;\n          param_5[0xe] = bVar17;\n          param_5[0xf] = SUB81(dVar4,0);\n        }" ({ "{") (expression_statement "param_5[8] = bVar23;" (assignment_expression "param_5[8] = bVar23" (subscript_expression "param_5[8]" (identifier "param_5") ([ "[") (number_literal "8") (] "]")) (= "=") (identifier "bVar23")) (; ";")) (expression_statement "param_5[9] = bVar24;" (assignment_expression "param_5[9] = bVar24" (subscript_expression "param_5[9]" (identifier "param_5") ([ "[") (number_literal "9") (] "]")) (= "=") (identifier "bVar24")) (; ";")) (expression_statement "param_5[10] = bVar25;" (assignment_expression "param_5[10] = bVar25" (subscript_expression "param_5[10]" (identifier "param_5") ([ "[") (number_literal "10") (] "]")) (= "=") (identifier "bVar25")) (; ";")) (expression_statement "param_5[0xb] = bVar26;" (assignment_expression "param_5[0xb] = bVar26" (subscript_expression "param_5[0xb]" (identifier "param_5") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "bVar26")) (; ";")) (expression_statement "param_5[0xc] = bVar27;" (assignment_expression "param_5[0xc] = bVar27" (subscript_expression "param_5[0xc]" (identifier "param_5") ([ "[") (number_literal "0xc") (] "]")) (= "=") (identifier "bVar27")) (; ";")) (expression_statement "param_5[0xd] = bVar18;" (assignment_expression "param_5[0xd] = bVar18" (subscript_expression "param_5[0xd]" (identifier "param_5") ([ "[") (number_literal "0xd") (] "]")) (= "=") (identifier "bVar18")) (; ";")) (expression_statement "param_5[0xe] = bVar17;" (assignment_expression "param_5[0xe] = bVar17" (subscript_expression "param_5[0xe]" (identifier "param_5") ([ "[") (number_literal "0xe") (] "]")) (= "=") (identifier "bVar17")) (; ";")) (expression_statement "param_5[0xf] = SUB81(dVar4,0);" (assignment_expression "param_5[0xf] = SUB81(dVar4,0)" (subscript_expression "param_5[0xf]" (identifier "param_5") ([ "[") (number_literal "0xf") (] "]")) (= "=") (call_expression "SUB81(dVar4,0)" (identifier "SUB81") (argument_list "(dVar4,0)" (( "(") (identifier "dVar4") (, ",") (number_literal "0") () ")")))) (; ";")) (} "}")))) (expression_statement "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4" (identifier "param_4") (= "=") (binary_expression "param_4 + *(long *)(param_1 + 0x340) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" (* "*") (cast_expression "(long *)(param_1 + 0x340)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x340)" (( "(") (binary_expression "param_1 + 0x340" (identifier "param_1") (+ "+") (number_literal "0x340")) () ")")))) (* "*") (number_literal "4")))) (; ";")) (expression_statement "param_5 = param_5 + param_2[6] + 0x10;" (assignment_expression "param_5 = param_5 + param_2[6] + 0x10" (identifier "param_5") (= "=") (binary_expression "param_5 + param_2[6] + 0x10" (binary_expression "param_5 + param_2[6]" (identifier "param_5") (+ "+") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]"))) (+ "+") (number_literal "0x10"))) (; ";")) (expression_statement "uVar34 = uVar34 + 1;" (assignment_expression "uVar34 = uVar34 + 1" (identifier "uVar34") (= "=") (binary_expression "uVar34 + 1" (identifier "uVar34") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar34 != param_3)" (( "(") (binary_expression "uVar34 != param_3" (identifier "uVar34") (!= "!=") (identifier "param_3")) () ")")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}")))) (if_statement "if (0x40 < uVar34) {\n    uVar34 = 0;\n  }" (if "if") (parenthesized_expression "(0x40 < uVar34)" (( "(") (binary_expression "0x40 < uVar34" (number_literal "0x40") (< "<") (identifier "uVar34")) () ")")) (compound_statement "{\n    uVar34 = 0;\n  }" ({ "{") (expression_statement "uVar34 = 0;" (assignment_expression "uVar34 = 0" (identifier "uVar34") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "uVar33 = (2L << ((char)uVar34 - 1U & 0x3f)) - 1;" (assignment_expression "uVar33 = (2L << ((char)uVar34 - 1U & 0x3f)) - 1" (identifier "uVar33") (= "=") (binary_expression "(2L << ((char)uVar34 - 1U & 0x3f)) - 1" (parenthesized_expression "(2L << ((char)uVar34 - 1U & 0x3f))" (( "(") (binary_expression "2L << ((char)uVar34 - 1U & 0x3f)" (number_literal "2L") (<< "<<") (parenthesized_expression "((char)uVar34 - 1U & 0x3f)" (( "(") (binary_expression "(char)uVar34 - 1U & 0x3f" (binary_expression "(char)uVar34 - 1U" (cast_expression "(char)uVar34" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar34")) (- "-") (number_literal "1U")) (& "&") (number_literal "0x3f")) () ")"))) () ")")) (- "-") (number_literal "1"))) (; ";")) (labeled_statement "LAB_002734e9:\n  if (0 < (long)param_3) {\n    uVar34 = 0;\n    do {\n      lVar32 = *(long *)(param_1 + 0x360);\n      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n      if (NAN(fVar36)) {\n        uVar31 = 0;\n      }\n      else {\n        uVar31 = 0;\n        if (0.0 < fVar36) {\n          dVar5 = ((double)fVar36 * (double)uVar33) / dVar4;\n          uVar31 = 0xffffffffffffffff;\n          if (dVar5 < dVar9) {\n            dVar5 = dVar5 + dVar7;\n            if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }\n          }\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      fVar36 = _DAT_003fa400;\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) == 0) {\nLAB_002745f5:\n        dVar5 = ((double)fVar36 * (double)uVar33) / DAT_003f95f8;\n        uVar31 = 0xffffffffffffffff;\n        if (dVar5 < DAT_003fa3a0) {\n          dVar5 = dVar5 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar5) {\n            uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar31 = (ulong)dVar5;\n          }\n        }\n      }\n      else {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          uVar31 = 0;\n        }\n        else {\n          uVar31 = 0;\n          if (0.0 < fVar36) goto LAB_002745f5;\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n      param_5 = param_5 + param_2[6];\n      uVar34 = uVar34 + 1;\n    } while (param_3 != uVar34);\n  }" (statement_identifier "LAB_002734e9") (: ":") (if_statement "if (0 < (long)param_3) {\n    uVar34 = 0;\n    do {\n      lVar32 = *(long *)(param_1 + 0x360);\n      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n      if (NAN(fVar36)) {\n        uVar31 = 0;\n      }\n      else {\n        uVar31 = 0;\n        if (0.0 < fVar36) {\n          dVar5 = ((double)fVar36 * (double)uVar33) / dVar4;\n          uVar31 = 0xffffffffffffffff;\n          if (dVar5 < dVar9) {\n            dVar5 = dVar5 + dVar7;\n            if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }\n          }\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      fVar36 = _DAT_003fa400;\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) == 0) {\nLAB_002745f5:\n        dVar5 = ((double)fVar36 * (double)uVar33) / DAT_003f95f8;\n        uVar31 = 0xffffffffffffffff;\n        if (dVar5 < DAT_003fa3a0) {\n          dVar5 = dVar5 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar5) {\n            uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar31 = (ulong)dVar5;\n          }\n        }\n      }\n      else {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          uVar31 = 0;\n        }\n        else {\n          uVar31 = 0;\n          if (0.0 < fVar36) goto LAB_002745f5;\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n      param_5 = param_5 + param_2[6];\n      uVar34 = uVar34 + 1;\n    } while (param_3 != uVar34);\n  }" (if "if") (parenthesized_expression "(0 < (long)param_3)" (( "(") (binary_expression "0 < (long)param_3" (number_literal "0") (< "<") (cast_expression "(long)param_3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_3"))) () ")")) (compound_statement "{\n    uVar34 = 0;\n    do {\n      lVar32 = *(long *)(param_1 + 0x360);\n      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n      if (NAN(fVar36)) {\n        uVar31 = 0;\n      }\n      else {\n        uVar31 = 0;\n        if (0.0 < fVar36) {\n          dVar5 = ((double)fVar36 * (double)uVar33) / dVar4;\n          uVar31 = 0xffffffffffffffff;\n          if (dVar5 < dVar9) {\n            dVar5 = dVar5 + dVar7;\n            if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }\n          }\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      fVar36 = _DAT_003fa400;\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) == 0) {\nLAB_002745f5:\n        dVar5 = ((double)fVar36 * (double)uVar33) / DAT_003f95f8;\n        uVar31 = 0xffffffffffffffff;\n        if (dVar5 < DAT_003fa3a0) {\n          dVar5 = dVar5 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar5) {\n            uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar31 = (ulong)dVar5;\n          }\n        }\n      }\n      else {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          uVar31 = 0;\n        }\n        else {\n          uVar31 = 0;\n          if (0.0 < fVar36) goto LAB_002745f5;\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n      param_5 = param_5 + param_2[6];\n      uVar34 = uVar34 + 1;\n    } while (param_3 != uVar34);\n  }" ({ "{") (expression_statement "uVar34 = 0;" (assignment_expression "uVar34 = 0" (identifier "uVar34") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      lVar32 = *(long *)(param_1 + 0x360);\n      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n      if (NAN(fVar36)) {\n        uVar31 = 0;\n      }\n      else {\n        uVar31 = 0;\n        if (0.0 < fVar36) {\n          dVar5 = ((double)fVar36 * (double)uVar33) / dVar4;\n          uVar31 = 0xffffffffffffffff;\n          if (dVar5 < dVar9) {\n            dVar5 = dVar5 + dVar7;\n            if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }\n          }\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      fVar36 = _DAT_003fa400;\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) == 0) {\nLAB_002745f5:\n        dVar5 = ((double)fVar36 * (double)uVar33) / DAT_003f95f8;\n        uVar31 = 0xffffffffffffffff;\n        if (dVar5 < DAT_003fa3a0) {\n          dVar5 = dVar5 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar5) {\n            uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar31 = (ulong)dVar5;\n          }\n        }\n      }\n      else {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          uVar31 = 0;\n        }\n        else {\n          uVar31 = 0;\n          if (0.0 < fVar36) goto LAB_002745f5;\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n      param_5 = param_5 + param_2[6];\n      uVar34 = uVar34 + 1;\n    } while (param_3 != uVar34);" (do "do") (compound_statement "{\n      lVar32 = *(long *)(param_1 + 0x360);\n      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);\n      if (NAN(fVar36)) {\n        uVar31 = 0;\n      }\n      else {\n        uVar31 = 0;\n        if (0.0 < fVar36) {\n          dVar5 = ((double)fVar36 * (double)uVar33) / dVar4;\n          uVar31 = 0xffffffffffffffff;\n          if (dVar5 < dVar9) {\n            dVar5 = dVar5 + dVar7;\n            if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }\n          }\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      fVar36 = _DAT_003fa400;\n      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) == 0) {\nLAB_002745f5:\n        dVar5 = ((double)fVar36 * (double)uVar33) / DAT_003f95f8;\n        uVar31 = 0xffffffffffffffff;\n        if (dVar5 < DAT_003fa3a0) {\n          dVar5 = dVar5 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar5) {\n            uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar31 = (ulong)dVar5;\n          }\n        }\n      }\n      else {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          uVar31 = 0;\n        }\n        else {\n          uVar31 = 0;\n          if (0.0 < fVar36) goto LAB_002745f5;\n        }\n      }\n      if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }\n      uVar29 = *param_2;\n      if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }\n      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;\n      param_5 = param_5 + param_2[6];\n      uVar34 = uVar34 + 1;\n    }" ({ "{") (expression_statement "lVar32 = *(long *)(param_1 + 0x360);" (assignment_expression "lVar32 = *(long *)(param_1 + 0x360)" (identifier "lVar32") (= "=") (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")"))))) (; ";")) (expression_statement "fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);" (assignment_expression "fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (identifier "fVar36") (= "=") (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +\n               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +\n               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (binary_expression "fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (identifier "fVar14") (* "*") (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x18) * 4)" (( "(") (binary_expression "param_4 + *(long *)(lVar32 + 0x18) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(lVar32 + 0x18) * 4" (pointer_expression "*(long *)(lVar32 + 0x18)" (* "*") (cast_expression "(long *)(lVar32 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar32 + 0x18)" (( "(") (binary_expression "lVar32 + 0x18" (identifier "lVar32") (+ "+") (number_literal "0x18")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) (+ "+") (binary_expression "fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (identifier "fVar13") (* "*") (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 8) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(lVar32 + 8) * 4)" (( "(") (binary_expression "param_4 + *(long *)(lVar32 + 8) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(lVar32 + 8) * 4" (pointer_expression "*(long *)(lVar32 + 8)" (* "*") (cast_expression "(long *)(lVar32 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar32 + 8)" (( "(") (binary_expression "lVar32 + 8" (identifier "lVar32") (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "4"))) () ")")))))) (+ "+") (binary_expression "fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (identifier "fVar15") (* "*") (pointer_expression "*(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(lVar32 + 0x28) * 4)" (( "(") (binary_expression "param_4 + *(long *)(lVar32 + 0x28) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(lVar32 + 0x28) * 4" (pointer_expression "*(long *)(lVar32 + 0x28)" (* "*") (cast_expression "(long *)(lVar32 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar32 + 0x28)" (( "(") (binary_expression "lVar32 + 0x28" (identifier "lVar32") (+ "+") (number_literal "0x28")) () ")")))) (* "*") (number_literal "4"))) () ")"))))))) (; ";")) (if_statement "if (NAN(fVar36)) {\n        uVar31 = 0;\n      }\n      else {\n        uVar31 = 0;\n        if (0.0 < fVar36) {\n          dVar5 = ((double)fVar36 * (double)uVar33) / dVar4;\n          uVar31 = 0xffffffffffffffff;\n          if (dVar5 < dVar9) {\n            dVar5 = dVar5 + dVar7;\n            if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }\n          }\n        }\n      }" (if "if") (parenthesized_expression "(NAN(fVar36))" (( "(") (call_expression "NAN(fVar36)" (identifier "NAN") (argument_list "(fVar36)" (( "(") (identifier "fVar36") () ")"))) () ")")) (compound_statement "{\n        uVar31 = 0;\n      }" ({ "{") (expression_statement "uVar31 = 0;" (assignment_expression "uVar31 = 0" (identifier "uVar31") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n        uVar31 = 0;\n        if (0.0 < fVar36) {\n          dVar5 = ((double)fVar36 * (double)uVar33) / dVar4;\n          uVar31 = 0xffffffffffffffff;\n          if (dVar5 < dVar9) {\n            dVar5 = dVar5 + dVar7;\n            if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }\n          }\n        }\n      }" (else "else") (compound_statement "{\n        uVar31 = 0;\n        if (0.0 < fVar36) {\n          dVar5 = ((double)fVar36 * (double)uVar33) / dVar4;\n          uVar31 = 0xffffffffffffffff;\n          if (dVar5 < dVar9) {\n            dVar5 = dVar5 + dVar7;\n            if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }\n          }\n        }\n      }" ({ "{") (expression_statement "uVar31 = 0;" (assignment_expression "uVar31 = 0" (identifier "uVar31") (= "=") (number_literal "0")) (; ";")) (if_statement "if (0.0 < fVar36) {\n          dVar5 = ((double)fVar36 * (double)uVar33) / dVar4;\n          uVar31 = 0xffffffffffffffff;\n          if (dVar5 < dVar9) {\n            dVar5 = dVar5 + dVar7;\n            if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }\n          }\n        }" (if "if") (parenthesized_expression "(0.0 < fVar36)" (( "(") (binary_expression "0.0 < fVar36" (number_literal "0.0") (< "<") (identifier "fVar36")) () ")")) (compound_statement "{\n          dVar5 = ((double)fVar36 * (double)uVar33) / dVar4;\n          uVar31 = 0xffffffffffffffff;\n          if (dVar5 < dVar9) {\n            dVar5 = dVar5 + dVar7;\n            if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }\n          }\n        }" ({ "{") (expression_statement "dVar5 = ((double)fVar36 * (double)uVar33) / dVar4;" (assignment_expression "dVar5 = ((double)fVar36 * (double)uVar33) / dVar4" (identifier "dVar5") (= "=") (binary_expression "((double)fVar36 * (double)uVar33) / dVar4" (parenthesized_expression "((double)fVar36 * (double)uVar33)" (( "(") (binary_expression "(double)fVar36 * (double)uVar33" (cast_expression "(double)fVar36" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "fVar36")) (* "*") (cast_expression "(double)uVar33" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "uVar33"))) () ")")) (/ "/") (identifier "dVar4"))) (; ";")) (expression_statement "uVar31 = 0xffffffffffffffff;" (assignment_expression "uVar31 = 0xffffffffffffffff" (identifier "uVar31") (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (if_statement "if (dVar5 < dVar9) {\n            dVar5 = dVar5 + dVar7;\n            if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }\n          }" (if "if") (parenthesized_expression "(dVar5 < dVar9)" (( "(") (binary_expression "dVar5 < dVar9" (identifier "dVar5") (< "<") (identifier "dVar9")) () ")")) (compound_statement "{\n            dVar5 = dVar5 + dVar7;\n            if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }\n          }" ({ "{") (expression_statement "dVar5 = dVar5 + dVar7;" (assignment_expression "dVar5 = dVar5 + dVar7" (identifier "dVar5") (= "=") (binary_expression "dVar5 + dVar7" (identifier "dVar5") (+ "+") (identifier "dVar7"))) (; ";")) (if_statement "if (dVar8 <= dVar5) {\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }\n            else {\n              uVar31 = (ulong)dVar5;\n            }" (if "if") (parenthesized_expression "(dVar8 <= dVar5)" (( "(") (binary_expression "dVar8 <= dVar5" (identifier "dVar8") (<= "<=") (identifier "dVar5")) () ")")) (compound_statement "{\n              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;\n            }" ({ "{") (expression_statement "uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;" (assignment_expression "uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000" (identifier "uVar31") (= "=") (binary_expression "(long)(dVar5 - dVar8) ^ 0x8000000000000000" (cast_expression "(long)(dVar5 - dVar8)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(dVar5 - dVar8)" (( "(") (binary_expression "dVar5 - dVar8" (identifier "dVar5") (- "-") (identifier "dVar8")) () ")"))) (^ "^") (number_literal "0x8000000000000000"))) (; ";")) (} "}")) (else_clause "else {\n              uVar31 = (ulong)dVar5;\n            }" (else "else") (compound_statement "{\n              uVar31 = (ulong)dVar5;\n            }" ({ "{") (expression_statement "uVar31 = (ulong)dVar5;" (assignment_expression "uVar31 = (ulong)dVar5" (identifier "uVar31") (= "=") (cast_expression "(ulong)dVar5" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "dVar5"))) (; ";")) (} "}")))) (} "}"))) (} "}"))) (} "}")))) (if_statement "if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }" (if "if") (parenthesized_expression "(param_2[0xf] == 0)" (( "(") (binary_expression "param_2[0xf] == 0" (subscript_expression "param_2[0xf]" (identifier "param_2") ([ "[") (number_literal "0xf") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        param_2[0xf] = 8;\n      }" ({ "{") (expression_statement "param_2[0xf] = 8;" (assignment_expression "param_2[0xf] = 8" (subscript_expression "param_2[0xf]" (identifier "param_2") ([ "[") (number_literal "0xf") (] "]")) (= "=") (number_literal "8")) (; ";")) (} "}"))) (expression_statement "uVar29 = *param_2;" (assignment_expression "uVar29 = *param_2" (identifier "uVar29") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (if_statement "if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }" (if "if") (parenthesized_expression "(0 < (long)uVar29)" (( "(") (binary_expression "0 < (long)uVar29" (number_literal "0") (< "<") (cast_expression "(long)uVar29" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "uVar29"))) () ")")) (compound_statement "{\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }" ({ "{") (expression_statement "uVar22 = param_2[0xf];" (assignment_expression "uVar22 = param_2[0xf]" (identifier "uVar22") (= "=") (subscript_expression "param_2[0xf]" (identifier "param_2") ([ "[") (number_literal "0xf") (] "]"))) (; ";")) (do_statement "do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);" (do "do") (compound_statement "{\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        }" ({ "{") (expression_statement "uVar21 = uVar29;" (assignment_expression "uVar21 = uVar29" (identifier "uVar21") (= "=") (identifier "uVar29")) (; ";")) (if_statement "if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }" (if "if") (parenthesized_expression "(uVar22 <= uVar29)" (( "(") (binary_expression "uVar22 <= uVar29" (identifier "uVar22") (<= "<=") (identifier "uVar29")) () ")")) (compound_statement "{\n            uVar21 = uVar22;\n          }" ({ "{") (expression_statement "uVar21 = uVar22;" (assignment_expression "uVar21 = uVar22" (identifier "uVar21") (= "=") (identifier "uVar22")) (; ";")) (} "}"))) (expression_statement "uVar30 = uVar29 - uVar21;" (assignment_expression "uVar30 = uVar29 - uVar21" (identifier "uVar30") (= "=") (binary_expression "uVar29 - uVar21" (identifier "uVar29") (- "-") (identifier "uVar21"))) (; ";")) (expression_statement "uVar29 = 0;" (assignment_expression "uVar29 = 0" (identifier "uVar29") (= "=") (number_literal "0")) (; ";")) (if_statement "if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }" (if "if") (parenthesized_expression "(-1 < (long)uVar30)" (( "(") (binary_expression "-1 < (long)uVar30" (number_literal "-1") (< "<") (cast_expression "(long)uVar30" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "uVar30"))) () ")")) (compound_statement "{\n            uVar29 = uVar30;\n          }" ({ "{") (expression_statement "uVar29 = uVar30;" (assignment_expression "uVar29 = uVar30" (identifier "uVar29") (= "=") (identifier "uVar30")) (; ";")) (} "}"))) (if_statement "if (uVar22 == 8) {\n            *param_5 = 0;\n          }" (if "if") (parenthesized_expression "(uVar22 == 8)" (( "(") (binary_expression "uVar22 == 8" (identifier "uVar22") (== "==") (number_literal "8")) () ")")) (compound_statement "{\n            *param_5 = 0;\n          }" ({ "{") (expression_statement "*param_5 = 0;" (assignment_expression "*param_5 = 0" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "uVar22 = uVar22 - uVar21;" (assignment_expression "uVar22 = uVar22 - uVar21" (identifier "uVar22") (= "=") (binary_expression "uVar22 - uVar21" (identifier "uVar22") (- "-") (identifier "uVar21"))) (; ";")) (expression_statement "*param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));" (assignment_expression "*param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f))" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (= "=") (binary_expression "*param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f))" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (| "|") (call_expression "(byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f))" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f))" (( "(") (binary_expression "(~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f)" (parenthesized_expression "(~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f))" (( "(") (binary_expression "~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)" (unary_expression "~(-1L << ((byte)uVar21 & 0x3f))" (~ "~") (parenthesized_expression "(-1L << ((byte)uVar21 & 0x3f))" (( "(") (binary_expression "-1L << ((byte)uVar21 & 0x3f)" (number_literal "-1L") (<< "<<") (parenthesized_expression "((byte)uVar21 & 0x3f)" (( "(") (binary_expression "(byte)uVar21 & 0x3f" (cast_expression "(byte)uVar21" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar21")) (& "&") (number_literal "0x3f")) () ")"))) () ")"))) (& "&") (binary_expression "uVar31 >> ((byte)uVar29 & 0x3f)" (identifier "uVar31") (>> ">>") (parenthesized_expression "((byte)uVar29 & 0x3f)" (( "(") (binary_expression "(byte)uVar29 & 0x3f" (cast_expression "(byte)uVar29" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar29")) (& "&") (number_literal "0x3f")) () ")")))) () ")")) (<< "<<") (parenthesized_expression "((byte)uVar22 & 0x3f)" (( "(") (binary_expression "(byte)uVar22 & 0x3f" (cast_expression "(byte)uVar22" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar22")) (& "&") (number_literal "0x3f")) () ")"))) () ")"))))) (; ";")) (if_statement "if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }" (if "if") (parenthesized_expression "(uVar22 == 0)" (( "(") (binary_expression "uVar22 == 0" (identifier "uVar22") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }" ({ "{") (expression_statement "param_5 = param_5 + 1;" (assignment_expression "param_5 = param_5 + 1" (identifier "param_5") (= "=") (binary_expression "param_5 + 1" (identifier "param_5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar22 = 8;" (assignment_expression "uVar22 = 8" (identifier "uVar22") (= "=") (number_literal "8")) (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "(0 < (long)uVar30)" (( "(") (binary_expression "0 < (long)uVar30" (number_literal "0") (< "<") (cast_expression "(long)uVar30" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "uVar30"))) () ")")) (; ";")) (expression_statement "param_2[0xf] = uVar22;" (assignment_expression "param_2[0xf] = uVar22" (subscript_expression "param_2[0xf]" (identifier "param_2") ([ "[") (number_literal "0xf") (] "]")) (= "=") (identifier "uVar22")) (; ";")) (} "}"))) (expression_statement "fVar36 = _DAT_003fa400;" (assignment_expression "fVar36 = _DAT_003fa400" (identifier "fVar36") (= "=") (identifier "_DAT_003fa400")) (; ";")) (if_statement "if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) == 0) {\nLAB_002745f5:\n        dVar5 = ((double)fVar36 * (double)uVar33) / DAT_003f95f8;\n        uVar31 = 0xffffffffffffffff;\n        if (dVar5 < DAT_003fa3a0) {\n          dVar5 = dVar5 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar5) {\n            uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar31 = (ulong)dVar5;\n          }\n        }\n      }\n      else {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          uVar31 = 0;\n        }\n        else {\n          uVar31 = 0;\n          if (0.0 < fVar36) goto LAB_002745f5;\n        }\n      }" (if "if") (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0x360) + 0x44) == 0)" (( "(") (binary_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44) == 0" (pointer_expression "*(int *)(*(long *)(param_1 + 0x360) + 0x44)" (* "*") (cast_expression "(int *)(*(long *)(param_1 + 0x360) + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x44)" (( "(") (binary_expression "*(long *)(param_1 + 0x360) + 0x44" (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (number_literal "0x44")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_002745f5:\n        dVar5 = ((double)fVar36 * (double)uVar33) / DAT_003f95f8;\n        uVar31 = 0xffffffffffffffff;\n        if (dVar5 < DAT_003fa3a0) {\n          dVar5 = dVar5 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar5) {\n            uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar31 = (ulong)dVar5;\n          }\n        }\n      }" ({ "{") (labeled_statement "LAB_002745f5:\n        dVar5 = ((double)fVar36 * (double)uVar33) / DAT_003f95f8;" (statement_identifier "LAB_002745f5") (: ":") (expression_statement "dVar5 = ((double)fVar36 * (double)uVar33) / DAT_003f95f8;" (assignment_expression "dVar5 = ((double)fVar36 * (double)uVar33) / DAT_003f95f8" (identifier "dVar5") (= "=") (binary_expression "((double)fVar36 * (double)uVar33) / DAT_003f95f8" (parenthesized_expression "((double)fVar36 * (double)uVar33)" (( "(") (binary_expression "(double)fVar36 * (double)uVar33" (cast_expression "(double)fVar36" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "fVar36")) (* "*") (cast_expression "(double)uVar33" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "uVar33"))) () ")")) (/ "/") (identifier "DAT_003f95f8"))) (; ";"))) (expression_statement "uVar31 = 0xffffffffffffffff;" (assignment_expression "uVar31 = 0xffffffffffffffff" (identifier "uVar31") (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (if_statement "if (dVar5 < DAT_003fa3a0) {\n          dVar5 = dVar5 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar5) {\n            uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar31 = (ulong)dVar5;\n          }\n        }" (if "if") (parenthesized_expression "(dVar5 < DAT_003fa3a0)" (( "(") (binary_expression "dVar5 < DAT_003fa3a0" (identifier "dVar5") (< "<") (identifier "DAT_003fa3a0")) () ")")) (compound_statement "{\n          dVar5 = dVar5 + DAT_003f9c28;\n          if (DAT_003f9c40 <= dVar5) {\n            uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar31 = (ulong)dVar5;\n          }\n        }" ({ "{") (expression_statement "dVar5 = dVar5 + DAT_003f9c28;" (assignment_expression "dVar5 = dVar5 + DAT_003f9c28" (identifier "dVar5") (= "=") (binary_expression "dVar5 + DAT_003f9c28" (identifier "dVar5") (+ "+") (identifier "DAT_003f9c28"))) (; ";")) (if_statement "if (DAT_003f9c40 <= dVar5) {\n            uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;\n          }\n          else {\n            uVar31 = (ulong)dVar5;\n          }" (if "if") (parenthesized_expression "(DAT_003f9c40 <= dVar5)" (( "(") (binary_expression "DAT_003f9c40 <= dVar5" (identifier "DAT_003f9c40") (<= "<=") (identifier "dVar5")) () ")")) (compound_statement "{\n            uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;\n          }" ({ "{") (expression_statement "uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;" (assignment_expression "uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000" (identifier "uVar31") (= "=") (binary_expression "(long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000" (cast_expression "(long)(dVar5 - DAT_003f9c40)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(dVar5 - DAT_003f9c40)" (( "(") (binary_expression "dVar5 - DAT_003f9c40" (identifier "dVar5") (- "-") (identifier "DAT_003f9c40")) () ")"))) (^ "^") (number_literal "0x8000000000000000"))) (; ";")) (} "}")) (else_clause "else {\n            uVar31 = (ulong)dVar5;\n          }" (else "else") (compound_statement "{\n            uVar31 = (ulong)dVar5;\n          }" ({ "{") (expression_statement "uVar31 = (ulong)dVar5;" (assignment_expression "uVar31 = (ulong)dVar5" (identifier "uVar31") (= "=") (cast_expression "(ulong)dVar5" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "dVar5"))) (; ";")) (} "}")))) (} "}"))) (} "}")) (else_clause "else {\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          uVar31 = 0;\n        }\n        else {\n          uVar31 = 0;\n          if (0.0 < fVar36) goto LAB_002745f5;\n        }\n      }" (else "else") (compound_statement "{\n        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);\n        if (NAN(fVar36)) {\n          uVar31 = 0;\n        }\n        else {\n          uVar31 = 0;\n          if (0.0 < fVar36) goto LAB_002745f5;\n        }\n      }" ({ "{") (expression_statement "fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);" (assignment_expression "fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (identifier "fVar36") (= "=") (pointer_expression "*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (* "*") (cast_expression "(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4)" (( "(") (binary_expression "param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4" (pointer_expression "*(long *)(*(long *)(param_1 + 0x360) + 0x48)" (* "*") (cast_expression "(long *)(*(long *)(param_1 + 0x360) + 0x48)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x360) + 0x48)" (( "(") (binary_expression "*(long *)(param_1 + 0x360) + 0x48" (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")")))) (+ "+") (number_literal "0x48")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (if_statement "if (NAN(fVar36)) {\n          uVar31 = 0;\n        }\n        else {\n          uVar31 = 0;\n          if (0.0 < fVar36) goto LAB_002745f5;\n        }" (if "if") (parenthesized_expression "(NAN(fVar36))" (( "(") (call_expression "NAN(fVar36)" (identifier "NAN") (argument_list "(fVar36)" (( "(") (identifier "fVar36") () ")"))) () ")")) (compound_statement "{\n          uVar31 = 0;\n        }" ({ "{") (expression_statement "uVar31 = 0;" (assignment_expression "uVar31 = 0" (identifier "uVar31") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n          uVar31 = 0;\n          if (0.0 < fVar36) goto LAB_002745f5;\n        }" (else "else") (compound_statement "{\n          uVar31 = 0;\n          if (0.0 < fVar36) goto LAB_002745f5;\n        }" ({ "{") (expression_statement "uVar31 = 0;" (assignment_expression "uVar31 = 0" (identifier "uVar31") (= "=") (number_literal "0")) (; ";")) (if_statement "if (0.0 < fVar36) goto LAB_002745f5;" (if "if") (parenthesized_expression "(0.0 < fVar36)" (( "(") (binary_expression "0.0 < fVar36" (number_literal "0.0") (< "<") (identifier "fVar36")) () ")")) (goto_statement "goto LAB_002745f5;" (goto "goto") (statement_identifier "LAB_002745f5") (; ";"))) (} "}")))) (} "}")))) (if_statement "if (param_2[0xf] == 0) {\n        param_2[0xf] = 8;\n      }" (if "if") (parenthesized_expression "(param_2[0xf] == 0)" (( "(") (binary_expression "param_2[0xf] == 0" (subscript_expression "param_2[0xf]" (identifier "param_2") ([ "[") (number_literal "0xf") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        param_2[0xf] = 8;\n      }" ({ "{") (expression_statement "param_2[0xf] = 8;" (assignment_expression "param_2[0xf] = 8" (subscript_expression "param_2[0xf]" (identifier "param_2") ([ "[") (number_literal "0xf") (] "]")) (= "=") (number_literal "8")) (; ";")) (} "}"))) (expression_statement "uVar29 = *param_2;" (assignment_expression "uVar29 = *param_2" (identifier "uVar29") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (if_statement "if (0 < (long)uVar29) {\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }" (if "if") (parenthesized_expression "(0 < (long)uVar29)" (( "(") (binary_expression "0 < (long)uVar29" (number_literal "0") (< "<") (cast_expression "(long)uVar29" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "uVar29"))) () ")")) (compound_statement "{\n        uVar22 = param_2[0xf];\n        do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);\n        param_2[0xf] = uVar22;\n      }" ({ "{") (expression_statement "uVar22 = param_2[0xf];" (assignment_expression "uVar22 = param_2[0xf]" (identifier "uVar22") (= "=") (subscript_expression "param_2[0xf]" (identifier "param_2") ([ "[") (number_literal "0xf") (] "]"))) (; ";")) (do_statement "do {\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        } while (0 < (long)uVar30);" (do "do") (compound_statement "{\n          uVar21 = uVar29;\n          if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }\n          uVar30 = uVar29 - uVar21;\n          uVar29 = 0;\n          if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }\n          if (uVar22 == 8) {\n            *param_5 = 0;\n          }\n          uVar22 = uVar22 - uVar21;\n          *param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));\n          if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }\n        }" ({ "{") (expression_statement "uVar21 = uVar29;" (assignment_expression "uVar21 = uVar29" (identifier "uVar21") (= "=") (identifier "uVar29")) (; ";")) (if_statement "if (uVar22 <= uVar29) {\n            uVar21 = uVar22;\n          }" (if "if") (parenthesized_expression "(uVar22 <= uVar29)" (( "(") (binary_expression "uVar22 <= uVar29" (identifier "uVar22") (<= "<=") (identifier "uVar29")) () ")")) (compound_statement "{\n            uVar21 = uVar22;\n          }" ({ "{") (expression_statement "uVar21 = uVar22;" (assignment_expression "uVar21 = uVar22" (identifier "uVar21") (= "=") (identifier "uVar22")) (; ";")) (} "}"))) (expression_statement "uVar30 = uVar29 - uVar21;" (assignment_expression "uVar30 = uVar29 - uVar21" (identifier "uVar30") (= "=") (binary_expression "uVar29 - uVar21" (identifier "uVar29") (- "-") (identifier "uVar21"))) (; ";")) (expression_statement "uVar29 = 0;" (assignment_expression "uVar29 = 0" (identifier "uVar29") (= "=") (number_literal "0")) (; ";")) (if_statement "if (-1 < (long)uVar30) {\n            uVar29 = uVar30;\n          }" (if "if") (parenthesized_expression "(-1 < (long)uVar30)" (( "(") (binary_expression "-1 < (long)uVar30" (number_literal "-1") (< "<") (cast_expression "(long)uVar30" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "uVar30"))) () ")")) (compound_statement "{\n            uVar29 = uVar30;\n          }" ({ "{") (expression_statement "uVar29 = uVar30;" (assignment_expression "uVar29 = uVar30" (identifier "uVar29") (= "=") (identifier "uVar30")) (; ";")) (} "}"))) (if_statement "if (uVar22 == 8) {\n            *param_5 = 0;\n          }" (if "if") (parenthesized_expression "(uVar22 == 8)" (( "(") (binary_expression "uVar22 == 8" (identifier "uVar22") (== "==") (number_literal "8")) () ")")) (compound_statement "{\n            *param_5 = 0;\n          }" ({ "{") (expression_statement "*param_5 = 0;" (assignment_expression "*param_5 = 0" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "uVar22 = uVar22 - uVar21;" (assignment_expression "uVar22 = uVar22 - uVar21" (identifier "uVar22") (= "=") (binary_expression "uVar22 - uVar21" (identifier "uVar22") (- "-") (identifier "uVar21"))) (; ";")) (expression_statement "*param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f));" (assignment_expression "*param_5 = *param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f))" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (= "=") (binary_expression "*param_5 |\n                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f))" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (| "|") (call_expression "(byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f))" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f))" (( "(") (binary_expression "(~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<\n                           ((byte)uVar22 & 0x3f)" (parenthesized_expression "(~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f))" (( "(") (binary_expression "~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)" (unary_expression "~(-1L << ((byte)uVar21 & 0x3f))" (~ "~") (parenthesized_expression "(-1L << ((byte)uVar21 & 0x3f))" (( "(") (binary_expression "-1L << ((byte)uVar21 & 0x3f)" (number_literal "-1L") (<< "<<") (parenthesized_expression "((byte)uVar21 & 0x3f)" (( "(") (binary_expression "(byte)uVar21 & 0x3f" (cast_expression "(byte)uVar21" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar21")) (& "&") (number_literal "0x3f")) () ")"))) () ")"))) (& "&") (binary_expression "uVar31 >> ((byte)uVar29 & 0x3f)" (identifier "uVar31") (>> ">>") (parenthesized_expression "((byte)uVar29 & 0x3f)" (( "(") (binary_expression "(byte)uVar29 & 0x3f" (cast_expression "(byte)uVar29" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar29")) (& "&") (number_literal "0x3f")) () ")")))) () ")")) (<< "<<") (parenthesized_expression "((byte)uVar22 & 0x3f)" (( "(") (binary_expression "(byte)uVar22 & 0x3f" (cast_expression "(byte)uVar22" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar22")) (& "&") (number_literal "0x3f")) () ")"))) () ")"))))) (; ";")) (if_statement "if (uVar22 == 0) {\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }" (if "if") (parenthesized_expression "(uVar22 == 0)" (( "(") (binary_expression "uVar22 == 0" (identifier "uVar22") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            param_5 = param_5 + 1;\n            uVar22 = 8;\n          }" ({ "{") (expression_statement "param_5 = param_5 + 1;" (assignment_expression "param_5 = param_5 + 1" (identifier "param_5") (= "=") (binary_expression "param_5 + 1" (identifier "param_5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar22 = 8;" (assignment_expression "uVar22 = 8" (identifier "uVar22") (= "=") (number_literal "8")) (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "(0 < (long)uVar30)" (( "(") (binary_expression "0 < (long)uVar30" (number_literal "0") (< "<") (cast_expression "(long)uVar30" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "uVar30"))) () ")")) (; ";")) (expression_statement "param_2[0xf] = uVar22;" (assignment_expression "param_2[0xf] = uVar22" (subscript_expression "param_2[0xf]" (identifier "param_2") ([ "[") (number_literal "0xf") (] "]")) (= "=") (identifier "uVar22")) (; ";")) (} "}"))) (expression_statement "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;" (assignment_expression "param_4 = param_4 + *(long *)(param_1 + 0x340) * 4" (identifier "param_4") (= "=") (binary_expression "param_4 + *(long *)(param_1 + 0x340) * 4" (identifier "param_4") (+ "+") (binary_expression "*(long *)(param_1 + 0x340) * 4" (pointer_expression "*(long *)(param_1 + 0x340)" (* "*") (cast_expression "(long *)(param_1 + 0x340)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x340)" (( "(") (binary_expression "param_1 + 0x340" (identifier "param_1") (+ "+") (number_literal "0x340")) () ")")))) (* "*") (number_literal "4")))) (; ";")) (expression_statement "param_5 = param_5 + param_2[6];" (assignment_expression "param_5 = param_5 + param_2[6]" (identifier "param_5") (= "=") (binary_expression "param_5 + param_2[6]" (identifier "param_5") (+ "+") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]")))) (; ";")) (expression_statement "uVar34 = uVar34 + 1;" (assignment_expression "uVar34 = uVar34 + 1" (identifier "uVar34") (= "=") (binary_expression "uVar34 + 1" (identifier "uVar34") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_3 != uVar34)" (( "(") (binary_expression "param_3 != uVar34" (identifier "param_3") (!= "!=") (identifier "uVar34")) () ")")) (; ";")) (} "}")))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* 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 */
/* WARNING: Enum "ExceptionType": Some values do not have unique names */

void function_1
               (type_1 *image,type_2 *quantum_info,type_3 var_20,type_4 *var_17,
               type_5 *var_18,type_6 *var_1)

{
  type_7 *var_35;
  bool var_29;
  size_t var_31;
  size_t var_28;
  type_8 *pPVar5;
  double var_10;
  double var_42;
  bool bVar8;
  double var_12;
  double var_51;
  double var_50;
  double var_43;
  double var_9;
  double var_11;
  float var_5;
  float var_4;
  float var_6;
  double var_38;
  type_7 var_25;
  type_7 var_26;
  type_5 uVar21;
  type_9 var_48;
  type_10 uVar23;
  type_5 uVar25;
  type_11 uVar24;
  type_12 var_53;
  type_12 var_52;
  type_5 uVar28;
  type_13 var_23;
  size_t var_27;
  type_12 uVar35;
  type_12 var_3;
  long var_36;
  type_12 uVar38;
  type_3 var_19;
  bool bVar40;
  type_4 var_34;
  float var_8;
  float var_37;
  type_5 uVar29;
  type_5 uVar30;
  type_5 uVar31;
  type_5 uVar32;
  
  var_38 = DAT_0042f2e8;
  var_6 = var_30;
  var_4 = var_33;
  var_5 = var_32;
  var_11 = var_15;
  var_9 = var_14;
  var_43 = var_45;
  var_42 = var_44;
  var_8 = var_24;
  var_50 = var_55;
  var_51 = var_56;
  var_12 = var_16;
  var_10 = var_54;
  if (var_1 == (type_6 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_2("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x89f,
                  "ExportGrayAlphaQuantum");
  }
  if (var_1->signature != 0xabacadab) {
                    /* WARNING: Subroutine does not return */
    var_2("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x8a0,
                  "ExportGrayAlphaQuantum");
  }
  var_3 = quantum_info->depth;
  if (var_3 == 8) {
    var_19 = 0;
    if ((long)var_20 < 1) {
      return;
    }
    do {
      pPVar5 = image->channel_map;
      var_8 = var_4 * var_17[pPVar5[1].offset] + var_5 * var_17[pPVar5->offset] +
               var_6 * var_17[pPVar5[2].offset];
      if (var_7(var_8)) {
        uVar21 = '\0';
      }
      else {
        uVar21 = '\0';
        if ((0.0 < var_8) && (var_10 = (double)var_8 / var_9, uVar21 = 0xff, var_10 < var_11)) {
          uVar21 = (type_5)(int)(var_10 + var_12);
        }
      }
      *var_18 = uVar21;
      uVar21 = 0xff;
      if (image->channel_map[4].traits != var_13) {
        var_8 = var_17[image->channel_map[4].offset];
        if (var_7(var_8)) {
          uVar21 = '\0';
        }
        else {
          uVar21 = '\0';
          if ((0.0 < var_8) && (uVar21 = 0xff, (double)var_8 / var_14 < var_15)) {
            uVar21 = (type_5)(int)((double)var_8 / var_14 + var_16);
          }
        }
      }
      var_18[1] = uVar21;
      var_17 = var_17 + image->number_channels;
      var_18 = var_18 + quantum_info->pad + 2;
      var_19 = var_19 + 1;
    } while (var_19 != var_20);
    return;
  }
  if (var_3 < 9) {
    if (var_3 == 1) {
      bVar40 = quantum_info->min_is_white == var_21;
      bVar8 = !bVar40;
      if (var_20 != 3 && -1 < (long)(var_20 - 3)) {
        var_35 = var_18 + (var_20 - 4 >> 2) + 1;
        do {
          *var_18 = 0;
          pPVar5 = image->channel_map;
          var_23 = (type_13)bVar40;
          if (var_22 <
              var_6 * var_17[pPVar5[2].offset] +
              var_4 * var_17[pPVar5[1].offset] + var_5 * var_17[pPVar5->offset]) {
            var_23 = (type_13)bVar8;
          }
          var_26 = (type_7)(var_23 << 7);
          *var_18 = var_26;
          var_25 = 0x40;
          if (image->channel_map[4].traits != var_13) {
            if (var_17[image->channel_map[4].offset] == var_24) {
              var_25 = 0x40;
            }
            else {
              var_25 = 0;
            }
          }
          var_25 = var_25 | var_26;
          *var_18 = var_25;
          var_27 = image->number_channels;
          pPVar5 = image->channel_map;
          var_23 = (type_13)bVar40;
          if (var_22 <
              var_6 * var_17[var_27 + pPVar5[2].offset] +
              var_5 * var_17[var_27 + pPVar5->offset] + var_4 * var_17[var_27 + pPVar5[1].offset]) {
            var_23 = (type_13)bVar8;
          }
          var_25 = var_25 | (type_7)(var_23 << 5);
          *var_18 = var_25;
          var_26 = 0x10;
          if (image->channel_map[4].traits != var_13) {
            if (var_17[var_27 + image->channel_map[4].offset] == var_24) {
              var_26 = 0x10;
            }
            else {
              var_26 = 0;
            }
          }
          var_25 = var_25 | var_26;
          *var_18 = var_25;
          var_28 = image->number_channels;
          pPVar5 = image->channel_map;
          var_29 = bVar40;
          if (var_22 <
              var_6 * var_17[var_27 + var_28 + pPVar5[2].offset] +
              var_5 * var_17[var_27 + var_28 + pPVar5->offset] +
              var_4 * var_17[var_27 + var_28 + pPVar5[1].offset]) {
            var_29 = bVar8;
          }
          var_25 = var_25 | var_29 * '\b';
          *var_18 = var_25;
          var_26 = 4;
          if (image->channel_map[4].traits != var_13) {
            if (var_17[var_27 + var_28 + image->channel_map[4].offset] == var_24) {
              var_26 = 4;
            }
            else {
              var_26 = 0;
            }
          }
          var_25 = var_25 | var_26;
          *var_18 = var_25;
          var_31 = image->number_channels;
          pPVar5 = image->channel_map;
          var_29 = bVar8;
          if (var_30 * var_17[var_27 + var_28 + var_31 + pPVar5[2].offset] +
              var_32 * var_17[var_27 + var_28 + var_31 + pPVar5->offset] +
              var_33 * var_17[var_27 + var_28 + var_31 + pPVar5[1].offset] <= var_22) {
            var_29 = bVar40;
          }
          var_25 = var_25 | var_29 * '\x02';
          *var_18 = var_25;
          var_34 = var_24;
          if (image->channel_map[4].traits != var_13) {
            var_34 = var_17[var_27 + var_28 + var_31 + image->channel_map[4].offset];
          }
          *var_18 = var_25 | var_34 == var_24;
          var_17 = var_17 + var_27 + var_28 + var_31 + image->number_channels;
          var_18 = var_18 + 1;
        } while (var_18 != var_35);
      }
      if ((var_20 & 3) == 0) {
        return;
      }
      *var_18 = 0;
      var_6 = var_30;
      var_4 = var_33;
      var_5 = var_32;
      var_8 = var_24;
      var_25 = 7;
      var_36 = 0;
      do {
        pPVar5 = image->channel_map;
        var_29 = bVar40;
        if (var_22 <
            var_4 * var_17[pPVar5[1].offset] + var_5 * var_17[pPVar5->offset] + var_6 * var_17[pPVar5[2].offset]
           ) {
          var_29 = bVar8;
        }
        var_26 = var_29 << (var_25 & 0x1f) | *var_18;
        *var_18 = var_26;
        var_34 = var_8;
        if (image->channel_map[4].traits != var_13) {
          var_34 = var_17[image->channel_map[4].offset];
        }
        var_23 = (type_13)(!var_7(var_34) && !var_7(var_24));
        if (var_34 != var_24) {
          var_23 = 0;
        }
        *var_18 = (type_7)(var_23 << (var_25 - 1 & 0x1f)) | var_26;
        var_17 = var_17 + image->number_channels;
        var_36 = var_36 + 2;
        var_25 = var_25 - 2;
      } while (var_36 <= (long)(type_12)((type_13)var_20 & 3));
      return;
    }
    if (var_3 == 4) {
      var_35 = var_18 + var_20;
      if ((long)var_20 < 1) {
        return;
      }
      do {
        pPVar5 = image->channel_map;
        var_37 = var_4 * var_17[pPVar5[1].offset] + var_5 * var_17[pPVar5->offset] +
                 var_6 * var_17[pPVar5[2].offset];
        if (var_7(var_37)) {
          var_25 = 0;
        }
        else {
          var_25 = 0;
          if (0.0 < var_37) {
            var_10 = (double)var_37 / var_9;
            var_25 = 0xff;
            if (var_10 < var_11) {
              var_25 = (type_7)(int)(var_10 + var_12);
            }
          }
        }
        *var_18 = var_25 & 0xf0;
        var_34 = var_8;
        if (image->channel_map[4].traits != var_13) {
          var_34 = var_17[image->channel_map[4].offset];
        }
        *var_18 = var_25 & 0xf0 | (type_7)(int)((double)var_34 * var_38 + var_12) & 0xf;
        var_17 = var_17 + image->number_channels;
        var_18 = var_18 + 1;
      } while (var_18 != var_35);
      return;
    }
LAB_002734da:
    uVar38 = 0;
    if (var_3 == 0) goto LAB_002734e9;
  }
  else {
    if (var_3 == 0x20) {
      if (quantum_info->format == var_39) {
        if ((long)var_20 < 1) {
          return;
        }
        var_19 = 0;
        do {
          pPVar5 = image->channel_map;
          var_37 = (float)((double)(var_4 * var_17[pPVar5[1].offset] + var_5 * var_17[pPVar5->offset] +
                                   var_6 * var_17[pPVar5[2].offset]) *
                           (quantum_info->state).inverse_scale + quantum_info->minimum);
          uVar25 = (type_5)((type_13)var_37 >> 8);
          uVar31 = (type_5)((type_13)var_37 >> 0x10);
          uVar21 = (type_5)((type_13)var_37 >> 0x18);
          if (quantum_info->endian == var_40) {
            *var_18 = var_41(var_37,0);
            var_18[1] = uVar25;
            var_18[2] = uVar31;
            var_18[3] = uVar21;
          }
          else {
            *var_18 = uVar21;
            var_18[1] = uVar31;
            var_18[2] = uVar25;
            var_18[3] = var_41(var_37,0);
          }
          var_34 = var_8;
          if (image->channel_map[4].traits != var_13) {
            var_34 = var_17[image->channel_map[4].offset];
          }
          var_37 = (float)((double)var_34 * (quantum_info->state).inverse_scale +
                          quantum_info->minimum);
          uVar21 = (type_5)((type_13)var_37 >> 8);
          uVar25 = (type_5)((type_13)var_37 >> 0x10);
          uVar31 = (type_5)((type_13)var_37 >> 0x18);
          if (quantum_info->endian == var_40) {
            var_18[4] = var_41(var_37,0);
            var_18[5] = uVar21;
            var_18[6] = uVar25;
            var_18[7] = uVar31;
          }
          else {
            var_18[4] = uVar31;
            var_18[5] = uVar25;
            var_18[6] = uVar21;
            var_18[7] = var_41(var_37,0);
          }
          var_17 = var_17 + image->number_channels;
          var_18 = var_18 + quantum_info->pad + 8;
          var_19 = var_19 + 1;
        } while (var_19 != var_20);
        return;
      }
      var_19 = 0;
      if ((long)var_20 < 1) {
        return;
      }
      do {
        pPVar5 = image->channel_map;
        var_8 = var_4 * var_17[pPVar5[1].offset] + var_5 * var_17[pPVar5->offset] +
                 var_6 * var_17[pPVar5[2].offset];
        if (var_7(var_8)) {
          uVar24 = 0;
        }
        else {
          uVar24 = 0;
          if ((0.0 < var_8) && (uVar24 = 0xffffffff, (double)var_8 * var_42 < var_43)) {
            uVar24 = (type_11)(long)((double)var_8 * var_42 + var_12);
          }
        }
        uVar21 = (type_5)((type_13)uVar24 >> 8);
        uVar25 = (type_5)((type_13)uVar24 >> 0x10);
        uVar31 = (type_5)((type_13)uVar24 >> 0x18);
        if (quantum_info->endian == var_40) {
          *var_18 = (type_5)uVar24;
          var_18[1] = uVar21;
          var_18[2] = uVar25;
          var_18[3] = uVar31;
        }
        else {
          *var_18 = uVar31;
          var_18[1] = uVar25;
          var_18[2] = uVar21;
          var_18[3] = (type_5)uVar24;
        }
        uVar24 = 0xffffffff;
        if (image->channel_map[4].traits != var_13) {
          var_8 = var_17[image->channel_map[4].offset];
          if (var_7(var_8)) {
            uVar24 = 0;
          }
          else {
            uVar24 = 0;
            if ((0.0 < var_8) &&
               (uVar24 = 0xffffffff, (double)var_8 * var_44 < var_45)) {
              uVar24 = (int)(long)((double)var_8 * var_44 + var_16);
            }
          }
        }
        uVar21 = (type_5)((type_13)uVar24 >> 8);
        uVar25 = (type_5)((type_13)uVar24 >> 0x10);
        uVar31 = (type_5)((type_13)uVar24 >> 0x18);
        if (quantum_info->endian == var_40) {
          var_18[4] = (type_5)uVar24;
          var_18[5] = uVar21;
          var_18[6] = uVar25;
          var_18[7] = uVar31;
        }
        else {
          var_18[4] = uVar31;
          var_18[5] = uVar25;
          var_18[6] = uVar21;
          var_18[7] = (type_5)uVar24;
        }
        var_17 = var_17 + image->number_channels;
        var_18 = var_18 + quantum_info->pad + 8;
        var_19 = var_19 + 1;
      } while (var_19 != var_20);
      return;
    }
    if (var_3 != 0x40) {
      if (var_3 == 0x10) {
        if (quantum_info->format == var_39) {
          if ((long)var_20 < 1) {
            return;
          }
          var_19 = 0;
          do {
            pPVar5 = image->channel_map;
            var_48 = var_46
                               ((float)((double)(var_33 * var_17[pPVar5[1].offset] +
                                                 var_32 * var_17[pPVar5->offset] +
                                                var_30 * var_17[pPVar5[2].offset]) * var_47))
            ;
            uVar21 = (type_5)(var_48 >> 8);
            if (quantum_info->endian == var_40) {
              *var_18 = (type_5)var_48;
              var_18[1] = uVar21;
            }
            else {
              *var_18 = uVar21;
              var_18[1] = (type_5)var_48;
            }
            var_34 = var_24;
            if (image->channel_map[4].traits != var_13) {
              var_34 = var_17[image->channel_map[4].offset];
            }
            var_48 = var_46((float)((double)var_34 * var_47));
            uVar21 = (type_5)(var_48 >> 8);
            if (quantum_info->endian == var_40) {
              var_18[2] = (type_5)var_48;
              var_18[3] = uVar21;
            }
            else {
              var_18[2] = uVar21;
              var_18[3] = (type_5)var_48;
            }
            var_17 = var_17 + image->number_channels;
            var_18 = var_18 + quantum_info->pad + 4;
            var_19 = var_19 + 1;
          } while (var_19 != var_20);
          return;
        }
        var_19 = 0;
        if ((long)var_20 < 1) {
          return;
        }
        do {
          pPVar5 = image->channel_map;
          var_8 = var_4 * var_17[pPVar5[1].offset] + var_5 * var_17[pPVar5->offset] +
                   var_6 * var_17[pPVar5[2].offset];
          if (var_7(var_8)) {
            uVar23 = 0;
          }
          else {
            uVar23 = 0;
            if ((0.0 < var_8) && (uVar23 = 0xffff, var_8 < var_24)) {
              uVar23 = (type_10)(int)((double)var_8 + var_12);
            }
          }
          uVar21 = (type_5)((type_9)uVar23 >> 8);
          if (quantum_info->endian == var_40) {
            *var_18 = (type_5)uVar23;
            var_18[1] = uVar21;
          }
          else {
            *var_18 = uVar21;
            var_18[1] = (type_5)uVar23;
          }
          uVar23 = 0xffff;
          if (image->channel_map[4].traits != var_13) {
            var_8 = var_17[image->channel_map[4].offset];
            if (var_7(var_8)) {
              uVar23 = 0;
            }
            else {
              uVar23 = 0;
              if ((0.0 < var_8) && (uVar23 = 0xffff, var_8 < var_24)) {
                uVar23 = (short)(int)((double)var_8 + var_12);
              }
            }
          }
          uVar21 = (type_5)((type_9)uVar23 >> 8);
          if (quantum_info->endian == var_40) {
            var_18[2] = (type_5)uVar23;
            var_18[3] = uVar21;
          }
          else {
            var_18[2] = uVar21;
            var_18[3] = (type_5)uVar23;
          }
          var_17 = var_17 + image->number_channels;
          var_18 = var_18 + quantum_info->pad + 4;
          var_19 = var_19 + 1;
        } while (var_19 != var_20);
        return;
      }
      goto LAB_002734da;
    }
    if (quantum_info->format == var_39) {
      if ((long)var_20 < 1) {
        return;
      }
      var_19 = 0;
      do {
        pPVar5 = image->channel_map;
        var_10 = (double)(var_4 * var_17[pPVar5[1].offset] + var_5 * var_17[pPVar5->offset] +
                        var_6 * var_17[pPVar5[2].offset]) * (quantum_info->state).inverse_scale +
                quantum_info->minimum;
        uVar25 = (type_5)((type_12)var_10 >> 8);
        uVar28 = (type_5)((type_12)var_10 >> 0x10);
        uVar29 = (type_5)((type_12)var_10 >> 0x18);
        uVar30 = (type_5)((type_12)var_10 >> 0x20);
        uVar31 = (type_5)((type_12)var_10 >> 0x28);
        uVar32 = (type_5)((type_12)var_10 >> 0x30);
        uVar21 = (type_5)((type_12)var_10 >> 0x38);
        if (quantum_info->endian == var_40) {
          *var_18 = var_49(var_10,0);
          var_18[1] = uVar25;
          var_18[2] = uVar28;
          var_18[3] = uVar29;
          var_18[4] = uVar30;
          var_18[5] = uVar31;
          var_18[6] = uVar32;
          var_18[7] = uVar21;
        }
        else {
          *var_18 = uVar21;
          var_18[1] = uVar32;
          var_18[2] = uVar31;
          var_18[3] = uVar30;
          var_18[4] = uVar29;
          var_18[5] = uVar28;
          var_18[6] = uVar25;
          var_18[7] = var_49(var_10,0);
        }
        var_34 = var_8;
        if (image->channel_map[4].traits != var_13) {
          var_34 = var_17[image->channel_map[4].offset];
        }
        var_10 = (double)var_34 * (quantum_info->state).inverse_scale + quantum_info->minimum;
        uVar21 = (type_5)((type_12)var_10 >> 8);
        uVar25 = (type_5)((type_12)var_10 >> 0x10);
        uVar31 = (type_5)((type_12)var_10 >> 0x18);
        uVar32 = (type_5)((type_12)var_10 >> 0x20);
        uVar30 = (type_5)((type_12)var_10 >> 0x28);
        uVar29 = (type_5)((type_12)var_10 >> 0x30);
        uVar28 = (type_5)((type_12)var_10 >> 0x38);
        if (quantum_info->endian == var_40) {
          var_18[8] = var_49(var_10,0);
          var_18[9] = uVar21;
          var_18[10] = uVar25;
          var_18[0xb] = uVar31;
          var_18[0xc] = uVar32;
          var_18[0xd] = uVar30;
          var_18[0xe] = uVar29;
          var_18[0xf] = uVar28;
        }
        else {
          var_18[8] = uVar28;
          var_18[9] = uVar29;
          var_18[10] = uVar30;
          var_18[0xb] = uVar32;
          var_18[0xc] = uVar31;
          var_18[0xd] = uVar25;
          var_18[0xe] = uVar21;
          var_18[0xf] = var_49(var_10,0);
        }
        var_17 = var_17 + image->number_channels;
        var_18 = var_18 + quantum_info->pad + 0x10;
        var_19 = var_19 + 1;
      } while (var_19 != var_20);
      return;
    }
  }
  if (0x40 < var_3) {
    var_3 = 0;
  }
  uVar38 = (2L << ((char)var_3 - 1U & 0x3f)) - 1;
LAB_002734e9:
  if (0 < (long)var_20) {
    var_19 = 0;
    do {
      pPVar5 = image->channel_map;
      var_8 = var_4 * var_17[pPVar5[1].offset] + var_5 * var_17[pPVar5->offset] +
               var_6 * var_17[pPVar5[2].offset];
      if (var_7(var_8)) {
        var_3 = 0;
      }
      else {
        var_3 = 0;
        if (0.0 < var_8) {
          var_42 = ((double)var_8 * (double)uVar38) / var_10;
          var_3 = 0xffffffffffffffff;
          if (var_42 < var_50) {
            var_42 = var_42 + var_12;
            if (var_51 <= var_42) {
              var_3 = (long)(var_42 - var_51) ^ 0x8000000000000000;
            }
            else {
              var_3 = (type_12)var_42;
            }
          }
        }
      }
      if ((quantum_info->state).bits == 0) {
        (quantum_info->state).bits = 8;
      }
      var_27 = quantum_info->depth;
      if (0 < (long)var_27) {
        var_52 = (quantum_info->state).bits;
        do {
          var_53 = var_27;
          if (var_52 <= var_27) {
            var_53 = var_52;
          }
          uVar35 = var_27 - var_53;
          var_27 = 0;
          if (-1 < (long)uVar35) {
            var_27 = uVar35;
          }
          if (var_52 == 8) {
            *var_18 = 0;
          }
          var_52 = var_52 - var_53;
          *var_18 = *var_18 | (type_7)((~(-1L << ((type_7)var_53 & 0x3f)) & var_3 >> ((type_7)var_27 & 0x3f)) <<
                          ((type_7)var_52 & 0x3f));
          if (var_52 == 0) {
            var_18 = var_18 + 1;
            var_52 = 8;
          }
        } while (0 < (long)uVar35);
        (quantum_info->state).bits = var_52;
      }
      var_8 = var_24;
      if (image->channel_map[4].traits == var_13) {
LAB_002745f5:
        var_42 = ((double)var_8 * (double)uVar38) / var_54;
        var_3 = 0xffffffffffffffff;
        if (var_42 < var_55) {
          var_42 = var_42 + var_16;
          if (var_56 <= var_42) {
            var_3 = (long)(var_42 - var_56) ^ 0x8000000000000000;
          }
          else {
            var_3 = (type_12)var_42;
          }
        }
      }
      else {
        var_8 = var_17[image->channel_map[4].offset];
        if (var_7(var_8)) {
          var_3 = 0;
        }
        else {
          var_3 = 0;
          if (0.0 < var_8) goto LAB_002745f5;
        }
      }
      if ((quantum_info->state).bits == 0) {
        (quantum_info->state).bits = 8;
      }
      var_27 = quantum_info->depth;
      if (0 < (long)var_27) {
        var_52 = (quantum_info->state).bits;
        do {
          var_53 = var_27;
          if (var_52 <= var_27) {
            var_53 = var_52;
          }
          uVar35 = var_27 - var_53;
          var_27 = 0;
          if (-1 < (long)uVar35) {
            var_27 = uVar35;
          }
          if (var_52 == 8) {
            *var_18 = 0;
          }
          var_52 = var_52 - var_53;
          *var_18 = *var_18 | (type_7)((~(-1L << ((type_7)var_53 & 0x3f)) & var_3 >> ((type_7)var_27 & 0x3f)) <<
                          ((type_7)var_52 & 0x3f));
          if (var_52 == 0) {
            var_18 = var_18 + 1;
            var_52 = 8;
          }
        } while (0 < (long)uVar35);
        (quantum_info->state).bits = var_52;
      }
      var_17 = var_17 + image->number_channels;
      var_18 = var_18 + quantum_info->pad;
      var_19 = var_19 + 1;
    } while (var_20 != var_19);
  }
  return;
}


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

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void MASKED(long param_1,ulong *param_2,ulong param_3,long param_4,byte *param_5,long param_6)

{
  byte *pbVar1;
  bool bVar2;
  long lVar3;
  double dVar4;
  double dVar5;
  bool bVar6;
  double dVar7;
  double dVar8;
  double dVar9;
  double dVar10;
  double dVar11;
  double dVar12;
  float fVar13;
  float fVar14;
  float fVar15;
  double dVar16;
  byte bVar17;
  byte bVar18;
  undefined2 uVar19;
  undefined4 uVar20;
  ulong uVar21;
  ulong uVar22;
  byte bVar23;
  uint uVar28;
  ulong uVar29;
  ulong uVar30;
  ulong uVar31;
  long lVar32;
  ulong uVar33;
  ulong uVar34;
  bool bVar35;
  float fVar36;
  float fVar37;
  byte bVar24;
  byte bVar25;
  byte bVar26;
  byte bVar27;
  
  dVar16 = DAT_0042f2e8;
  fVar15 = DAT_0041abe0;
  fVar14 = DAT_0041abdc;
  fVar13 = DAT_0041abd8;
  dVar12 = DAT_00404938;
  dVar11 = DAT_00404930;
  dVar10 = DAT_00404928;
  dVar5 = DAT_00404920;
  fVar36 = _DAT_003fa400;
  dVar9 = DAT_003fa3a0;
  dVar8 = DAT_003f9c40;
  dVar7 = DAT_003f9c28;
  dVar4 = DAT_003f95f8;
  if (param_6 == 0) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("exception != (ExceptionInfo *) NULL","MagickCore/quantum-export.c",0x89f,
                  "ExportGrayAlphaQuantum");
  }
  if (*(long *)(param_6 + 0x30) != 0xabacadab) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("exception->signature == MagickCoreSignature","MagickCore/quantum-export.c",0x8a0,
                  "ExportGrayAlphaQuantum");
  }
  uVar34 = *param_2;
  if (uVar34 == 8) {
    uVar34 = 0;
    if ((long)param_3 < 1) {
      return;
    }
    do {
      lVar32 = *(long *)(param_1 + 0x360);
      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +
               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +
               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);
      if (NAN(fVar36)) {
        bVar17 = 0;
      }
      else {
        bVar17 = 0;
        if ((0.0 < fVar36) && (dVar4 = (double)fVar36 / dVar11, bVar17 = 0xff, dVar4 < dVar12)) {
          bVar17 = (byte)(int)(dVar4 + dVar7);
        }
      }
      *param_5 = bVar17;
      bVar17 = 0xff;
      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {
        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);
        if (NAN(fVar36)) {
          bVar17 = 0;
        }
        else {
          bVar17 = 0;
          if ((0.0 < fVar36) && (bVar17 = 0xff, (double)fVar36 / DAT_00404930 < DAT_00404938)) {
            bVar17 = (byte)(int)((double)fVar36 / DAT_00404930 + DAT_003f9c28);
          }
        }
      }
      param_5[1] = bVar17;
      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;
      param_5 = param_5 + param_2[6] + 2;
      uVar34 = uVar34 + 1;
    } while (uVar34 != param_3);
    return;
  }
  if (uVar34 < 9) {
    if (uVar34 == 1) {
      bVar35 = (int)param_2[7] == 0;
      bVar6 = !bVar35;
      if (param_3 != 3 && -1 < (long)(param_3 - 3)) {
        pbVar1 = param_5 + (param_3 - 4 >> 2) + 1;
        do {
          *param_5 = 0;
          lVar32 = *(long *)(param_1 + 0x360);
          uVar28 = (uint)bVar35;
          if (DAT_003fc580 <
              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +
              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +
              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4)) {
            uVar28 = (uint)bVar6;
          }
          bVar18 = (byte)(uVar28 << 7);
          *param_5 = bVar18;
          bVar17 = 0x40;
          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {
            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==
                _DAT_003fa400) {
              bVar17 = 0x40;
            }
            else {
              bVar17 = 0;
            }
          }
          bVar17 = bVar17 | bVar18;
          *param_5 = bVar17;
          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;
          lVar32 = *(long *)(param_1 + 0x360);
          uVar28 = (uint)bVar35;
          if (DAT_003fc580 <
              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +
              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +
              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {
            uVar28 = (uint)bVar6;
          }
          bVar17 = bVar17 | (byte)(uVar28 << 5);
          *param_5 = bVar17;
          bVar18 = 0x10;
          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {
            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==
                _DAT_003fa400) {
              bVar18 = 0x10;
            }
            else {
              bVar18 = 0;
            }
          }
          bVar17 = bVar17 | bVar18;
          *param_5 = bVar17;
          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;
          lVar32 = *(long *)(param_1 + 0x360);
          bVar2 = bVar35;
          if (DAT_003fc580 <
              fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +
              fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +
              fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4)) {
            bVar2 = bVar6;
          }
          bVar17 = bVar17 | bVar2 * '\b';
          *param_5 = bVar17;
          bVar18 = 4;
          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {
            if (*(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4) ==
                _DAT_003fa400) {
              bVar18 = 4;
            }
            else {
              bVar18 = 0;
            }
          }
          bVar17 = bVar17 | bVar18;
          *param_5 = bVar17;
          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;
          lVar32 = *(long *)(param_1 + 0x360);
          bVar2 = bVar6;
          if (DAT_0041abe0 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4) +
              DAT_0041abd8 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +
              DAT_0041abdc * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) <= DAT_003fc580) {
            bVar2 = bVar35;
          }
          bVar17 = bVar17 | bVar2 * '\x02';
          *param_5 = bVar17;
          fVar36 = _DAT_003fa400;
          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {
            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);
          }
          *param_5 = bVar17 | fVar36 == _DAT_003fa400;
          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;
          param_5 = param_5 + 1;
        } while (param_5 != pbVar1);
      }
      if ((param_3 & 3) == 0) {
        return;
      }
      *param_5 = 0;
      fVar15 = DAT_0041abe0;
      fVar14 = DAT_0041abdc;
      fVar13 = DAT_0041abd8;
      fVar36 = _DAT_003fa400;
      bVar17 = 7;
      lVar32 = 0;
      do {
        lVar3 = *(long *)(param_1 + 0x360);
        bVar2 = bVar35;
        if (DAT_003fc580 <
            fVar14 * *(float *)(param_4 + *(long *)(lVar3 + 0x18) * 4) +
            fVar13 * *(float *)(param_4 + *(long *)(lVar3 + 8) * 4) +
            fVar15 * *(float *)(param_4 + *(long *)(lVar3 + 0x28) * 4)) {
          bVar2 = bVar6;
        }
        bVar18 = bVar2 << (bVar17 & 0x1f) | *param_5;
        *param_5 = bVar18;
        fVar37 = fVar36;
        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {
          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);
        }
        uVar28 = (uint)(!NAN(fVar37) && !NAN(_DAT_003fa400));
        if (fVar37 != _DAT_003fa400) {
          uVar28 = 0;
        }
        *param_5 = (byte)(uVar28 << (bVar17 - 1 & 0x1f)) | bVar18;
        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;
        lVar32 = lVar32 + 2;
        bVar17 = bVar17 - 2;
      } while (lVar32 <= (long)(ulong)((uint)param_3 & 3));
      return;
    }
    if (uVar34 == 4) {
      pbVar1 = param_5 + param_3;
      if ((long)param_3 < 1) {
        return;
      }
      do {
        lVar32 = *(long *)(param_1 + 0x360);
        fVar37 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +
                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +
                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);
        if (NAN(fVar37)) {
          bVar17 = 0;
        }
        else {
          bVar17 = 0;
          if (0.0 < fVar37) {
            dVar4 = (double)fVar37 / dVar11;
            bVar17 = 0xff;
            if (dVar4 < dVar12) {
              bVar17 = (byte)(int)(dVar4 + dVar7);
            }
          }
        }
        *param_5 = bVar17 & 0xf0;
        fVar37 = fVar36;
        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {
          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);
        }
        *param_5 = bVar17 & 0xf0 | (byte)(int)((double)fVar37 * dVar16 + dVar7) & 0xf;
        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;
        param_5 = param_5 + 1;
      } while (param_5 != pbVar1);
      return;
    }
LAB_002734da:
    uVar33 = 0;
    if (uVar34 == 0) goto LAB_002734e9;
  }
  else {
    if (uVar34 == 0x20) {
      if ((int)param_2[2] == 1) {
        if ((long)param_3 < 1) {
          return;
        }
        uVar34 = 0;
        do {
          lVar32 = *(long *)(param_1 + 0x360);
          fVar37 = (float)((double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +
                                    fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +
                                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *
                           (double)param_2[0xd] + (double)param_2[3]);
          bVar18 = (byte)((uint)fVar37 >> 8);
          bVar27 = (byte)((uint)fVar37 >> 0x10);
          bVar17 = (byte)((uint)fVar37 >> 0x18);
          if ((int)param_2[0xc] == 1) {
            *param_5 = SUB41(fVar37,0);
            param_5[1] = bVar18;
            param_5[2] = bVar27;
            param_5[3] = bVar17;
          }
          else {
            *param_5 = bVar17;
            param_5[1] = bVar27;
            param_5[2] = bVar18;
            param_5[3] = SUB41(fVar37,0);
          }
          fVar37 = fVar36;
          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {
            fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);
          }
          fVar37 = (float)((double)fVar37 * (double)param_2[0xd] + (double)param_2[3]);
          bVar17 = (byte)((uint)fVar37 >> 8);
          bVar18 = (byte)((uint)fVar37 >> 0x10);
          bVar27 = (byte)((uint)fVar37 >> 0x18);
          if ((int)param_2[0xc] == 1) {
            param_5[4] = SUB41(fVar37,0);
            param_5[5] = bVar17;
            param_5[6] = bVar18;
            param_5[7] = bVar27;
          }
          else {
            param_5[4] = bVar27;
            param_5[5] = bVar18;
            param_5[6] = bVar17;
            param_5[7] = SUB41(fVar37,0);
          }
          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;
          param_5 = param_5 + param_2[6] + 8;
          uVar34 = uVar34 + 1;
        } while (uVar34 != param_3);
        return;
      }
      uVar34 = 0;
      if ((long)param_3 < 1) {
        return;
      }
      do {
        lVar32 = *(long *)(param_1 + 0x360);
        fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +
                 fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +
                 fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);
        if (NAN(fVar36)) {
          uVar20 = 0;
        }
        else {
          uVar20 = 0;
          if ((0.0 < fVar36) && (uVar20 = 0xffffffff, (double)fVar36 * dVar5 < dVar10)) {
            uVar20 = (undefined4)(long)((double)fVar36 * dVar5 + dVar7);
          }
        }
        bVar17 = (byte)((uint)uVar20 >> 8);
        bVar18 = (byte)((uint)uVar20 >> 0x10);
        bVar27 = (byte)((uint)uVar20 >> 0x18);
        if ((int)param_2[0xc] == 1) {
          *param_5 = (byte)uVar20;
          param_5[1] = bVar17;
          param_5[2] = bVar18;
          param_5[3] = bVar27;
        }
        else {
          *param_5 = bVar27;
          param_5[1] = bVar18;
          param_5[2] = bVar17;
          param_5[3] = (byte)uVar20;
        }
        uVar20 = 0xffffffff;
        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {
          fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);
          if (NAN(fVar36)) {
            uVar20 = 0;
          }
          else {
            uVar20 = 0;
            if ((0.0 < fVar36) &&
               (uVar20 = 0xffffffff, (double)fVar36 * DAT_00404920 < DAT_00404928)) {
              uVar20 = (int)(long)((double)fVar36 * DAT_00404920 + DAT_003f9c28);
            }
          }
        }
        bVar17 = (byte)((uint)uVar20 >> 8);
        bVar18 = (byte)((uint)uVar20 >> 0x10);
        bVar27 = (byte)((uint)uVar20 >> 0x18);
        if ((int)param_2[0xc] == 1) {
          param_5[4] = (byte)uVar20;
          param_5[5] = bVar17;
          param_5[6] = bVar18;
          param_5[7] = bVar27;
        }
        else {
          param_5[4] = bVar27;
          param_5[5] = bVar18;
          param_5[6] = bVar17;
          param_5[7] = (byte)uVar20;
        }
        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;
        param_5 = param_5 + param_2[6] + 8;
        uVar34 = uVar34 + 1;
      } while (uVar34 != param_3);
      return;
    }
    if (uVar34 != 0x40) {
      if (uVar34 == 0x10) {
        if ((int)param_2[2] == 1) {
          if ((long)param_3 < 1) {
            return;
          }
          uVar34 = 0;
          do {
            lVar32 = *(long *)(param_1 + 0x360);
            uVar19 = FUN_00272577((float)((double)(DAT_0041abdc *
                                                   *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4
                                                             ) +
                                                   DAT_0041abd8 *
                                                   *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +
                                                  DAT_0041abe0 *
                                                  *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)
                                                  ) * DAT_003f9c60));
            bVar17 = (byte)((ushort)uVar19 >> 8);
            if ((int)param_2[0xc] == 1) {
              *param_5 = (byte)uVar19;
              param_5[1] = bVar17;
            }
            else {
              *param_5 = bVar17;
              param_5[1] = (byte)uVar19;
            }
            fVar36 = _DAT_003fa400;
            if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {
              fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);
            }
            uVar19 = FUN_00272577((float)((double)fVar36 * DAT_003f9c60));
            bVar17 = (byte)((ushort)uVar19 >> 8);
            if ((int)param_2[0xc] == 1) {
              param_5[2] = (byte)uVar19;
              param_5[3] = bVar17;
            }
            else {
              param_5[2] = bVar17;
              param_5[3] = (byte)uVar19;
            }
            param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;
            param_5 = param_5 + param_2[6] + 4;
            uVar34 = uVar34 + 1;
          } while (uVar34 != param_3);
          return;
        }
        uVar34 = 0;
        if ((long)param_3 < 1) {
          return;
        }
        do {
          lVar32 = *(long *)(param_1 + 0x360);
          fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +
                   fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +
                   fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);
          if (NAN(fVar36)) {
            uVar19 = 0;
          }
          else {
            uVar19 = 0;
            if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {
              uVar19 = (undefined2)(int)((double)fVar36 + dVar7);
            }
          }
          bVar17 = (byte)((ushort)uVar19 >> 8);
          if ((int)param_2[0xc] == 1) {
            *param_5 = (byte)uVar19;
            param_5[1] = bVar17;
          }
          else {
            *param_5 = bVar17;
            param_5[1] = (byte)uVar19;
          }
          uVar19 = 0xffff;
          if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {
            fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);
            if (NAN(fVar36)) {
              uVar19 = 0;
            }
            else {
              uVar19 = 0;
              if ((0.0 < fVar36) && (uVar19 = 0xffff, fVar36 < _DAT_003fa400)) {
                uVar19 = (short)(int)((double)fVar36 + dVar7);
              }
            }
          }
          bVar17 = (byte)((ushort)uVar19 >> 8);
          if ((int)param_2[0xc] == 1) {
            param_5[2] = (byte)uVar19;
            param_5[3] = bVar17;
          }
          else {
            param_5[2] = bVar17;
            param_5[3] = (byte)uVar19;
          }
          param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;
          param_5 = param_5 + param_2[6] + 4;
          uVar34 = uVar34 + 1;
        } while (uVar34 != param_3);
        return;
      }
      goto LAB_002734da;
    }
    if ((int)param_2[2] == 1) {
      if ((long)param_3 < 1) {
        return;
      }
      uVar34 = 0;
      do {
        lVar32 = *(long *)(param_1 + 0x360);
        dVar4 = (double)(fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +
                         fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +
                        fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4)) *
                (double)param_2[0xd] + (double)param_2[3];
        bVar18 = (byte)((ulong)dVar4 >> 8);
        bVar23 = (byte)((ulong)dVar4 >> 0x10);
        bVar24 = (byte)((ulong)dVar4 >> 0x18);
        bVar25 = (byte)((ulong)dVar4 >> 0x20);
        bVar26 = (byte)((ulong)dVar4 >> 0x28);
        bVar27 = (byte)((ulong)dVar4 >> 0x30);
        bVar17 = (byte)((ulong)dVar4 >> 0x38);
        if ((int)param_2[0xc] == 1) {
          *param_5 = SUB81(dVar4,0);
          param_5[1] = bVar18;
          param_5[2] = bVar23;
          param_5[3] = bVar24;
          param_5[4] = bVar25;
          param_5[5] = bVar26;
          param_5[6] = bVar27;
          param_5[7] = bVar17;
        }
        else {
          *param_5 = bVar17;
          param_5[1] = bVar27;
          param_5[2] = bVar26;
          param_5[3] = bVar25;
          param_5[4] = bVar24;
          param_5[5] = bVar23;
          param_5[6] = bVar18;
          param_5[7] = SUB81(dVar4,0);
        }
        fVar37 = fVar36;
        if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) != 0) {
          fVar37 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);
        }
        dVar4 = (double)fVar37 * (double)param_2[0xd] + (double)param_2[3];
        bVar17 = (byte)((ulong)dVar4 >> 8);
        bVar18 = (byte)((ulong)dVar4 >> 0x10);
        bVar27 = (byte)((ulong)dVar4 >> 0x18);
        bVar26 = (byte)((ulong)dVar4 >> 0x20);
        bVar25 = (byte)((ulong)dVar4 >> 0x28);
        bVar24 = (byte)((ulong)dVar4 >> 0x30);
        bVar23 = (byte)((ulong)dVar4 >> 0x38);
        if ((int)param_2[0xc] == 1) {
          param_5[8] = SUB81(dVar4,0);
          param_5[9] = bVar17;
          param_5[10] = bVar18;
          param_5[0xb] = bVar27;
          param_5[0xc] = bVar26;
          param_5[0xd] = bVar25;
          param_5[0xe] = bVar24;
          param_5[0xf] = bVar23;
        }
        else {
          param_5[8] = bVar23;
          param_5[9] = bVar24;
          param_5[10] = bVar25;
          param_5[0xb] = bVar26;
          param_5[0xc] = bVar27;
          param_5[0xd] = bVar18;
          param_5[0xe] = bVar17;
          param_5[0xf] = SUB81(dVar4,0);
        }
        param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;
        param_5 = param_5 + param_2[6] + 0x10;
        uVar34 = uVar34 + 1;
      } while (uVar34 != param_3);
      return;
    }
  }
  if (0x40 < uVar34) {
    uVar34 = 0;
  }
  uVar33 = (2L << ((char)uVar34 - 1U & 0x3f)) - 1;
LAB_002734e9:
  if (0 < (long)param_3) {
    uVar34 = 0;
    do {
      lVar32 = *(long *)(param_1 + 0x360);
      fVar36 = fVar14 * *(float *)(param_4 + *(long *)(lVar32 + 0x18) * 4) +
               fVar13 * *(float *)(param_4 + *(long *)(lVar32 + 8) * 4) +
               fVar15 * *(float *)(param_4 + *(long *)(lVar32 + 0x28) * 4);
      if (NAN(fVar36)) {
        uVar31 = 0;
      }
      else {
        uVar31 = 0;
        if (0.0 < fVar36) {
          dVar5 = ((double)fVar36 * (double)uVar33) / dVar4;
          uVar31 = 0xffffffffffffffff;
          if (dVar5 < dVar9) {
            dVar5 = dVar5 + dVar7;
            if (dVar8 <= dVar5) {
              uVar31 = (long)(dVar5 - dVar8) ^ 0x8000000000000000;
            }
            else {
              uVar31 = (ulong)dVar5;
            }
          }
        }
      }
      if (param_2[0xf] == 0) {
        param_2[0xf] = 8;
      }
      uVar29 = *param_2;
      if (0 < (long)uVar29) {
        uVar22 = param_2[0xf];
        do {
          uVar21 = uVar29;
          if (uVar22 <= uVar29) {
            uVar21 = uVar22;
          }
          uVar30 = uVar29 - uVar21;
          uVar29 = 0;
          if (-1 < (long)uVar30) {
            uVar29 = uVar30;
          }
          if (uVar22 == 8) {
            *param_5 = 0;
          }
          uVar22 = uVar22 - uVar21;
          *param_5 = *param_5 |
                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<
                           ((byte)uVar22 & 0x3f));
          if (uVar22 == 0) {
            param_5 = param_5 + 1;
            uVar22 = 8;
          }
        } while (0 < (long)uVar30);
        param_2[0xf] = uVar22;
      }
      fVar36 = _DAT_003fa400;
      if (*(int *)(*(long *)(param_1 + 0x360) + 0x44) == 0) {
LAB_002745f5:
        dVar5 = ((double)fVar36 * (double)uVar33) / DAT_003f95f8;
        uVar31 = 0xffffffffffffffff;
        if (dVar5 < DAT_003fa3a0) {
          dVar5 = dVar5 + DAT_003f9c28;
          if (DAT_003f9c40 <= dVar5) {
            uVar31 = (long)(dVar5 - DAT_003f9c40) ^ 0x8000000000000000;
          }
          else {
            uVar31 = (ulong)dVar5;
          }
        }
      }
      else {
        fVar36 = *(float *)(param_4 + *(long *)(*(long *)(param_1 + 0x360) + 0x48) * 4);
        if (NAN(fVar36)) {
          uVar31 = 0;
        }
        else {
          uVar31 = 0;
          if (0.0 < fVar36) goto LAB_002745f5;
        }
      }
      if (param_2[0xf] == 0) {
        param_2[0xf] = 8;
      }
      uVar29 = *param_2;
      if (0 < (long)uVar29) {
        uVar22 = param_2[0xf];
        do {
          uVar21 = uVar29;
          if (uVar22 <= uVar29) {
            uVar21 = uVar22;
          }
          uVar30 = uVar29 - uVar21;
          uVar29 = 0;
          if (-1 < (long)uVar30) {
            uVar29 = uVar30;
          }
          if (uVar22 == 8) {
            *param_5 = 0;
          }
          uVar22 = uVar22 - uVar21;
          *param_5 = *param_5 |
                     (byte)((~(-1L << ((byte)uVar21 & 0x3f)) & uVar31 >> ((byte)uVar29 & 0x3f)) <<
                           ((byte)uVar22 & 0x3f));
          if (uVar22 == 0) {
            param_5 = param_5 + 1;
            uVar22 = 8;
          }
        } while (0 < (long)uVar30);
        param_2[0xf] = uVar22;
      }
      param_4 = param_4 + *(long *)(param_1 + 0x340) * 4;
      param_5 = param_5 + param_2[6];
      uVar34 = uVar34 + 1;
    } while (param_3 != uVar34);
  }
  return;
}

