
/* 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 ExportIndexQuantum(Image *image,QuantumInfo *quantum_info,MagickSizeType number_pixels,
                       Quantum *p,uchar *q,ExceptionInfo *exception)

{
  byte bVar1;
  PixelChannelMap *pPVar2;
  undefined1 uVar4;
  byte bVar5;
  undefined1 uVar6;
  ushort uVar3;
  undefined1 uVar7;
  byte bVar8;
  uint uVar9;
  uint uVar10;
  undefined1 uVar11;
  uint uVar12;
  undefined1 uVar14;
  EndianType EVar13;
  uint uVar15;
  EndianType EVar16;
  undefined1 uVar17;
  uint uVar18;
  undefined1 uVar19;
  byte *pbVar20;
  byte *pbVar21;
  undefined1 *puVar22;
  int iVar23;
  uchar *puVar24;
  uint uVar25;
  float fVar28;
  double dVar26;
  undefined2 uVar29;
  double dVar27;
  float fVar30;
  double dVar31;
  undefined8 uVar32;
  
  if (image->storage_class == PseudoClass) {
    uVar25 = quantum_info->depth;
    if (uVar25 == 8) {
      if (0 < (int)q) {
        puVar24 = (uchar *)0x0;
        fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);
        do {
          iVar23 = (int)(number_pixels >> 0x20);
          uVar4 = 0;
          if (image->channel_map[5].traits != UndefinedPixelTrait) {
            fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);
            if (fVar28 < fVar30) {
              uVar4 = (undefined1)(int)fVar28;
            }
            else {
              uVar4 = (undefined1)(int)(fVar28 - fVar30);
            }
          }
          *(undefined1 *)number_pixels = uVar4;
          puVar24 = puVar24 + 1;
          number_pixels =
               CONCAT44(iVar23 + image->number_channels * 4,
                        (undefined1 *)number_pixels + quantum_info->pad + 1);
        } while (puVar24 != q);
      }
    }
    else {
      if (uVar25 < 9) {
        if (uVar25 == 1) {
          if (7 < (int)q) {
            fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);
            pbVar20 = (byte *)(number_pixels._4_4_ + ((uint)(q + -8) >> 3) + 1);
            do {
              iVar23 = (int)(number_pixels >> 0x20);
              pbVar21 = (byte *)number_pixels;
              bVar5 = 0;
              if (image->channel_map[5].traits != UndefinedPixelTrait) {
                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);
                if (fVar30 <= fVar28) {
                  fVar28 = fVar28 - fVar30;
                }
                bVar5 = (byte)(((int)fVar28 & 0xffU) << 7);
              }
              *pbVar21 = bVar5;
              iVar23 = iVar23 + image->number_channels * 4;
              if (image->channel_map[5].traits != UndefinedPixelTrait) {
                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);
                if (fVar30 <= fVar28) {
                  fVar28 = fVar28 - fVar30;
                }
                bVar5 = bVar5 | (byte)(((int)fVar28 & 1U) << 6);
              }
              *pbVar21 = bVar5;
              iVar23 = iVar23 + image->number_channels * 4;
              bVar8 = bVar5;
              if (image->channel_map[5].traits != UndefinedPixelTrait) {
                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);
                if (fVar30 <= fVar28) {
                  fVar28 = fVar28 - fVar30;
                }
                bVar1 = (byte)(((int)fVar28 & 1U) << 5);
                bVar8 = bVar5 | bVar1;
                *pbVar21 = bVar5 | bVar1;
              }
              iVar23 = iVar23 + image->number_channels * 4;
              if (image->channel_map[5].traits != UndefinedPixelTrait) {
                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);
                if (fVar30 <= fVar28) {
                  fVar28 = fVar28 - fVar30;
                }
                bVar8 = bVar8 | (byte)(((int)fVar28 & 1U) << 4);
              }
              *pbVar21 = bVar8;
              iVar23 = iVar23 + image->number_channels * 4;
              bVar5 = bVar8;
              if (image->channel_map[5].traits != UndefinedPixelTrait) {
                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);
                if (fVar30 <= fVar28) {
                  fVar28 = fVar28 - fVar30;
                }
                bVar1 = (byte)(((int)fVar28 & 1U) << 3);
                bVar5 = bVar8 | bVar1;
                *pbVar21 = bVar8 | bVar1;
              }
              iVar23 = iVar23 + image->number_channels * 4;
              if (image->channel_map[5].traits != UndefinedPixelTrait) {
                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);
                if (fVar30 <= fVar28) {
                  fVar28 = fVar28 - fVar30;
                }
                bVar5 = bVar5 | (byte)(((int)fVar28 & 1U) << 2);
              }
              *pbVar21 = bVar5;
              iVar23 = iVar23 + image->number_channels * 4;
              bVar8 = bVar5;
              if (image->channel_map[5].traits != UndefinedPixelTrait) {
                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);
                if (fVar30 <= fVar28) {
                  fVar28 = fVar28 - fVar30;
                }
                bVar1 = (byte)(((int)fVar28 & 1U) << 1);
                bVar8 = bVar5 | bVar1;
                *pbVar21 = bVar5 | bVar1;
              }
              iVar23 = iVar23 + image->number_channels * 4;
              if (image->channel_map[5].traits != UndefinedPixelTrait) {
                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);
                if (fVar28 < fVar30) {
                  bVar5 = (byte)(int)fVar28;
                }
                else {
                  bVar5 = (byte)(int)(fVar28 - fVar30);
                }
                bVar8 = bVar8 | bVar5 & 1;
              }
              *pbVar21 = bVar8;
              number_pixels = CONCAT44(iVar23 + image->number_channels * 4,pbVar21 + 1);
            } while (pbVar21 + 1 != pbVar20);
          }
          iVar23 = (int)(number_pixels >> 0x20);
          if (((uint)q & 7) == 0) {
            return;
          }
          *(undefined1 *)number_pixels = 0;
          if (((uint)q & 7) == 0) {
            return;
          }
          uVar10 = 0;
          uVar25 = 7;
          fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);
          do {
            if (image->channel_map[5].traits != UndefinedPixelTrait) {
              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);
              if (fVar30 <= fVar28) {
                fVar28 = fVar28 - fVar30;
              }
              uVar10 = ((int)fVar28 & 1U) << (uVar25 & 0x1f) & 0xff | uVar10;
            }
            *(undefined1 *)number_pixels = (char)uVar10;
            uVar25 = uVar25 - 1;
            iVar23 = iVar23 + image->number_channels * 4;
          } while (uVar25 != (~(uint)q & 7));
          return;
        }
        if (uVar25 == 4) {
          if (0 < (int)(q + -1)) {
            fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);
            pbVar20 = (byte *)(number_pixels._4_4_ + ((uint)(q + -2) >> 1) + 1);
            do {
              iVar23 = (int)(number_pixels >> 0x20);
              pbVar21 = (byte *)number_pixels;
              if (image->channel_map[5].traits == UndefinedPixelTrait) {
                bVar5 = 0;
              }
              else {
                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);
                if (fVar30 <= fVar28) {
                  fVar28 = fVar28 - fVar30;
                }
                bVar5 = (byte)(((int)fVar28 & 0xffU) << 4);
              }
              *pbVar21 = bVar5;
              iVar23 = iVar23 + image->number_channels * 4;
              if (image->channel_map[5].traits != UndefinedPixelTrait) {
                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);
                if (fVar28 < fVar30) {
                  bVar8 = (byte)(int)fVar28;
                }
                else {
                  bVar8 = (byte)(int)(fVar28 - fVar30);
                }
                bVar5 = bVar5 | bVar8 & 0xf;
              }
              *pbVar21 = bVar5;
              number_pixels = CONCAT44(iVar23 + image->number_channels * 4,pbVar21 + 1);
            } while (pbVar21 + 1 != pbVar20);
          }
          if (((uint)q & 1) == 0) {
            return;
          }
          if (image->channel_map[5].traits != UndefinedPixelTrait) {
            fVar30 = *(float *)((int)(number_pixels >> 0x20) + image->channel_map[5].offset * 4);
            if (fVar30 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {
              uVar4 = (undefined1)(((int)fVar30 & 0xfU) << 4);
            }
            else {
              uVar4 = (undefined1)
                      (((int)(fVar30 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU) << 4)
              ;
            }
            *(undefined1 *)number_pixels = uVar4;
            return;
          }
          *(undefined1 *)number_pixels = 0;
          return;
        }
      }
      else {
        if (uVar25 == 0x20) {
          if (quantum_info->format == FloatingPointQuantumFormat) {
            puVar24 = (uchar *)0x0;
            if ((int)q < 1) {
              return;
            }
            dVar31 = (quantum_info->state).inverse_scale;
            EVar13 = quantum_info->endian;
            dVar27 = quantum_info->minimum;
            do {
              iVar23 = (int)(number_pixels >> 0x20);
              puVar22 = (undefined1 *)number_pixels;
              dVar26 = 0.0;
              if (image->channel_map[5].traits != UndefinedPixelTrait) {
                dVar26 = (double)*(float *)(iVar23 + image->channel_map[5].offset * 4);
              }
              fVar30 = (float)(dVar31 * dVar26 + dVar27);
              uVar7 = (undefined1)((uint)fVar30 >> 8);
              uVar6 = (undefined1)((uint)fVar30 >> 0x10);
              uVar4 = (undefined1)((uint)fVar30 >> 0x18);
              if (EVar13 == LSBEndian) {
                puVar22[1] = uVar6;
                *puVar22 = uVar4;
                puVar22[2] = uVar7;
                puVar22[3] = SUB41(fVar30,0);
              }
              else {
                *puVar22 = SUB41(fVar30,0);
                puVar22[1] = uVar7;
                puVar22[2] = uVar6;
                puVar22[3] = uVar4;
              }
              puVar24 = puVar24 + 1;
              number_pixels =
                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 4);
            } while (puVar24 != q);
            return;
          }
          if ((int)q < 1) {
            return;
          }
          puVar24 = (uchar *)0x0;
          fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);
          do {
            iVar23 = (int)(number_pixels >> 0x20);
            puVar22 = (undefined1 *)number_pixels;
            uVar7 = 0;
            uVar6 = 0;
            uVar4 = 0;
            uVar11 = 0;
            if (image->channel_map[5].traits != UndefinedPixelTrait) {
              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);
              if (fVar30 <= fVar28) {
                uVar25 = (int)(fVar28 - fVar30) | 0x80000000;
              }
              else {
                uVar25 = (uint)fVar28;
              }
              uVar11 = (undefined1)(uVar25 >> 0x18);
              uVar4 = (undefined1)(uVar25 >> 0x10);
              uVar6 = (undefined1)(uVar25 >> 8);
              uVar7 = (undefined1)uVar25;
            }
            if (quantum_info->endian == LSBEndian) {
              *puVar22 = uVar7;
              puVar22[1] = uVar6;
              puVar22[2] = uVar4;
              puVar22[3] = uVar11;
            }
            else {
              *puVar22 = uVar11;
              puVar22[1] = uVar4;
              puVar22[2] = uVar6;
              puVar22[3] = uVar7;
            }
            puVar24 = puVar24 + 1;
            number_pixels =
                 CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 4);
          } while (puVar24 != q);
          return;
        }
        if (uVar25 == 0x40) {
          if (quantum_info->format == FloatingPointQuantumFormat) {
            puVar24 = (uchar *)0x0;
            if ((int)q < 1) {
              return;
            }
            dVar31 = (quantum_info->state).inverse_scale;
            EVar13 = quantum_info->endian;
            dVar27 = quantum_info->minimum;
            do {
              iVar23 = (int)(number_pixels >> 0x20);
              puVar22 = (undefined1 *)number_pixels;
              dVar26 = 0.0;
              if (image->channel_map[5].traits != UndefinedPixelTrait) {
                dVar26 = (double)*(float *)(iVar23 + image->channel_map[5].offset * 4);
              }
              dVar26 = dVar31 * dVar26 + dVar27;
              uVar4 = (undefined1)((ulonglong)dVar26 >> 0x20);
              uVar19 = (undefined1)((ulonglong)dVar26 >> 8);
              uVar17 = (undefined1)((ulonglong)dVar26 >> 0x10);
              uVar7 = (undefined1)((ulonglong)dVar26 >> 0x18);
              uVar14 = (undefined1)((ulonglong)dVar26 >> 0x28);
              uVar11 = (undefined1)((ulonglong)dVar26 >> 0x30);
              uVar6 = (undefined1)((ulonglong)dVar26 >> 0x38);
              if (EVar13 == LSBEndian) {
                puVar22[1] = uVar11;
                *puVar22 = uVar6;
                puVar22[2] = uVar14;
                puVar22[3] = uVar4;
                puVar22[4] = uVar7;
                puVar22[5] = uVar17;
                puVar22[6] = uVar19;
                puVar22[7] = SUB81(dVar26,0);
              }
              else {
                *puVar22 = SUB81(dVar26,0);
                puVar22[1] = uVar19;
                puVar22[2] = uVar17;
                puVar22[3] = uVar7;
                puVar22[4] = uVar4;
                puVar22[5] = uVar14;
                puVar22[6] = uVar11;
                puVar22[7] = uVar6;
              }
              puVar24 = puVar24 + 1;
              number_pixels =
                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 8);
            } while (puVar24 != q);
            return;
          }
        }
        else if (uVar25 == 0x10) {
          if (quantum_info->format == FloatingPointQuantumFormat) {
            if ((int)q < 1) {
              return;
            }
            puVar24 = (uchar *)0x0;
            EVar13 = LSBEndian;
            dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1440);
            do {
              iVar23 = (int)(number_pixels >> 0x20);
              puVar22 = (undefined1 *)number_pixels;
              fVar30 = 0.0;
              EVar16 = quantum_info->endian;
              if (image->channel_map[5].traits != UndefinedPixelTrait) {
                fVar30 = (float)((double)*(float *)(iVar23 + image->channel_map[5].offset * 4) *
                                dVar27);
              }
              uVar3 = SinglePrecisionToHalf(fVar30);
              uVar4 = (undefined1)(uVar3 >> 8);
              if (EVar16 == EVar13) {
                *puVar22 = (char)uVar3;
                puVar22[1] = uVar4;
              }
              else {
                *puVar22 = uVar4;
                puVar22[1] = (char)uVar3;
              }
              puVar24 = puVar24 + 1;
              number_pixels =
                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2);
            } while (puVar24 != q);
            return;
          }
          if ((int)q < 1) {
            return;
          }
          puVar24 = (uchar *)0x0;
          fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);
          do {
            iVar23 = (int)(number_pixels >> 0x20);
            puVar22 = (undefined1 *)number_pixels;
            uVar6 = 0;
            uVar4 = 0;
            if (image->channel_map[5].traits != UndefinedPixelTrait) {
              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);
              if (fVar28 < fVar30) {
                uVar29 = (undefined2)(int)fVar28;
              }
              else {
                uVar29 = (undefined2)(int)(fVar28 - fVar30);
              }
              uVar4 = (undefined1)((ushort)uVar29 >> 8);
              uVar6 = (undefined1)uVar29;
            }
            if (quantum_info->endian == LSBEndian) {
              *puVar22 = uVar6;
              puVar22[1] = uVar4;
            }
            else {
              *puVar22 = uVar4;
              puVar22[1] = uVar6;
            }
            puVar24 = puVar24 + 1;
            number_pixels =
                 CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2);
          } while (puVar24 != q);
          return;
        }
      }
      puVar24 = (uchar *)0x0;
      if (0 < (int)q) {
        pPVar2 = image->channel_map;
        if (pPVar2[5].traits == UndefinedPixelTrait) goto LAB_001574b0;
        do {
          uVar32 = (*(code *)PTR___fixunssfdi_003a8a80)
                             (*(undefined4 *)((int)(number_pixels >> 0x20) + pPVar2[5].offset * 4));
          while( true ) {
            uVar10 = (uint)((ulonglong)uVar32 >> 0x20);
            pbVar20 = (byte *)number_pixels;
            if ((quantum_info->state).bits == 0) {
              (quantum_info->state).bits = 8;
            }
            if (0 < (int)uVar25) {
              do {
                uVar15 = (quantum_info->state).bits;
                uVar9 = uVar15;
                if (uVar25 <= uVar15) {
                  uVar9 = uVar25;
                }
                uVar12 = uVar25 - uVar9;
                uVar18 = uVar15 - uVar9;
                uVar25 = uVar12;
                if ((int)uVar12 < 0) {
                  uVar25 = 0;
                }
                if (uVar15 == 8) {
                  *pbVar20 = 0;
                }
                (quantum_info->state).bits = uVar18;
                uVar15 = (uVar10 << 1) << (~uVar25 & 0x1f) | (uint)uVar32 >> (uVar25 & 0x1f);
                if ((uVar25 & 0x20) != 0) {
                  uVar15 = uVar10 >> (uVar25 & 0x1f);
                }
                bVar5 = (byte)((~(-1 << (uVar9 & 0x1f)) & uVar15) << (uVar18 & 0x1f));
                if ((uVar18 & 0x20) != 0) {
                  bVar5 = 0;
                }
                *pbVar20 = bVar5 | *pbVar20;
                if (uVar18 == 0) {
                  pbVar20 = pbVar20 + 1;
                  (quantum_info->state).bits = 8;
                }
              } while (0 < (int)uVar12);
            }
            puVar24 = puVar24 + 1;
            number_pixels =
                 CONCAT44((int)(number_pixels >> 0x20) + image->number_channels * 4,
                          pbVar20 + quantum_info->pad);
            if (puVar24 == q) {
              return;
            }
            pPVar2 = image->channel_map;
            uVar25 = quantum_info->depth;
            if (pPVar2[5].traits != UndefinedPixelTrait) break;
LAB_001574b0:
            uVar32 = 0;
          }
        } while( true );
      }
    }
  }
  else {
    (*(code *)PTR_ThrowMagickException_003a8f20)
              (exception,PTR_s_courses_003a88ec + -0x7af0,PTR_s_courses_003a88ec + -0x768c,0x9d8,
               0x1d1,PTR_s_courses_003a88ec + -0x7ad4,PTR_LAB_003a88e0 + 0x3e28,image->filename);
  }
  return;
}



void FUN_0015731c(ulonglong param_1,int *param_2,uint *param_3,undefined4 param_4,uint param_5,
                 int param_6,byte *param_7,undefined4 param_8)

{
  int iVar1;
  byte bVar3;
  undefined2 uVar2;
  byte bVar4;
  byte *pbVar5;
  byte bVar6;
  uint uVar7;
  byte bVar8;
  uint uVar9;
  byte bVar10;
  uint uVar11;
  uint uVar12;
  byte bVar13;
  uint uVar14;
  byte bVar15;
  uint uVar16;
  uint uVar17;
  float fVar20;
  double dVar18;
  double dVar19;
  double extraout_f0_1;
  float fVar21;
  double dVar22;
  undefined8 uVar23;
  
  if (*param_2 == 2) {
    uVar17 = *param_3;
    if (uVar17 == 8) {
      if (0 < (int)param_5) {
        uVar17 = 0;
        fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);
        do {
          bVar3 = 0;
          if (*(int *)(param_2[0xb4] + 0x40) != 0) {
            fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);
            if (fVar20 < fVar21) {
              bVar3 = (byte)(int)fVar20;
            }
            else {
              bVar3 = (byte)(int)(fVar20 - fVar21);
            }
          }
          *param_7 = bVar3;
          uVar17 = uVar17 + 1;
          param_6 = param_6 + param_2[0xb0] * 4;
          param_7 = param_7 + param_3[10] + 1;
        } while (uVar17 != param_5);
      }
    }
    else {
      if (uVar17 < 9) {
        if (uVar17 == 1) {
          if (7 < (int)param_5) {
            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);
            pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;
            do {
              bVar3 = 0;
              if (*(int *)(param_2[0xb4] + 0x40) != 0) {
                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);
                if (fVar21 <= fVar20) {
                  fVar20 = fVar20 - fVar21;
                }
                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);
              }
              *param_7 = bVar3;
              param_6 = param_6 + param_2[0xb0] * 4;
              if (*(int *)(param_2[0xb4] + 0x40) != 0) {
                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);
                if (fVar21 <= fVar20) {
                  fVar20 = fVar20 - fVar21;
                }
                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);
              }
              *param_7 = bVar3;
              param_6 = param_6 + param_2[0xb0] * 4;
              bVar6 = bVar3;
              if (*(int *)(param_2[0xb4] + 0x40) != 0) {
                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);
                if (fVar21 <= fVar20) {
                  fVar20 = fVar20 - fVar21;
                }
                bVar4 = (byte)(((int)fVar20 & 1U) << 5);
                bVar6 = bVar3 | bVar4;
                *param_7 = bVar3 | bVar4;
              }
              param_6 = param_6 + param_2[0xb0] * 4;
              if (*(int *)(param_2[0xb4] + 0x40) != 0) {
                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);
                if (fVar21 <= fVar20) {
                  fVar20 = fVar20 - fVar21;
                }
                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);
              }
              *param_7 = bVar6;
              param_6 = param_6 + param_2[0xb0] * 4;
              bVar3 = bVar6;
              if (*(int *)(param_2[0xb4] + 0x40) != 0) {
                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);
                if (fVar21 <= fVar20) {
                  fVar20 = fVar20 - fVar21;
                }
                bVar4 = (byte)(((int)fVar20 & 1U) << 3);
                bVar3 = bVar6 | bVar4;
                *param_7 = bVar6 | bVar4;
              }
              param_6 = param_6 + param_2[0xb0] * 4;
              if (*(int *)(param_2[0xb4] + 0x40) != 0) {
                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);
                if (fVar21 <= fVar20) {
                  fVar20 = fVar20 - fVar21;
                }
                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);
              }
              *param_7 = bVar3;
              param_6 = param_6 + param_2[0xb0] * 4;
              bVar6 = bVar3;
              if (*(int *)(param_2[0xb4] + 0x40) != 0) {
                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);
                if (fVar21 <= fVar20) {
                  fVar20 = fVar20 - fVar21;
                }
                bVar4 = (byte)(((int)fVar20 & 1U) << 1);
                bVar6 = bVar3 | bVar4;
                *param_7 = bVar3 | bVar4;
              }
              param_6 = param_6 + param_2[0xb0] * 4;
              if (*(int *)(param_2[0xb4] + 0x40) != 0) {
                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);
                if (fVar20 < fVar21) {
                  bVar3 = (byte)(int)fVar20;
                }
                else {
                  bVar3 = (byte)(int)(fVar20 - fVar21);
                }
                bVar6 = bVar6 | bVar3 & 1;
              }
              *param_7 = bVar6;
              param_7 = param_7 + 1;
              param_6 = param_6 + param_2[0xb0] * 4;
            } while (param_7 != pbVar5);
          }
          if ((param_5 & 7) == 0) {
            return;
          }
          *param_7 = 0;
          if ((param_5 & 7) == 0) {
            return;
          }
          uVar16 = 0;
          uVar17 = 7;
          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);
          do {
            if (*(int *)(param_2[0xb4] + 0x40) != 0) {
              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);
              if (fVar21 <= fVar20) {
                fVar20 = fVar20 - fVar21;
              }
              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;
            }
            *param_7 = (byte)uVar16;
            uVar17 = uVar17 - 1;
            param_6 = param_6 + param_2[0xb0] * 4;
          } while (uVar17 != (~param_5 & 7));
          return;
        }
        if (uVar17 == 4) {
          if (0 < (int)(param_5 - 1)) {
            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);
            pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;
            do {
              if (*(int *)(param_2[0xb4] + 0x40) == 0) {
                bVar3 = 0;
              }
              else {
                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);
                if (fVar21 <= fVar20) {
                  fVar20 = fVar20 - fVar21;
                }
                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);
              }
              *param_7 = bVar3;
              param_6 = param_6 + param_2[0xb0] * 4;
              if (*(int *)(param_2[0xb4] + 0x40) != 0) {
                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);
                if (fVar20 < fVar21) {
                  bVar6 = (byte)(int)fVar20;
                }
                else {
                  bVar6 = (byte)(int)(fVar20 - fVar21);
                }
                bVar3 = bVar3 | bVar6 & 0xf;
              }
              *param_7 = bVar3;
              param_7 = param_7 + 1;
              param_6 = param_6 + param_2[0xb0] * 4;
            } while (param_7 != pbVar5);
          }
          if ((param_5 & 1) == 0) {
            return;
          }
          if (*(int *)(param_2[0xb4] + 0x40) != 0) {
            fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);
            if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {
              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);
            }
            else {
              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)
                            << 4);
            }
            *param_7 = bVar3;
            return;
          }
          *param_7 = 0;
          return;
        }
      }
      else {
        if (uVar17 == 0x20) {
          if (param_3[2] == 1) {
            uVar17 = 0;
            if ((int)param_5 < 1) {
              return;
            }
            dVar22 = *(double *)(param_3 + 0x12);
            uVar16 = param_3[0x11];
            dVar19 = *(double *)(param_3 + 4);
            do {
              dVar18 = 0.0;
              if (*(int *)(param_2[0xb4] + 0x40) != 0) {
                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);
              }
              fVar21 = (float)(dVar22 * dVar18 + dVar19);
              bVar4 = (byte)((uint)fVar21 >> 8);
              bVar6 = (byte)((uint)fVar21 >> 0x10);
              bVar3 = (byte)((uint)fVar21 >> 0x18);
              if (uVar16 == 1) {
                param_7[1] = bVar6;
                *param_7 = bVar3;
                param_7[2] = bVar4;
                param_7[3] = SUB41(fVar21,0);
              }
              else {
                *param_7 = SUB41(fVar21,0);
                param_7[1] = bVar4;
                param_7[2] = bVar6;
                param_7[3] = bVar3;
              }
              uVar17 = uVar17 + 1;
              param_7 = param_7 + param_3[10] + 4;
              param_6 = param_6 + param_2[0xb0] * 4;
            } while (uVar17 != param_5);
            return;
          }
          if ((int)param_5 < 1) {
            return;
          }
          uVar17 = 0;
          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);
          do {
            bVar4 = 0;
            bVar6 = 0;
            bVar3 = 0;
            bVar8 = 0;
            if (*(int *)(param_2[0xb4] + 0x40) != 0) {
              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);
              if (fVar21 <= fVar20) {
                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;
              }
              else {
                uVar16 = (uint)fVar20;
              }
              bVar8 = (byte)(uVar16 >> 0x18);
              bVar3 = (byte)(uVar16 >> 0x10);
              bVar6 = (byte)(uVar16 >> 8);
              bVar4 = (byte)uVar16;
            }
            if (param_3[0x11] == 1) {
              *param_7 = bVar4;
              param_7[1] = bVar6;
              param_7[2] = bVar3;
              param_7[3] = bVar8;
            }
            else {
              *param_7 = bVar8;
              param_7[1] = bVar3;
              param_7[2] = bVar6;
              param_7[3] = bVar4;
            }
            uVar17 = uVar17 + 1;
            param_7 = param_7 + param_3[10] + 4;
            param_6 = param_6 + param_2[0xb0] * 4;
          } while (uVar17 != param_5);
          return;
        }
        if (uVar17 == 0x40) {
          if (param_3[2] == 1) {
            uVar17 = 0;
            if ((int)param_5 < 1) {
              return;
            }
            dVar22 = *(double *)(param_3 + 0x12);
            uVar16 = param_3[0x11];
            dVar19 = *(double *)(param_3 + 4);
            do {
              dVar18 = 0.0;
              if (*(int *)(param_2[0xb4] + 0x40) != 0) {
                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);
              }
              dVar18 = dVar22 * dVar18 + dVar19;
              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);
              bVar15 = (byte)((ulonglong)dVar18 >> 8);
              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);
              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);
              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);
              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);
              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);
              if (uVar16 == 1) {
                param_7[1] = bVar8;
                *param_7 = bVar6;
                param_7[2] = bVar10;
                param_7[3] = bVar3;
                param_7[4] = bVar4;
                param_7[5] = bVar13;
                param_7[6] = bVar15;
                param_7[7] = SUB81(dVar18,0);
              }
              else {
                *param_7 = SUB81(dVar18,0);
                param_7[1] = bVar15;
                param_7[2] = bVar13;
                param_7[3] = bVar4;
                param_7[4] = bVar3;
                param_7[5] = bVar10;
                param_7[6] = bVar8;
                param_7[7] = bVar6;
              }
              uVar17 = uVar17 + 1;
              param_7 = param_7 + param_3[10] + 8;
              param_6 = param_6 + param_2[0xb0] * 4;
            } while (uVar17 != param_5);
            return;
          }
        }
        else if (uVar17 == 0x10) {
          if (param_3[2] == 1) {
            if ((int)param_5 < 1) {
              return;
            }
            uVar17 = 0;
            uVar16 = 1;
            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);
            do {
              param_1 = param_1 & 0xffffffff00000000;
              uVar12 = param_3[0x11];
              if (*(int *)(param_2[0xb4] + 0x40) != 0) {
                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;
                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);
              }
              uVar2 = FUN_00155b60(param_1);
              bVar3 = (byte)((ushort)uVar2 >> 8);
              if (uVar12 == uVar16) {
                *param_7 = (byte)uVar2;
                param_7[1] = bVar3;
              }
              else {
                *param_7 = bVar3;
                param_7[1] = (byte)uVar2;
              }
              uVar17 = uVar17 + 1;
              param_7 = param_7 + param_3[10] + 2;
              param_6 = param_6 + param_2[0xb0] * 4;
              dVar19 = extraout_f0_1;
            } while (uVar17 != param_5);
            return;
          }
          if ((int)param_5 < 1) {
            return;
          }
          uVar17 = 0;
          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);
          do {
            bVar6 = 0;
            bVar3 = 0;
            if (*(int *)(param_2[0xb4] + 0x40) != 0) {
              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);
              if (fVar20 < fVar21) {
                uVar2 = (undefined2)(int)fVar20;
              }
              else {
                uVar2 = (undefined2)(int)(fVar20 - fVar21);
              }
              bVar3 = (byte)((ushort)uVar2 >> 8);
              bVar6 = (byte)uVar2;
            }
            if (param_3[0x11] == 1) {
              *param_7 = bVar6;
              param_7[1] = bVar3;
            }
            else {
              *param_7 = bVar3;
              param_7[1] = bVar6;
            }
            uVar17 = uVar17 + 1;
            param_7 = param_7 + param_3[10] + 2;
            param_6 = param_6 + param_2[0xb0] * 4;
          } while (uVar17 != param_5);
          return;
        }
      }
      uVar16 = 0;
      if (0 < (int)param_5) {
        iVar1 = param_2[0xb4];
        if (*(int *)(iVar1 + 0x40) == 0) goto LAB_001574b0;
        do {
          uVar23 = (*(code *)PTR_FUN_003a8a80)
                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4));
          while( true ) {
            uVar12 = (uint)((ulonglong)uVar23 >> 0x20);
            if (param_3[0x15] == 0) {
              param_3[0x15] = 8;
            }
            if (0 < (int)uVar17) {
              do {
                uVar11 = param_3[0x15];
                uVar7 = uVar11;
                if (uVar17 <= uVar11) {
                  uVar7 = uVar17;
                }
                uVar9 = uVar17 - uVar7;
                uVar14 = uVar11 - uVar7;
                uVar17 = uVar9;
                if ((int)uVar9 < 0) {
                  uVar17 = 0;
                }
                if (uVar11 == 8) {
                  *param_7 = 0;
                }
                param_3[0x15] = uVar14;
                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);
                if ((uVar17 & 0x20) != 0) {
                  uVar11 = uVar12 >> (uVar17 & 0x1f);
                }
                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));
                if ((uVar14 & 0x20) != 0) {
                  bVar3 = 0;
                }
                *param_7 = bVar3 | *param_7;
                if (uVar14 == 0) {
                  param_7 = param_7 + 1;
                  param_3[0x15] = 8;
                }
              } while (0 < (int)uVar9);
            }
            uVar16 = uVar16 + 1;
            param_7 = param_7 + param_3[10];
            param_6 = param_6 + param_2[0xb0] * 4;
            if (uVar16 == param_5) {
              return;
            }
            iVar1 = param_2[0xb4];
            uVar17 = *param_3;
            if (*(int *)(iVar1 + 0x40) != 0) break;
LAB_001574b0:
            uVar23 = 0;
          }
        } while( true );
      }
    }
  }
  else {
    (*(code *)PTR_ThrowMagickException_003a8f20)
              (param_8,PTR_s_courses_003a88ec + -0x7af0,PTR_s_courses_003a88ec + -0x768c,0x9d8,0x1d1
               ,PTR_s_courses_003a88ec + -0x7ad4,PTR_LAB_003a88e0 + 0x3e28,param_2 + 0xd0);
  }
  return;
}


lui gp,0x26
addiu gp,gp,-0x6a6c
addu gp,gp,t9
addiu sp,sp,-0x50
lw v1,0x0(a0)
li v0,0x2
sw gp,0x20(sp)
sw s3,0x34(sp)
sw s1,0x2c(sp)
or s1,a0,zero
sw s0,0x28(sp)
sw ra,0x4c(sp)
sw s8,0x48(sp)
sw s7,0x44(sp)
sw s6,0x40(sp)
sw s5,0x3c(sp)
sw s4,0x38(sp)
sw s2,0x30(sp)
lw s3,0x60(sp)
bne v1,v0,0x001574bc
_lw s0,0x64(sp)
lw s8,0x0(a1)
li v0,0x8
or s2,a1,zero
beq s8,v0,0x001575fc
_or s5,a3,zero
sltiu v0,s8,0x9
bne v0,zero,0x00157674
_li v0,0x20
beq s8,v0,0x00157534
_li v0,0x40
beq s8,v0,0x00157cb4
_li v0,0x10
beq s8,v0,0x001577f4
_li v0,0x1
blez s5,0x00157504
_or s7,zero,zero
lw v0,0x2d0(s1)
li s4,0x8
lw v1,0x40(v0)
beq v1,zero,0x001574b0
_li s6,-0x1
lw v0,0x44(v0)
lw t9,-0x7e30(gp)
sll v0,v0,0x2
addu v0,s3,v0
jalr t9
_lwc1 f12,0x0(v0)
lw gp,0x20(sp)
lw a0,0x54(s2)
bne a0,zero,0x001573f0
_nop
sw s4,0x54(s2)
blez s8,0x00157484
_or t0,s8,zero
sll a0,v0,0x1
lw t2,0x54(s2)
sltu t1,t2,t0
or a1,t2,zero
movz a1,t0,t1
subu t1,t0,a1
sllv a2,s6,a1
subu t4,t2,a1
slti t0,t1,0x0
or a1,t1,zero
movn a1,zero,t0
nor a2,zero,a2
andi a3,t4,0x20
bne t2,s4,0x00157438
_or t0,a1,zero
sb zero,0x0(s0)
nor t3,zero,t0
sw t4,0x54(s2)
sllv t3,a0,t3
lbu t5,0x0(s0)
srlv t2,v1,t0
srlv a1,v0,t0
andi t6,t0,0x20
or t2,t3,t2
movn t2,a1,t6
and a2,a2,t2
sllv a2,a2,t4
movn a2,zero,a3
or a2,a2,t5
bne t4,zero,0x0015747c
_sb a2,0x0(s0)
addiu s0,s0,0x1
sw s4,0x54(s2)
bgtz t1,0x001573fc
_nop
lw v0,0x2c0(s1)
addiu s7,s7,0x1
lw v1,0x28(s2)
sll v0,v0,0x2
addu s0,s0,v1
beq s7,s5,0x00157504
_addu s3,s3,v0
lw v0,0x2d0(s1)
lw v1,0x40(v0)
bne v1,zero,0x001573c4
_lw s8,0x0(s2)
or v0,zero,zero
b 0x001573e0
_or v1,zero,zero
lw v0,-0x7fd0(gp)
addiu s1,a0,0x340
lw a2,-0x7fc4(gp)
li a3,0x9d8
lw a1,-0x7fc4(gp)
addiu v0,v0,0x3e28
lw t9,-0x7990(gp)
lw a0,0x68(sp)
addiu a2,a2,-0x768c
sw v0,0x18(sp)
addiu a1,a1,-0x7af0
lw v0,-0x7fc4(gp)
sw s1,0x1c(sp)
addiu v0,v0,-0x7ad4
sw v0,0x14(sp)
li v0,0x1d1
jalr t9
_sw v0,0x10(sp)
lw ra,0x4c(sp)
lw s8,0x48(sp)
lw s7,0x44(sp)
lw s6,0x40(sp)
lw s5,0x3c(sp)
lw s4,0x38(sp)
lw s3,0x34(sp)
lw s2,0x30(sp)
lw s1,0x2c(sp)
lw s0,0x28(sp)
jr ra
_addiu sp,sp,0x50
lw v1,0x8(a1)
li v0,0x1
beq v1,v0,0x00157dc4
_nop
blez a3,0x00157504
_lw v0,-0x7fcc(gp)
or t1,zero,zero
lui t3,0x8000
li t2,0x1
b 0x001575ac
_lwc1 f2,-0x51e0(v0)
trunc.w.S f0,f0
mfc1 v0,f0
srl a1,v0,0x18
ext a0,v0,0x10,0x8
ext v1,v0,0x8,0x8
andi v0,v0,0xff
beq a3,t2,0x00157db0
_addiu a2,s0,0x4
sb a1,0x0(s0)
sb a0,0x1(s0)
sb v1,0x2(s0)
sb v0,0x3(s0)
lw v0,0x2c0(s1)
addiu t1,t1,0x1
lw s0,0x28(s2)
sll v0,v0,0x2
addu s0,a2,s0
beq t1,s5,0x00157504
_addu s3,s3,v0
lw a2,0x2d0(s1)
or v0,zero,zero
or v1,zero,zero
lw a3,0x44(s2)
or a0,zero,zero
lw t0,0x40(a2)
beq t0,zero,0x00157578
_or a1,zero,zero
lw v0,0x44(a2)
sll v0,v0,0x2
addu v0,s3,v0
lwc1 f0,0x0(v0)
c.le.S f2,f0
bc1f 0x6,0x00157560
_nop
sub.S S f0,f0,f2
trunc.w.S f0,f0
mfc1 v0,f0
b 0x00157568
_or v0,v0,t3
blez a3,0x00157504
_lw v0,-0x7fcc(gp)
or a0,zero,zero
lui a2,0x8000
lwc1 f2,-0x51e0(v0)
lw v1,0x2d0(s1)
lw a1,0x40(v1)
beq a1,zero,0x00157648
_or v0,zero,zero
lw v0,0x44(v1)
sll v0,v0,0x2
addu v0,s3,v0
lwc1 f0,0x0(v0)
c.le.S f2,f0
bc1t 0x4,0x001577e0
_nop
trunc.w.S f0,f0
mfc1 v0,f0
andi v0,v0,0xff
sb v0,0x0(s0)
addiu a0,a0,0x1
lw v1,0x2c0(s1)
lw v0,0x28(s2)
sll v1,v1,0x2
addiu v0,v0,0x1
addu s3,s3,v1
bne a0,s5,0x00157610
_addu s0,s0,v0
b 0x00157508
_lw ra,0x4c(sp)
li v0,0x1
beq s8,v0,0x0015789c
_li v0,0x4
bne s8,v0,0x001573a8
_addiu v0,a3,-0x1
blez v0,0x00157754
_nop
lw v0,-0x7fcc(gp)
addiu a0,a3,-0x2
lui a1,0x8000
srl a0,a0,0x1
lwc1 f2,-0x51e0(v0)
addiu a0,a0,0x1
addu a0,s0,a0
mov.S f4,f2
lw v0,0x2d0(s1)
lw v1,0x40(v0)
beq v1,zero,0x001577ac
_nop
lw v0,0x44(v0)
sll v0,v0,0x2
addu v0,s3,v0
lwc1 f0,0x0(v0)
c.le.S f2,f0
bc1t 0x1,0x001577cc
_nop
trunc.w.S f0,f0
mfc1 v0,f0
andi v0,v0,0xff
sll v0,v0,0x4
andi v1,v0,0xff
seb v0,v0
sb v1,0x0(s0)
lw a2,0x2d0(s1)
lw v1,0x2c0(s1)
lw a3,0x40(a2)
sll v1,v1,0x2
beq a3,zero,0x0015773c
_addu s3,s3,v1
lw v1,0x44(a2)
sll v1,v1,0x2
addu v1,s3,v1
lwc1 f0,0x0(v1)
c.le.S f4,f0
bc1t 0x2,0x001577b8
_nop
trunc.w.S f0,f0
mfc1 v1,f0
andi v1,v1,0xf
or v0,v0,v1
sb v0,0x0(s0)
addiu s0,s0,0x1
lw v0,0x2c0(s1)
sll v0,v0,0x2
bne s0,a0,0x001576b0
_addu s3,s3,v0
andi s5,s5,0x1
beq s5,zero,0x00157508
_lw ra,0x4c(sp)
lw v0,0x2d0(s1)
lw v1,0x40(v0)
beq v1,zero,0x00157f04
_nop
lw v1,0x44(v0)
lw v0,-0x7fcc(gp)
sll v1,v1,0x2
lwc1 f2,-0x51e0(v0)
addu s3,s3,v1
lwc1 f0,0x0(s3)
c.le.S f2,f0
bc1t 0x3,0x00157f10
_lui v1,0x8000
trunc.w.S f0,f0
mfc1 v0,f0
sll v0,v0,0x4
andi v0,v0,0xf0
b 0x00157504
_sb v0,0x0(s0)
or v0,zero,zero
b 0x001576f4
_or v1,zero,zero
sub.S S f0,f0,f4
trunc.w.S f0,f0
mfc1 v1,f0
b 0x00157734
_or v1,v1,a1
sub.S S f0,f0,f2
trunc.w.S f0,f0
mfc1 v0,f0
b 0x001576e4
_or v0,v0,a1
sub.S S f0,f0,f2
trunc.w.S f0,f0
mfc1 v0,f0
b 0x00157644
_or v0,v0,a2
lw v1,0x8(a1)
beq v1,v0,0x00157e6c
_nop
blez a3,0x00157504
_lw v0,-0x7fcc(gp)
or v1,zero,zero
lui t1,0x8000
li t0,0x1
b 0x00157840
_lwc1 f2,-0x51e0(v0)
sb a0,0x0(s0)
sb v0,0x1(s0)
lw v0,0x2c0(s1)
addiu v1,v1,0x1
lw s0,0x28(s2)
sll v0,v0,0x2
addu s0,a1,s0
beq v1,s5,0x00157504
_addu s3,s3,v0
lw a1,0x2d0(s1)
or v0,zero,zero
or a0,zero,zero
lw a3,0x40(a1)
beq a3,zero,0x00157888
_lw a2,0x44(s2)
lw v0,0x44(a1)
sll v0,v0,0x2
addu v0,s3,v0
lwc1 f0,0x0(v0)
c.le.S f2,f0
bc1t 0x5,0x00157d9c
_nop
trunc.w.S f0,f0
mfc1 v0,f0
andi v0,v0,0xffff
srl a0,v0,0x8
andi v0,v0,0xff
bne a2,t0,0x0015781c
_addiu a1,s0,0x2
sb v0,0x0(s0)
b 0x00157824
_sb a0,0x1(s0)
slti v0,a3,0x8
bne v0,zero,0x00157c10
_lw v0,-0x7fcc(gp)
addiu a1,a3,-0x8
lui a2,0x8000
srl a1,a1,0x3
lwc1 f2,-0x51e0(v0)
addiu a1,a1,0x1
addu a1,s0,a1
mov.S f16,f2
mov.S f14,f2
mov.S f12,f2
mov.S f10,f2
mov.S f8,f2
mov.S f6,f2
b 0x00157b58
_mov.S f4,f2
lw v0,0x44(v0)
sll v0,v0,0x2
addu v0,s3,v0
lwc1 f0,0x0(v0)
c.le.S f2,f0
bc1t 0x00157bc0
_nop
trunc.w.S f0,f0
mfc1 v1,f0
andi v1,v1,0xff
sll v1,v1,0x7
andi v0,v1,0xff
seb a0,v1
sb v0,0x0(s0)
lw v1,0x2d0(s1)
lw v0,0x2c0(s1)
lw a3,0x40(v1)
sll v0,v0,0x2
beq a3,zero,0x00157960
_addu s3,s3,v0
lw v0,0x44(v1)
sll v0,v0,0x2
addu v0,s3,v0
lwc1 f0,0x0(v0)
c.le.S f16,f0
bc1t 0x1,0x00157bac
_nop
trunc.w.S f0,f0
mfc1 v0,f0
sll v0,v0,0x6
andi v0,v0,0x40
or a0,a0,v0
andi v1,a0,0xff
sb v1,0x0(s0)
lw a3,0x2d0(s1)
lw v0,0x2c0(s1)
lw t0,0x40(a3)
sll v0,v0,0x2
beq t0,zero,0x001579b8
_addu s3,s3,v0
lw v0,0x44(a3)
sll v0,v0,0x2
addu v0,s3,v0
lwc1 f0,0x0(v0)
c.le.S f14,f0
bc1t 0x2,0x00157bd4
_nop
trunc.w.S f0,f0
mfc1 v0,f0
sll v0,v0,0x5
andi v0,v0,0x20
or a0,a0,v0
andi v1,a0,0xff
sb v1,0x0(s0)
lw a3,0x2d0(s1)
lw v0,0x2c0(s1)
lw t0,0x40(a3)
sll v0,v0,0x2
beq t0,zero,0x00157a04
_addu s3,s3,v0
lw v0,0x44(a3)
sll v0,v0,0x2
addu v0,s3,v0
lwc1 f0,0x0(v0)
c.le.S f12,f0
bc1t 0x3,0x00157be8
_nop
trunc.w.S f0,f0
mfc1 v0,f0
sll v0,v0,0x4
andi v0,v0,0x10
or a0,a0,v0
andi v1,a0,0xff
sb v1,0x0(s0)
lw a3,0x2d0(s1)
lw v0,0x2c0(s1)
lw t0,0x40(a3)
sll v0,v0,0x2
beq t0,zero,0x00157a58
_addu s3,s3,v0
lw v0,0x44(a3)
sll v0,v0,0x2
addu v0,s3,v0
lwc1 f0,0x0(v0)
c.le.S f10,f0
bc1t 0x4,0x00157bfc
_nop
trunc.w.S f0,f0
mfc1 v0,f0
sll v0,v0,0x3
andi v0,v0,0x8
or a0,a0,v0
andi v1,a0,0xff
sb v1,0x0(s0)
lw a3,0x2d0(s1)
lw v0,0x2c0(s1)
lw t0,0x40(a3)
sll v0,v0,0x2
beq t0,zero,0x00157aa4
_addu s3,s3,v0
lw v0,0x44(a3)
sll v0,v0,0x2
addu v0,s3,v0
lwc1 f0,0x0(v0)
c.le.S f8,f0
bc1t 0x5,0x00157b70
_nop
trunc.w.S f0,f0
mfc1 v0,f0
sll v0,v0,0x2
andi v0,v0,0x4
or a0,a0,v0
andi v1,a0,0xff
sb v1,0x0(s0)
lw a3,0x2d0(s1)
lw v0,0x2c0(s1)
lw t0,0x40(a3)
sll v0,v0,0x2
beq t0,zero,0x00157af8
_addu s3,s3,v0
lw v0,0x44(a3)
sll v0,v0,0x2
addu v0,s3,v0
lwc1 f0,0x0(v0)
c.le.S f6,f0
bc1t 0x6,0x00157b84
_nop
trunc.w.S f0,f0
mfc1 v0,f0
sll v0,v0,0x1
andi v0,v0,0x2
or a0,a0,v0
andi v1,a0,0xff
sb v1,0x0(s0)
lw a3,0x2d0(s1)
lw v0,0x2c0(s1)
lw t0,0x40(a3)
sll v0,v0,0x2
beq t0,zero,0x00157b40
_addu v0,s3,v0
lw v1,0x44(a3)
sll v1,v1,0x2
addu v1,v0,v1
lwc1 f0,0x0(v1)
c.le.S f4,f0
bc1t 0x7,0x00157b98
_nop
trunc.w.S f0,f0
mfc1 v1,f0
andi v1,v1,0x1
or v1,a0,v1
andi v1,v1,0xff
sb v1,0x0(s0)
addiu s0,s0,0x1
lw s3,0x2c0(s1)
sll s3,s3,0x2
beq s0,a1,0x00157c10
_addu s3,v0,s3
lw v0,0x2d0(s1)
lw v1,0x40(v0)
bne v1,zero,0x001578e0
_or a0,zero,zero
b 0x00157914
_or v0,zero,zero
sub.S S f0,f0,f8
trunc.w.S f0,f0
mfc1 v0,f0
b 0x00157a94
_or v0,v0,a2
sub.S S f0,f0,f6
trunc.w.S f0,f0
mfc1 v0,f0
b 0x00157ae4
_or v0,v0,a2
sub.S S f0,f0,f4
trunc.w.S f0,f0
mfc1 v1,f0
b 0x00157b34
_or v1,v1,a2
sub.S S f0,f0,f16
trunc.w.S f0,f0
mfc1 v0,f0
b 0x00157954
_or v0,v0,a2
sub.S S f0,f0,f2
trunc.w.S f0,f0
mfc1 v1,f0
b 0x00157904
_or v1,v1,a2
sub.S S f0,f0,f14
trunc.w.S f0,f0
mfc1 v0,f0
b 0x001579a4
_or v0,v0,a2
sub.S S f0,f0,f12
trunc.w.S f0,f0
mfc1 v0,f0
b 0x001579f4
_or v0,v0,a2
sub.S S f0,f0,f10
trunc.w.S f0,f0
mfc1 v0,f0
b 0x00157a44
_or v0,v0,a2
andi v0,s5,0x7
beq v0,zero,0x00157508
_lw ra,0x4c(sp)
beq v0,zero,0x00157504
_sb zero,0x0(s0)
lw v0,-0x7fcc(gp)
nor a2,zero,s5
or a1,zero,zero
li a0,0x7
lwc1 f2,-0x51e0(v0)
lui a3,0x8000
b 0x00157c74
_andi a2,a2,0x7
trunc.w.S f0,f0
mfc1 v0,f0
andi v0,v0,0x1
sllv v0,v0,a0
or a1,v0,a1
andi a1,a1,0xff
sb a1,0x0(s0)
addiu a0,a0,-0x1
lw v1,0x2c0(s1)
sll v1,v1,0x2
beq a0,a2,0x00157504
_addu s3,s3,v1
lw v0,0x2d0(s1)
lw v1,0x40(v0)
beq v1,zero,0x00157c5c
_nop
lw v0,0x44(v0)
sll v0,v0,0x2
addu v0,s3,v0
lwc1 f0,0x0(v0)
c.le.S f2,f0
bc1f 0x00157c44
_nop
sub.S S f0,f0,f2
trunc.w.S f0,f0
mfc1 v0,f0
b 0x00157c4c
_or v0,v0,a3
lw v1,0x8(a1)
li v0,0x1
bne v1,v0,0x001573a8
_nop
blez a3,0x00157504
_or a0,zero,zero
ldc1 f4,0x48(a1)
lw a3,0x44(a1)
li a2,0x1
b 0x00157d1c
_ldc1 f2,0x10(a1)
sb t5,0x0(s0)
sb t4,0x1(s0)
sb t3,0x2(s0)
sb v1,0x3(s0)
sb t2,0x4(s0)
sb t1,0x5(s0)
sb t0,0x6(s0)
sb v0,0x7(s0)
lw v0,0x2c0(s1)
addiu a0,a0,0x1
lw s0,0x28(s2)
sll v0,v0,0x2
addu s0,a1,s0
beq a0,s5,0x00157504
_addu s3,s3,v0
mtc1 zero,f0
lw v0,0x2d0(s1)
lw v1,0x40(v0)
beq v1,zero,0x00157d44
_mthc1 zero,f0
lw v0,0x44(v0)
sll v0,v0,0x2
addu v0,s3,v0
lwc1 f0,0x0(v0)
cvt.d.S f0,f0
addiu a1,s0,0x8
madd.D f0,f2,f4,f0
mfc1 v1,f0
mfhc1 v0,f0
andi t5,v1,0xff
ext t4,v1,0x8,0x8
ext t3,v1,0x10,0x8
andi t2,v0,0xff
ext t1,v0,0x8,0x8
ext t0,v0,0x10,0x8
ext v1,v1,0x18,0x8
bne a3,a2,0x00157ce0
_ext v0,v0,0x18,0x8
sb t0,0x1(s0)
sb v0,0x0(s0)
sb t1,0x2(s0)
sb t2,0x3(s0)
sb v1,0x4(s0)
sb t3,0x5(s0)
sb t4,0x6(s0)
b 0x00157d00
_sb t5,0x7(s0)
sub.S S f0,f0,f2
trunc.w.S f0,f0
mfc1 v0,f0
b 0x0015787c
_or v0,v0,t1
sb v0,0x0(s0)
sb v1,0x1(s0)
sb a0,0x2(s0)
b 0x00157590
_sb a1,0x3(s0)
blez a3,0x00157504
_or v1,zero,zero
ldc1 f4,0x48(a1)
lw t0,0x44(a1)
li a3,0x1
b 0x00157e0c
_ldc1 f2,0x10(a1)
sb t1,0x0(s0)
sb a2,0x1(s0)
sb a1,0x2(s0)
sb v0,0x3(s0)
lw v0,0x2c0(s1)
addiu v1,v1,0x1
lw s0,0x28(s2)
sll v0,v0,0x2
addu s0,a0,s0
beq v1,s5,0x00157504
_addu s3,s3,v0
mtc1 zero,f0
lw v0,0x2d0(s1)
lw a0,0x40(v0)
beq a0,zero,0x00157e34
_mthc1 zero,f0
lw v0,0x44(v0)
sll v0,v0,0x2
addu v0,s3,v0
lwc1 f0,0x0(v0)
cvt.d.S f0,f0
addiu a0,s0,0x4
madd.D f0,f2,f4,f0
cvt.s.D f0,f0
mfc1 v0,f0
andi t1,v0,0xff
ext a2,v0,0x8,0x8
ext a1,v0,0x10,0x8
bne t0,a3,0x00157de0
_ext v0,v0,0x18,0x8
sb a1,0x1(s0)
sb v0,0x0(s0)
sb a2,0x2(s0)
b 0x00157df0
_sb t1,0x3(s0)
blez a3,0x00157504
_lw v0,-0x7fd0(gp)
or t0,zero,zero
lw t9,-0x7d54(gp)
li t1,0x1
ldc1 f0,0x1440(v0)
b 0x00157eb0
_addiu t9,t9,0x5b60
sb a0,0x0(s0)
sb v0,0x1(s0)
lw v0,0x2c0(s1)
addiu t0,t0,0x1
lw s0,0x28(s2)
sll v0,v0,0x2
addu s0,v1,s0
beq t0,s5,0x00157504
_addu s3,s3,v0
lw v0,0x2d0(s1)
mtc1 zero,f12
lw v1,0x40(v0)
beq v1,zero,0x00157ee0
_lw t2,0x44(s2)
lw v0,0x44(v0)
sll v0,v0,0x2
addu v0,s3,v0
lwc1 f12,0x0(v0)
cvt.d.S f12,f12
mul.D f12,f12,f0
cvt.s.D f12,f12
bal 0x00155b60
_nop
addiu v1,s0,0x2
ext a0,v0,0x8,0x8
bne t2,t1,0x00157e8c
_andi v0,v0,0xff
sb v0,0x0(s0)
b 0x00157e94
_sb a0,0x1(s0)
or v0,zero,zero
b 0x00157504
_sb v0,0x0(s0)
sub.S S f0,f0,f2
trunc.w.S f0,f0
mfc1 v0,f0
or v0,v0,v1
sll v0,v0,0x4
b 0x001577a4
_andi v0,v0,0xf0
(translation_unit "void FUN_0015731c(ulonglong param_1,int *param_2,uint *param_3,undefined4 param_4,uint param_5,\n                 int param_6,byte *param_7,undefined4 param_8)\n\n{\n  int iVar1;\n  byte bVar3;\n  undefined2 uVar2;\n  byte bVar4;\n  byte *pbVar5;\n  byte bVar6;\n  uint uVar7;\n  byte bVar8;\n  uint uVar9;\n  byte bVar10;\n  uint uVar11;\n  uint uVar12;\n  byte bVar13;\n  uint uVar14;\n  byte bVar15;\n  uint uVar16;\n  uint uVar17;\n  float fVar20;\n  double dVar18;\n  double dVar19;\n  double extraout_f0_1;\n  float fVar21;\n  double dVar22;\n  undefined8 uVar23;\n  \n  if (*param_2 == 2) {\n    uVar17 = *param_3;\n    if (uVar17 == 8) {\n      if (0 < (int)param_5) {\n        uVar17 = 0;\n        fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n        do {\n          bVar3 = 0;\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar20 < fVar21) {\n              bVar3 = (byte)(int)fVar20;\n            }\n            else {\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }\n          }\n          *param_7 = bVar3;\n          uVar17 = uVar17 + 1;\n          param_6 = param_6 + param_2[0xb0] * 4;\n          param_7 = param_7 + param_3[10] + 1;\n        } while (uVar17 != param_5);\n      }\n    }\n    else {\n      if (uVar17 < 9) {\n        if (uVar17 == 1) {\n          if (7 < (int)param_5) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;\n            do {\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          *param_7 = 0;\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          uVar16 = 0;\n          uVar17 = 7;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }\n            *param_7 = (byte)uVar16;\n            uVar17 = uVar17 - 1;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != (~param_5 & 7));\n          return;\n        }\n        if (uVar17 == 4) {\n          if (0 < (int)(param_5 - 1)) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;\n            do {\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 1) == 0) {\n            return;\n          }\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }\n            else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }\n            *param_7 = bVar3;\n            return;\n          }\n          *param_7 = 0;\n          return;\n        }\n      }\n      else {\n        if (uVar17 == 0x20) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar4 = 0;\n            bVar6 = 0;\n            bVar3 = 0;\n            bVar8 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 4;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n        if (uVar17 == 0x40) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n        }\n        else if (uVar17 == 0x10) {\n          if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n      }\n      uVar16 = 0;\n      if (0 < (int)param_5) {\n        iVar1 = param_2[0xb4];\n        if (*(int *)(iVar1 + 0x40) == 0) goto LAB_001574b0;\n        do {\n          uVar23 = (*(code *)PTR_FUN_003a8a80)\n                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4));\n          while( true ) {\n            uVar12 = (uint)((ulonglong)uVar23 >> 0x20);\n            if (param_3[0x15] == 0) {\n              param_3[0x15] = 8;\n            }\n            if (0 < (int)uVar17) {\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }\n            uVar16 = uVar16 + 1;\n            param_7 = param_7 + param_3[10];\n            param_6 = param_6 + param_2[0xb0] * 4;\n            if (uVar16 == param_5) {\n              return;\n            }\n            iVar1 = param_2[0xb4];\n            uVar17 = *param_3;\n            if (*(int *)(iVar1 + 0x40) != 0) break;\nLAB_001574b0:\n            uVar23 = 0;\n          }\n        } while( true );\n      }\n    }\n  }\n  else {\n    (*(code *)PTR_ThrowMagickException_003a8f20)\n              (param_8,PTR_s_courses_003a88ec + -0x7af0,PTR_s_courses_003a88ec + -0x768c,0x9d8,0x1d1\n               ,PTR_s_courses_003a88ec + -0x7ad4,PTR_LAB_003a88e0 + 0x3e28,param_2 + 0xd0);\n  }\n  return;\n}\n\n" (function_definition "void FUN_0015731c(ulonglong param_1,int *param_2,uint *param_3,undefined4 param_4,uint param_5,\n                 int param_6,byte *param_7,undefined4 param_8)\n\n{\n  int iVar1;\n  byte bVar3;\n  undefined2 uVar2;\n  byte bVar4;\n  byte *pbVar5;\n  byte bVar6;\n  uint uVar7;\n  byte bVar8;\n  uint uVar9;\n  byte bVar10;\n  uint uVar11;\n  uint uVar12;\n  byte bVar13;\n  uint uVar14;\n  byte bVar15;\n  uint uVar16;\n  uint uVar17;\n  float fVar20;\n  double dVar18;\n  double dVar19;\n  double extraout_f0_1;\n  float fVar21;\n  double dVar22;\n  undefined8 uVar23;\n  \n  if (*param_2 == 2) {\n    uVar17 = *param_3;\n    if (uVar17 == 8) {\n      if (0 < (int)param_5) {\n        uVar17 = 0;\n        fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n        do {\n          bVar3 = 0;\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar20 < fVar21) {\n              bVar3 = (byte)(int)fVar20;\n            }\n            else {\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }\n          }\n          *param_7 = bVar3;\n          uVar17 = uVar17 + 1;\n          param_6 = param_6 + param_2[0xb0] * 4;\n          param_7 = param_7 + param_3[10] + 1;\n        } while (uVar17 != param_5);\n      }\n    }\n    else {\n      if (uVar17 < 9) {\n        if (uVar17 == 1) {\n          if (7 < (int)param_5) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;\n            do {\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          *param_7 = 0;\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          uVar16 = 0;\n          uVar17 = 7;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }\n            *param_7 = (byte)uVar16;\n            uVar17 = uVar17 - 1;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != (~param_5 & 7));\n          return;\n        }\n        if (uVar17 == 4) {\n          if (0 < (int)(param_5 - 1)) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;\n            do {\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 1) == 0) {\n            return;\n          }\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }\n            else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }\n            *param_7 = bVar3;\n            return;\n          }\n          *param_7 = 0;\n          return;\n        }\n      }\n      else {\n        if (uVar17 == 0x20) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar4 = 0;\n            bVar6 = 0;\n            bVar3 = 0;\n            bVar8 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 4;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n        if (uVar17 == 0x40) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n        }\n        else if (uVar17 == 0x10) {\n          if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n      }\n      uVar16 = 0;\n      if (0 < (int)param_5) {\n        iVar1 = param_2[0xb4];\n        if (*(int *)(iVar1 + 0x40) == 0) goto LAB_001574b0;\n        do {\n          uVar23 = (*(code *)PTR_FUN_003a8a80)\n                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4));\n          while( true ) {\n            uVar12 = (uint)((ulonglong)uVar23 >> 0x20);\n            if (param_3[0x15] == 0) {\n              param_3[0x15] = 8;\n            }\n            if (0 < (int)uVar17) {\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }\n            uVar16 = uVar16 + 1;\n            param_7 = param_7 + param_3[10];\n            param_6 = param_6 + param_2[0xb0] * 4;\n            if (uVar16 == param_5) {\n              return;\n            }\n            iVar1 = param_2[0xb4];\n            uVar17 = *param_3;\n            if (*(int *)(iVar1 + 0x40) != 0) break;\nLAB_001574b0:\n            uVar23 = 0;\n          }\n        } while( true );\n      }\n    }\n  }\n  else {\n    (*(code *)PTR_ThrowMagickException_003a8f20)\n              (param_8,PTR_s_courses_003a88ec + -0x7af0,PTR_s_courses_003a88ec + -0x768c,0x9d8,0x1d1\n               ,PTR_s_courses_003a88ec + -0x7ad4,PTR_LAB_003a88e0 + 0x3e28,param_2 + 0xd0);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_0015731c(ulonglong param_1,int *param_2,uint *param_3,undefined4 param_4,uint param_5,\n                 int param_6,byte *param_7,undefined4 param_8)" identifier (parameter_list "(ulonglong param_1,int *param_2,uint *param_3,undefined4 param_4,uint param_5,\n                 int param_6,byte *param_7,undefined4 param_8)" ( (parameter_declaration "ulonglong param_1" type_identifier identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "uint param_5" type_identifier identifier) , (parameter_declaration "int param_6" primitive_type identifier) , (parameter_declaration "byte *param_7" type_identifier (pointer_declarator "*param_7" * identifier)) , (parameter_declaration "undefined4 param_8" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  byte bVar3;\n  undefined2 uVar2;\n  byte bVar4;\n  byte *pbVar5;\n  byte bVar6;\n  uint uVar7;\n  byte bVar8;\n  uint uVar9;\n  byte bVar10;\n  uint uVar11;\n  uint uVar12;\n  byte bVar13;\n  uint uVar14;\n  byte bVar15;\n  uint uVar16;\n  uint uVar17;\n  float fVar20;\n  double dVar18;\n  double dVar19;\n  double extraout_f0_1;\n  float fVar21;\n  double dVar22;\n  undefined8 uVar23;\n  \n  if (*param_2 == 2) {\n    uVar17 = *param_3;\n    if (uVar17 == 8) {\n      if (0 < (int)param_5) {\n        uVar17 = 0;\n        fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n        do {\n          bVar3 = 0;\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar20 < fVar21) {\n              bVar3 = (byte)(int)fVar20;\n            }\n            else {\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }\n          }\n          *param_7 = bVar3;\n          uVar17 = uVar17 + 1;\n          param_6 = param_6 + param_2[0xb0] * 4;\n          param_7 = param_7 + param_3[10] + 1;\n        } while (uVar17 != param_5);\n      }\n    }\n    else {\n      if (uVar17 < 9) {\n        if (uVar17 == 1) {\n          if (7 < (int)param_5) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;\n            do {\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          *param_7 = 0;\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          uVar16 = 0;\n          uVar17 = 7;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }\n            *param_7 = (byte)uVar16;\n            uVar17 = uVar17 - 1;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != (~param_5 & 7));\n          return;\n        }\n        if (uVar17 == 4) {\n          if (0 < (int)(param_5 - 1)) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;\n            do {\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 1) == 0) {\n            return;\n          }\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }\n            else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }\n            *param_7 = bVar3;\n            return;\n          }\n          *param_7 = 0;\n          return;\n        }\n      }\n      else {\n        if (uVar17 == 0x20) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar4 = 0;\n            bVar6 = 0;\n            bVar3 = 0;\n            bVar8 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 4;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n        if (uVar17 == 0x40) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n        }\n        else if (uVar17 == 0x10) {\n          if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n      }\n      uVar16 = 0;\n      if (0 < (int)param_5) {\n        iVar1 = param_2[0xb4];\n        if (*(int *)(iVar1 + 0x40) == 0) goto LAB_001574b0;\n        do {\n          uVar23 = (*(code *)PTR_FUN_003a8a80)\n                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4));\n          while( true ) {\n            uVar12 = (uint)((ulonglong)uVar23 >> 0x20);\n            if (param_3[0x15] == 0) {\n              param_3[0x15] = 8;\n            }\n            if (0 < (int)uVar17) {\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }\n            uVar16 = uVar16 + 1;\n            param_7 = param_7 + param_3[10];\n            param_6 = param_6 + param_2[0xb0] * 4;\n            if (uVar16 == param_5) {\n              return;\n            }\n            iVar1 = param_2[0xb4];\n            uVar17 = *param_3;\n            if (*(int *)(iVar1 + 0x40) != 0) break;\nLAB_001574b0:\n            uVar23 = 0;\n          }\n        } while( true );\n      }\n    }\n  }\n  else {\n    (*(code *)PTR_ThrowMagickException_003a8f20)\n              (param_8,PTR_s_courses_003a88ec + -0x7af0,PTR_s_courses_003a88ec + -0x768c,0x9d8,0x1d1\n               ,PTR_s_courses_003a88ec + -0x7ad4,PTR_LAB_003a88e0 + 0x3e28,param_2 + 0xd0);\n  }\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "undefined2 uVar2;" type_identifier identifier ;) (declaration "byte bVar4;" type_identifier identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "byte bVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "byte bVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "byte bVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "byte bVar13;" type_identifier identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "byte bVar15;" type_identifier identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "float fVar20;" primitive_type identifier ;) (declaration "double dVar18;" primitive_type identifier ;) (declaration "double dVar19;" primitive_type identifier ;) (declaration "double extraout_f0_1;" primitive_type identifier ;) (declaration "float fVar21;" primitive_type identifier ;) (declaration "double dVar22;" primitive_type identifier ;) (declaration "undefined8 uVar23;" type_identifier identifier ;) (if_statement "if (*param_2 == 2) {\n    uVar17 = *param_3;\n    if (uVar17 == 8) {\n      if (0 < (int)param_5) {\n        uVar17 = 0;\n        fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n        do {\n          bVar3 = 0;\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar20 < fVar21) {\n              bVar3 = (byte)(int)fVar20;\n            }\n            else {\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }\n          }\n          *param_7 = bVar3;\n          uVar17 = uVar17 + 1;\n          param_6 = param_6 + param_2[0xb0] * 4;\n          param_7 = param_7 + param_3[10] + 1;\n        } while (uVar17 != param_5);\n      }\n    }\n    else {\n      if (uVar17 < 9) {\n        if (uVar17 == 1) {\n          if (7 < (int)param_5) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;\n            do {\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          *param_7 = 0;\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          uVar16 = 0;\n          uVar17 = 7;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }\n            *param_7 = (byte)uVar16;\n            uVar17 = uVar17 - 1;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != (~param_5 & 7));\n          return;\n        }\n        if (uVar17 == 4) {\n          if (0 < (int)(param_5 - 1)) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;\n            do {\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 1) == 0) {\n            return;\n          }\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }\n            else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }\n            *param_7 = bVar3;\n            return;\n          }\n          *param_7 = 0;\n          return;\n        }\n      }\n      else {\n        if (uVar17 == 0x20) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar4 = 0;\n            bVar6 = 0;\n            bVar3 = 0;\n            bVar8 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 4;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n        if (uVar17 == 0x40) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n        }\n        else if (uVar17 == 0x10) {\n          if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n      }\n      uVar16 = 0;\n      if (0 < (int)param_5) {\n        iVar1 = param_2[0xb4];\n        if (*(int *)(iVar1 + 0x40) == 0) goto LAB_001574b0;\n        do {\n          uVar23 = (*(code *)PTR_FUN_003a8a80)\n                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4));\n          while( true ) {\n            uVar12 = (uint)((ulonglong)uVar23 >> 0x20);\n            if (param_3[0x15] == 0) {\n              param_3[0x15] = 8;\n            }\n            if (0 < (int)uVar17) {\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }\n            uVar16 = uVar16 + 1;\n            param_7 = param_7 + param_3[10];\n            param_6 = param_6 + param_2[0xb0] * 4;\n            if (uVar16 == param_5) {\n              return;\n            }\n            iVar1 = param_2[0xb4];\n            uVar17 = *param_3;\n            if (*(int *)(iVar1 + 0x40) != 0) break;\nLAB_001574b0:\n            uVar23 = 0;\n          }\n        } while( true );\n      }\n    }\n  }\n  else {\n    (*(code *)PTR_ThrowMagickException_003a8f20)\n              (param_8,PTR_s_courses_003a88ec + -0x7af0,PTR_s_courses_003a88ec + -0x768c,0x9d8,0x1d1\n               ,PTR_s_courses_003a88ec + -0x7ad4,PTR_LAB_003a88e0 + 0x3e28,param_2 + 0xd0);\n  }" if (parenthesized_expression "(*param_2 == 2)" ( (binary_expression "*param_2 == 2" (pointer_expression "*param_2" * identifier) == number_literal) )) (compound_statement "{\n    uVar17 = *param_3;\n    if (uVar17 == 8) {\n      if (0 < (int)param_5) {\n        uVar17 = 0;\n        fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n        do {\n          bVar3 = 0;\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar20 < fVar21) {\n              bVar3 = (byte)(int)fVar20;\n            }\n            else {\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }\n          }\n          *param_7 = bVar3;\n          uVar17 = uVar17 + 1;\n          param_6 = param_6 + param_2[0xb0] * 4;\n          param_7 = param_7 + param_3[10] + 1;\n        } while (uVar17 != param_5);\n      }\n    }\n    else {\n      if (uVar17 < 9) {\n        if (uVar17 == 1) {\n          if (7 < (int)param_5) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;\n            do {\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          *param_7 = 0;\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          uVar16 = 0;\n          uVar17 = 7;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }\n            *param_7 = (byte)uVar16;\n            uVar17 = uVar17 - 1;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != (~param_5 & 7));\n          return;\n        }\n        if (uVar17 == 4) {\n          if (0 < (int)(param_5 - 1)) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;\n            do {\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 1) == 0) {\n            return;\n          }\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }\n            else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }\n            *param_7 = bVar3;\n            return;\n          }\n          *param_7 = 0;\n          return;\n        }\n      }\n      else {\n        if (uVar17 == 0x20) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar4 = 0;\n            bVar6 = 0;\n            bVar3 = 0;\n            bVar8 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 4;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n        if (uVar17 == 0x40) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n        }\n        else if (uVar17 == 0x10) {\n          if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n      }\n      uVar16 = 0;\n      if (0 < (int)param_5) {\n        iVar1 = param_2[0xb4];\n        if (*(int *)(iVar1 + 0x40) == 0) goto LAB_001574b0;\n        do {\n          uVar23 = (*(code *)PTR_FUN_003a8a80)\n                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4));\n          while( true ) {\n            uVar12 = (uint)((ulonglong)uVar23 >> 0x20);\n            if (param_3[0x15] == 0) {\n              param_3[0x15] = 8;\n            }\n            if (0 < (int)uVar17) {\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }\n            uVar16 = uVar16 + 1;\n            param_7 = param_7 + param_3[10];\n            param_6 = param_6 + param_2[0xb0] * 4;\n            if (uVar16 == param_5) {\n              return;\n            }\n            iVar1 = param_2[0xb4];\n            uVar17 = *param_3;\n            if (*(int *)(iVar1 + 0x40) != 0) break;\nLAB_001574b0:\n            uVar23 = 0;\n          }\n        } while( true );\n      }\n    }\n  }" { (expression_statement "uVar17 = *param_3;" (assignment_expression "uVar17 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (if_statement "if (uVar17 == 8) {\n      if (0 < (int)param_5) {\n        uVar17 = 0;\n        fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n        do {\n          bVar3 = 0;\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar20 < fVar21) {\n              bVar3 = (byte)(int)fVar20;\n            }\n            else {\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }\n          }\n          *param_7 = bVar3;\n          uVar17 = uVar17 + 1;\n          param_6 = param_6 + param_2[0xb0] * 4;\n          param_7 = param_7 + param_3[10] + 1;\n        } while (uVar17 != param_5);\n      }\n    }\n    else {\n      if (uVar17 < 9) {\n        if (uVar17 == 1) {\n          if (7 < (int)param_5) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;\n            do {\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          *param_7 = 0;\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          uVar16 = 0;\n          uVar17 = 7;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }\n            *param_7 = (byte)uVar16;\n            uVar17 = uVar17 - 1;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != (~param_5 & 7));\n          return;\n        }\n        if (uVar17 == 4) {\n          if (0 < (int)(param_5 - 1)) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;\n            do {\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 1) == 0) {\n            return;\n          }\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }\n            else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }\n            *param_7 = bVar3;\n            return;\n          }\n          *param_7 = 0;\n          return;\n        }\n      }\n      else {\n        if (uVar17 == 0x20) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar4 = 0;\n            bVar6 = 0;\n            bVar3 = 0;\n            bVar8 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 4;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n        if (uVar17 == 0x40) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n        }\n        else if (uVar17 == 0x10) {\n          if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n      }\n      uVar16 = 0;\n      if (0 < (int)param_5) {\n        iVar1 = param_2[0xb4];\n        if (*(int *)(iVar1 + 0x40) == 0) goto LAB_001574b0;\n        do {\n          uVar23 = (*(code *)PTR_FUN_003a8a80)\n                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4));\n          while( true ) {\n            uVar12 = (uint)((ulonglong)uVar23 >> 0x20);\n            if (param_3[0x15] == 0) {\n              param_3[0x15] = 8;\n            }\n            if (0 < (int)uVar17) {\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }\n            uVar16 = uVar16 + 1;\n            param_7 = param_7 + param_3[10];\n            param_6 = param_6 + param_2[0xb0] * 4;\n            if (uVar16 == param_5) {\n              return;\n            }\n            iVar1 = param_2[0xb4];\n            uVar17 = *param_3;\n            if (*(int *)(iVar1 + 0x40) != 0) break;\nLAB_001574b0:\n            uVar23 = 0;\n          }\n        } while( true );\n      }\n    }" if (parenthesized_expression "(uVar17 == 8)" ( (binary_expression "uVar17 == 8" identifier == number_literal) )) (compound_statement "{\n      if (0 < (int)param_5) {\n        uVar17 = 0;\n        fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n        do {\n          bVar3 = 0;\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar20 < fVar21) {\n              bVar3 = (byte)(int)fVar20;\n            }\n            else {\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }\n          }\n          *param_7 = bVar3;\n          uVar17 = uVar17 + 1;\n          param_6 = param_6 + param_2[0xb0] * 4;\n          param_7 = param_7 + param_3[10] + 1;\n        } while (uVar17 != param_5);\n      }\n    }" { (if_statement "if (0 < (int)param_5) {\n        uVar17 = 0;\n        fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n        do {\n          bVar3 = 0;\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar20 < fVar21) {\n              bVar3 = (byte)(int)fVar20;\n            }\n            else {\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }\n          }\n          *param_7 = bVar3;\n          uVar17 = uVar17 + 1;\n          param_6 = param_6 + param_2[0xb0] * 4;\n          param_7 = param_7 + param_3[10] + 1;\n        } while (uVar17 != param_5);\n      }" if (parenthesized_expression "(0 < (int)param_5)" ( (binary_expression "0 < (int)param_5" number_literal < (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        uVar17 = 0;\n        fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n        do {\n          bVar3 = 0;\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar20 < fVar21) {\n              bVar3 = (byte)(int)fVar20;\n            }\n            else {\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }\n          }\n          *param_7 = bVar3;\n          uVar17 = uVar17 + 1;\n          param_6 = param_6 + param_2[0xb0] * 4;\n          param_7 = param_7 + param_3[10] + 1;\n        } while (uVar17 != param_5);\n      }" { (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (expression_statement "fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);" (assignment_expression "fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" identifier = (pointer_expression "*(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" * (cast_expression "(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (binary_expression "PTR_s_t_to_left_003a88e4 + -0x51e0" identifier + number_literal) ))))) ;) (do_statement "do {\n          bVar3 = 0;\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar20 < fVar21) {\n              bVar3 = (byte)(int)fVar20;\n            }\n            else {\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }\n          }\n          *param_7 = bVar3;\n          uVar17 = uVar17 + 1;\n          param_6 = param_6 + param_2[0xb0] * 4;\n          param_7 = param_7 + param_3[10] + 1;\n        } while (uVar17 != param_5);" do (compound_statement "{\n          bVar3 = 0;\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar20 < fVar21) {\n              bVar3 = (byte)(int)fVar20;\n            }\n            else {\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }\n          }\n          *param_7 = bVar3;\n          uVar17 = uVar17 + 1;\n          param_6 = param_6 + param_2[0xb0] * 4;\n          param_7 = param_7 + param_3[10] + 1;\n        }" { (expression_statement "bVar3 = 0;" (assignment_expression "bVar3 = 0" identifier = number_literal) ;) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar20 < fVar21) {\n              bVar3 = (byte)(int)fVar20;\n            }\n            else {\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }\n          }" if (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" ( (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" * (cast_expression "(int *)(param_2[0xb4] + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x40)" ( (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) != number_literal) )) (compound_statement "{\n            fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar20 < fVar21) {\n              bVar3 = (byte)(int)fVar20;\n            }\n            else {\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }\n          }" { (expression_statement "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" identifier = (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" * (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" identifier + (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" * (cast_expression "(int *)(param_2[0xb4] + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x44)" ( (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (fVar20 < fVar21) {\n              bVar3 = (byte)(int)fVar20;\n            }\n            else {\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }" if (parenthesized_expression "(fVar20 < fVar21)" ( (binary_expression "fVar20 < fVar21" identifier < identifier) )) (compound_statement "{\n              bVar3 = (byte)(int)fVar20;\n            }" { (expression_statement "bVar3 = (byte)(int)fVar20;" (assignment_expression "bVar3 = (byte)(int)fVar20" identifier = (cast_expression "(byte)(int)fVar20" ( (type_descriptor "byte" type_identifier) ) (cast_expression "(int)fVar20" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }) (else_clause "else {\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }" else (compound_statement "{\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }" { (expression_statement "bVar3 = (byte)(int)(fVar20 - fVar21);" (assignment_expression "bVar3 = (byte)(int)(fVar20 - fVar21)" identifier = (call_expression "(byte)(int)(fVar20 - fVar21)" (call_expression "(byte)(int)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(int)" ( identifier ))) (argument_list "(fVar20 - fVar21)" ( (binary_expression "fVar20 - fVar21" identifier - identifier) )))) ;) }))) })) (expression_statement "*param_7 = bVar3;" (assignment_expression "*param_7 = bVar3" (pointer_expression "*param_7" * identifier) = identifier) ;) (expression_statement "uVar17 = uVar17 + 1;" (assignment_expression "uVar17 = uVar17 + 1" identifier = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" identifier = (binary_expression "param_6 + param_2[0xb0] * 4" identifier + (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" identifier [ number_literal ]) * number_literal))) ;) (expression_statement "param_7 = param_7 + param_3[10] + 1;" (assignment_expression "param_7 = param_7 + param_3[10] + 1" identifier = (binary_expression "param_7 + param_3[10] + 1" (binary_expression "param_7 + param_3[10]" identifier + (subscript_expression "param_3[10]" identifier [ number_literal ])) + number_literal)) ;) }) while (parenthesized_expression "(uVar17 != param_5)" ( (binary_expression "uVar17 != param_5" identifier != identifier) )) ;) })) }) (else_clause "else {\n      if (uVar17 < 9) {\n        if (uVar17 == 1) {\n          if (7 < (int)param_5) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;\n            do {\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          *param_7 = 0;\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          uVar16 = 0;\n          uVar17 = 7;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }\n            *param_7 = (byte)uVar16;\n            uVar17 = uVar17 - 1;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != (~param_5 & 7));\n          return;\n        }\n        if (uVar17 == 4) {\n          if (0 < (int)(param_5 - 1)) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;\n            do {\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 1) == 0) {\n            return;\n          }\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }\n            else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }\n            *param_7 = bVar3;\n            return;\n          }\n          *param_7 = 0;\n          return;\n        }\n      }\n      else {\n        if (uVar17 == 0x20) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar4 = 0;\n            bVar6 = 0;\n            bVar3 = 0;\n            bVar8 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 4;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n        if (uVar17 == 0x40) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n        }\n        else if (uVar17 == 0x10) {\n          if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n      }\n      uVar16 = 0;\n      if (0 < (int)param_5) {\n        iVar1 = param_2[0xb4];\n        if (*(int *)(iVar1 + 0x40) == 0) goto LAB_001574b0;\n        do {\n          uVar23 = (*(code *)PTR_FUN_003a8a80)\n                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4));\n          while( true ) {\n            uVar12 = (uint)((ulonglong)uVar23 >> 0x20);\n            if (param_3[0x15] == 0) {\n              param_3[0x15] = 8;\n            }\n            if (0 < (int)uVar17) {\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }\n            uVar16 = uVar16 + 1;\n            param_7 = param_7 + param_3[10];\n            param_6 = param_6 + param_2[0xb0] * 4;\n            if (uVar16 == param_5) {\n              return;\n            }\n            iVar1 = param_2[0xb4];\n            uVar17 = *param_3;\n            if (*(int *)(iVar1 + 0x40) != 0) break;\nLAB_001574b0:\n            uVar23 = 0;\n          }\n        } while( true );\n      }\n    }" else (compound_statement "{\n      if (uVar17 < 9) {\n        if (uVar17 == 1) {\n          if (7 < (int)param_5) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;\n            do {\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          *param_7 = 0;\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          uVar16 = 0;\n          uVar17 = 7;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }\n            *param_7 = (byte)uVar16;\n            uVar17 = uVar17 - 1;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != (~param_5 & 7));\n          return;\n        }\n        if (uVar17 == 4) {\n          if (0 < (int)(param_5 - 1)) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;\n            do {\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 1) == 0) {\n            return;\n          }\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }\n            else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }\n            *param_7 = bVar3;\n            return;\n          }\n          *param_7 = 0;\n          return;\n        }\n      }\n      else {\n        if (uVar17 == 0x20) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar4 = 0;\n            bVar6 = 0;\n            bVar3 = 0;\n            bVar8 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 4;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n        if (uVar17 == 0x40) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n        }\n        else if (uVar17 == 0x10) {\n          if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n      }\n      uVar16 = 0;\n      if (0 < (int)param_5) {\n        iVar1 = param_2[0xb4];\n        if (*(int *)(iVar1 + 0x40) == 0) goto LAB_001574b0;\n        do {\n          uVar23 = (*(code *)PTR_FUN_003a8a80)\n                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4));\n          while( true ) {\n            uVar12 = (uint)((ulonglong)uVar23 >> 0x20);\n            if (param_3[0x15] == 0) {\n              param_3[0x15] = 8;\n            }\n            if (0 < (int)uVar17) {\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }\n            uVar16 = uVar16 + 1;\n            param_7 = param_7 + param_3[10];\n            param_6 = param_6 + param_2[0xb0] * 4;\n            if (uVar16 == param_5) {\n              return;\n            }\n            iVar1 = param_2[0xb4];\n            uVar17 = *param_3;\n            if (*(int *)(iVar1 + 0x40) != 0) break;\nLAB_001574b0:\n            uVar23 = 0;\n          }\n        } while( true );\n      }\n    }" { (if_statement "if (uVar17 < 9) {\n        if (uVar17 == 1) {\n          if (7 < (int)param_5) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;\n            do {\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          *param_7 = 0;\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          uVar16 = 0;\n          uVar17 = 7;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }\n            *param_7 = (byte)uVar16;\n            uVar17 = uVar17 - 1;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != (~param_5 & 7));\n          return;\n        }\n        if (uVar17 == 4) {\n          if (0 < (int)(param_5 - 1)) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;\n            do {\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 1) == 0) {\n            return;\n          }\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }\n            else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }\n            *param_7 = bVar3;\n            return;\n          }\n          *param_7 = 0;\n          return;\n        }\n      }\n      else {\n        if (uVar17 == 0x20) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar4 = 0;\n            bVar6 = 0;\n            bVar3 = 0;\n            bVar8 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 4;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n        if (uVar17 == 0x40) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n        }\n        else if (uVar17 == 0x10) {\n          if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n      }" if (parenthesized_expression "(uVar17 < 9)" ( (binary_expression "uVar17 < 9" identifier < number_literal) )) (compound_statement "{\n        if (uVar17 == 1) {\n          if (7 < (int)param_5) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;\n            do {\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          *param_7 = 0;\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          uVar16 = 0;\n          uVar17 = 7;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }\n            *param_7 = (byte)uVar16;\n            uVar17 = uVar17 - 1;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != (~param_5 & 7));\n          return;\n        }\n        if (uVar17 == 4) {\n          if (0 < (int)(param_5 - 1)) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;\n            do {\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 1) == 0) {\n            return;\n          }\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }\n            else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }\n            *param_7 = bVar3;\n            return;\n          }\n          *param_7 = 0;\n          return;\n        }\n      }" { (if_statement "if (uVar17 == 1) {\n          if (7 < (int)param_5) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;\n            do {\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          *param_7 = 0;\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          uVar16 = 0;\n          uVar17 = 7;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }\n            *param_7 = (byte)uVar16;\n            uVar17 = uVar17 - 1;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != (~param_5 & 7));\n          return;\n        }" if (parenthesized_expression "(uVar17 == 1)" ( (binary_expression "uVar17 == 1" identifier == number_literal) )) (compound_statement "{\n          if (7 < (int)param_5) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;\n            do {\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          *param_7 = 0;\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          uVar16 = 0;\n          uVar17 = 7;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }\n            *param_7 = (byte)uVar16;\n            uVar17 = uVar17 - 1;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != (~param_5 & 7));\n          return;\n        }" { (if_statement "if (7 < (int)param_5) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;\n            do {\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }" if (parenthesized_expression "(7 < (int)param_5)" ( (binary_expression "7 < (int)param_5" number_literal < (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;\n            do {\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }" { (expression_statement "fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);" (assignment_expression "fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" identifier = (pointer_expression "*(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" * (cast_expression "(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (binary_expression "PTR_s_t_to_left_003a88e4 + -0x51e0" identifier + number_literal) ))))) ;) (expression_statement "pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;" (assignment_expression "pbVar5 = param_7 + (param_5 - 8 >> 3) + 1" identifier = (binary_expression "param_7 + (param_5 - 8 >> 3) + 1" (binary_expression "param_7 + (param_5 - 8 >> 3)" identifier + (parenthesized_expression "(param_5 - 8 >> 3)" ( (binary_expression "param_5 - 8 >> 3" (binary_expression "param_5 - 8" identifier - number_literal) >> number_literal) ))) + number_literal)) ;) (do_statement "do {\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);" do (compound_statement "{\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            }" { (expression_statement "bVar3 = 0;" (assignment_expression "bVar3 = 0" identifier = number_literal) ;) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }" if (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" ( (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" * (cast_expression "(int *)(param_2[0xb4] + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x40)" ( (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) != number_literal) )) (compound_statement "{\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }" { (expression_statement "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" identifier = (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" * (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" identifier + (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" * (cast_expression "(int *)(param_2[0xb4] + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x44)" ( (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }" if (parenthesized_expression "(fVar21 <= fVar20)" ( (binary_expression "fVar21 <= fVar20" identifier <= identifier) )) (compound_statement "{\n                  fVar20 = fVar20 - fVar21;\n                }" { (expression_statement "fVar20 = fVar20 - fVar21;" (assignment_expression "fVar20 = fVar20 - fVar21" identifier = (binary_expression "fVar20 - fVar21" identifier - identifier)) ;) })) (expression_statement "bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);" (assignment_expression "bVar3 = (byte)(((int)fVar20 & 0xffU) << 7)" identifier = (call_expression "(byte)(((int)fVar20 & 0xffU) << 7)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((int)fVar20 & 0xffU) << 7)" ( (binary_expression "((int)fVar20 & 0xffU) << 7" (parenthesized_expression "((int)fVar20 & 0xffU)" ( (binary_expression "(int)fVar20 & 0xffU" (cast_expression "(int)fVar20" ( (type_descriptor "int" primitive_type) ) identifier) & number_literal) )) << number_literal) )))) ;) })) (expression_statement "*param_7 = bVar3;" (assignment_expression "*param_7 = bVar3" (pointer_expression "*param_7" * identifier) = identifier) ;) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" identifier = (binary_expression "param_6 + param_2[0xb0] * 4" identifier + (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" identifier [ number_literal ]) * number_literal))) ;) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }" if (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" ( (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" * (cast_expression "(int *)(param_2[0xb4] + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x40)" ( (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) != number_literal) )) (compound_statement "{\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }" { (expression_statement "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" identifier = (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" * (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" identifier + (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" * (cast_expression "(int *)(param_2[0xb4] + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x44)" ( (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }" if (parenthesized_expression "(fVar21 <= fVar20)" ( (binary_expression "fVar21 <= fVar20" identifier <= identifier) )) (compound_statement "{\n                  fVar20 = fVar20 - fVar21;\n                }" { (expression_statement "fVar20 = fVar20 - fVar21;" (assignment_expression "fVar20 = fVar20 - fVar21" identifier = (binary_expression "fVar20 - fVar21" identifier - identifier)) ;) })) (expression_statement "bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);" (assignment_expression "bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6)" identifier = (binary_expression "bVar3 | (byte)(((int)fVar20 & 1U) << 6)" identifier | (call_expression "(byte)(((int)fVar20 & 1U) << 6)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((int)fVar20 & 1U) << 6)" ( (binary_expression "((int)fVar20 & 1U) << 6" (parenthesized_expression "((int)fVar20 & 1U)" ( (binary_expression "(int)fVar20 & 1U" (cast_expression "(int)fVar20" ( (type_descriptor "int" primitive_type) ) identifier) & number_literal) )) << number_literal) ))))) ;) })) (expression_statement "*param_7 = bVar3;" (assignment_expression "*param_7 = bVar3" (pointer_expression "*param_7" * identifier) = identifier) ;) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" identifier = (binary_expression "param_6 + param_2[0xb0] * 4" identifier + (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" identifier [ number_literal ]) * number_literal))) ;) (expression_statement "bVar6 = bVar3;" (assignment_expression "bVar6 = bVar3" identifier = identifier) ;) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }" if (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" ( (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" * (cast_expression "(int *)(param_2[0xb4] + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x40)" ( (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) != number_literal) )) (compound_statement "{\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }" { (expression_statement "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" identifier = (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" * (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" identifier + (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" * (cast_expression "(int *)(param_2[0xb4] + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x44)" ( (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }" if (parenthesized_expression "(fVar21 <= fVar20)" ( (binary_expression "fVar21 <= fVar20" identifier <= identifier) )) (compound_statement "{\n                  fVar20 = fVar20 - fVar21;\n                }" { (expression_statement "fVar20 = fVar20 - fVar21;" (assignment_expression "fVar20 = fVar20 - fVar21" identifier = (binary_expression "fVar20 - fVar21" identifier - identifier)) ;) })) (expression_statement "bVar4 = (byte)(((int)fVar20 & 1U) << 5);" (assignment_expression "bVar4 = (byte)(((int)fVar20 & 1U) << 5)" identifier = (call_expression "(byte)(((int)fVar20 & 1U) << 5)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((int)fVar20 & 1U) << 5)" ( (binary_expression "((int)fVar20 & 1U) << 5" (parenthesized_expression "((int)fVar20 & 1U)" ( (binary_expression "(int)fVar20 & 1U" (cast_expression "(int)fVar20" ( (type_descriptor "int" primitive_type) ) identifier) & number_literal) )) << number_literal) )))) ;) (expression_statement "bVar6 = bVar3 | bVar4;" (assignment_expression "bVar6 = bVar3 | bVar4" identifier = (binary_expression "bVar3 | bVar4" identifier | identifier)) ;) (expression_statement "*param_7 = bVar3 | bVar4;" (assignment_expression "*param_7 = bVar3 | bVar4" (pointer_expression "*param_7" * identifier) = (binary_expression "bVar3 | bVar4" identifier | identifier)) ;) })) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" identifier = (binary_expression "param_6 + param_2[0xb0] * 4" identifier + (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" identifier [ number_literal ]) * number_literal))) ;) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }" if (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" ( (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" * (cast_expression "(int *)(param_2[0xb4] + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x40)" ( (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) != number_literal) )) (compound_statement "{\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }" { (expression_statement "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" identifier = (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" * (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" identifier + (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" * (cast_expression "(int *)(param_2[0xb4] + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x44)" ( (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }" if (parenthesized_expression "(fVar21 <= fVar20)" ( (binary_expression "fVar21 <= fVar20" identifier <= identifier) )) (compound_statement "{\n                  fVar20 = fVar20 - fVar21;\n                }" { (expression_statement "fVar20 = fVar20 - fVar21;" (assignment_expression "fVar20 = fVar20 - fVar21" identifier = (binary_expression "fVar20 - fVar21" identifier - identifier)) ;) })) (expression_statement "bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);" (assignment_expression "bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4)" identifier = (binary_expression "bVar6 | (byte)(((int)fVar20 & 1U) << 4)" identifier | (call_expression "(byte)(((int)fVar20 & 1U) << 4)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((int)fVar20 & 1U) << 4)" ( (binary_expression "((int)fVar20 & 1U) << 4" (parenthesized_expression "((int)fVar20 & 1U)" ( (binary_expression "(int)fVar20 & 1U" (cast_expression "(int)fVar20" ( (type_descriptor "int" primitive_type) ) identifier) & number_literal) )) << number_literal) ))))) ;) })) (expression_statement "*param_7 = bVar6;" (assignment_expression "*param_7 = bVar6" (pointer_expression "*param_7" * identifier) = identifier) ;) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" identifier = (binary_expression "param_6 + param_2[0xb0] * 4" identifier + (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" identifier [ number_literal ]) * number_literal))) ;) (expression_statement "bVar3 = bVar6;" (assignment_expression "bVar3 = bVar6" identifier = identifier) ;) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }" if (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" ( (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" * (cast_expression "(int *)(param_2[0xb4] + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x40)" ( (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) != number_literal) )) (compound_statement "{\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }" { (expression_statement "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" identifier = (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" * (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" identifier + (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" * (cast_expression "(int *)(param_2[0xb4] + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x44)" ( (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }" if (parenthesized_expression "(fVar21 <= fVar20)" ( (binary_expression "fVar21 <= fVar20" identifier <= identifier) )) (compound_statement "{\n                  fVar20 = fVar20 - fVar21;\n                }" { (expression_statement "fVar20 = fVar20 - fVar21;" (assignment_expression "fVar20 = fVar20 - fVar21" identifier = (binary_expression "fVar20 - fVar21" identifier - identifier)) ;) })) (expression_statement "bVar4 = (byte)(((int)fVar20 & 1U) << 3);" (assignment_expression "bVar4 = (byte)(((int)fVar20 & 1U) << 3)" identifier = (call_expression "(byte)(((int)fVar20 & 1U) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((int)fVar20 & 1U) << 3)" ( (binary_expression "((int)fVar20 & 1U) << 3" (parenthesized_expression "((int)fVar20 & 1U)" ( (binary_expression "(int)fVar20 & 1U" (cast_expression "(int)fVar20" ( (type_descriptor "int" primitive_type) ) identifier) & number_literal) )) << number_literal) )))) ;) (expression_statement "bVar3 = bVar6 | bVar4;" (assignment_expression "bVar3 = bVar6 | bVar4" identifier = (binary_expression "bVar6 | bVar4" identifier | identifier)) ;) (expression_statement "*param_7 = bVar6 | bVar4;" (assignment_expression "*param_7 = bVar6 | bVar4" (pointer_expression "*param_7" * identifier) = (binary_expression "bVar6 | bVar4" identifier | identifier)) ;) })) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" identifier = (binary_expression "param_6 + param_2[0xb0] * 4" identifier + (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" identifier [ number_literal ]) * number_literal))) ;) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }" if (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" ( (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" * (cast_expression "(int *)(param_2[0xb4] + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x40)" ( (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) != number_literal) )) (compound_statement "{\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }" { (expression_statement "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" identifier = (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" * (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" identifier + (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" * (cast_expression "(int *)(param_2[0xb4] + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x44)" ( (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }" if (parenthesized_expression "(fVar21 <= fVar20)" ( (binary_expression "fVar21 <= fVar20" identifier <= identifier) )) (compound_statement "{\n                  fVar20 = fVar20 - fVar21;\n                }" { (expression_statement "fVar20 = fVar20 - fVar21;" (assignment_expression "fVar20 = fVar20 - fVar21" identifier = (binary_expression "fVar20 - fVar21" identifier - identifier)) ;) })) (expression_statement "bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);" (assignment_expression "bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2)" identifier = (binary_expression "bVar3 | (byte)(((int)fVar20 & 1U) << 2)" identifier | (call_expression "(byte)(((int)fVar20 & 1U) << 2)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((int)fVar20 & 1U) << 2)" ( (binary_expression "((int)fVar20 & 1U) << 2" (parenthesized_expression "((int)fVar20 & 1U)" ( (binary_expression "(int)fVar20 & 1U" (cast_expression "(int)fVar20" ( (type_descriptor "int" primitive_type) ) identifier) & number_literal) )) << number_literal) ))))) ;) })) (expression_statement "*param_7 = bVar3;" (assignment_expression "*param_7 = bVar3" (pointer_expression "*param_7" * identifier) = identifier) ;) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" identifier = (binary_expression "param_6 + param_2[0xb0] * 4" identifier + (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" identifier [ number_literal ]) * number_literal))) ;) (expression_statement "bVar6 = bVar3;" (assignment_expression "bVar6 = bVar3" identifier = identifier) ;) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }" if (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" ( (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" * (cast_expression "(int *)(param_2[0xb4] + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x40)" ( (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) != number_literal) )) (compound_statement "{\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }" { (expression_statement "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" identifier = (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" * (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" identifier + (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" * (cast_expression "(int *)(param_2[0xb4] + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x44)" ( (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }" if (parenthesized_expression "(fVar21 <= fVar20)" ( (binary_expression "fVar21 <= fVar20" identifier <= identifier) )) (compound_statement "{\n                  fVar20 = fVar20 - fVar21;\n                }" { (expression_statement "fVar20 = fVar20 - fVar21;" (assignment_expression "fVar20 = fVar20 - fVar21" identifier = (binary_expression "fVar20 - fVar21" identifier - identifier)) ;) })) (expression_statement "bVar4 = (byte)(((int)fVar20 & 1U) << 1);" (assignment_expression "bVar4 = (byte)(((int)fVar20 & 1U) << 1)" identifier = (call_expression "(byte)(((int)fVar20 & 1U) << 1)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((int)fVar20 & 1U) << 1)" ( (binary_expression "((int)fVar20 & 1U) << 1" (parenthesized_expression "((int)fVar20 & 1U)" ( (binary_expression "(int)fVar20 & 1U" (cast_expression "(int)fVar20" ( (type_descriptor "int" primitive_type) ) identifier) & number_literal) )) << number_literal) )))) ;) (expression_statement "bVar6 = bVar3 | bVar4;" (assignment_expression "bVar6 = bVar3 | bVar4" identifier = (binary_expression "bVar3 | bVar4" identifier | identifier)) ;) (expression_statement "*param_7 = bVar3 | bVar4;" (assignment_expression "*param_7 = bVar3 | bVar4" (pointer_expression "*param_7" * identifier) = (binary_expression "bVar3 | bVar4" identifier | identifier)) ;) })) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" identifier = (binary_expression "param_6 + param_2[0xb0] * 4" identifier + (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" identifier [ number_literal ]) * number_literal))) ;) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }" if (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" ( (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" * (cast_expression "(int *)(param_2[0xb4] + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x40)" ( (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) != number_literal) )) (compound_statement "{\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }" { (expression_statement "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" identifier = (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" * (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" identifier + (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" * (cast_expression "(int *)(param_2[0xb4] + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x44)" ( (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }" if (parenthesized_expression "(fVar20 < fVar21)" ( (binary_expression "fVar20 < fVar21" identifier < identifier) )) (compound_statement "{\n                  bVar3 = (byte)(int)fVar20;\n                }" { (expression_statement "bVar3 = (byte)(int)fVar20;" (assignment_expression "bVar3 = (byte)(int)fVar20" identifier = (cast_expression "(byte)(int)fVar20" ( (type_descriptor "byte" type_identifier) ) (cast_expression "(int)fVar20" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }) (else_clause "else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }" else (compound_statement "{\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }" { (expression_statement "bVar3 = (byte)(int)(fVar20 - fVar21);" (assignment_expression "bVar3 = (byte)(int)(fVar20 - fVar21)" identifier = (call_expression "(byte)(int)(fVar20 - fVar21)" (call_expression "(byte)(int)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(int)" ( identifier ))) (argument_list "(fVar20 - fVar21)" ( (binary_expression "fVar20 - fVar21" identifier - identifier) )))) ;) }))) (expression_statement "bVar6 = bVar6 | bVar3 & 1;" (assignment_expression "bVar6 = bVar6 | bVar3 & 1" identifier = (binary_expression "bVar6 | bVar3 & 1" identifier | (binary_expression "bVar3 & 1" identifier & number_literal))) ;) })) (expression_statement "*param_7 = bVar6;" (assignment_expression "*param_7 = bVar6" (pointer_expression "*param_7" * identifier) = identifier) ;) (expression_statement "param_7 = param_7 + 1;" (assignment_expression "param_7 = param_7 + 1" identifier = (binary_expression "param_7 + 1" identifier + number_literal)) ;) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" identifier = (binary_expression "param_6 + param_2[0xb0] * 4" identifier + (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" identifier [ number_literal ]) * number_literal))) ;) }) while (parenthesized_expression "(param_7 != pbVar5)" ( (binary_expression "param_7 != pbVar5" identifier != identifier) )) ;) })) (if_statement "if ((param_5 & 7) == 0) {\n            return;\n          }" if (parenthesized_expression "((param_5 & 7) == 0)" ( (binary_expression "(param_5 & 7) == 0" (parenthesized_expression "(param_5 & 7)" ( (binary_expression "param_5 & 7" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) (expression_statement "*param_7 = 0;" (assignment_expression "*param_7 = 0" (pointer_expression "*param_7" * identifier) = number_literal) ;) (if_statement "if ((param_5 & 7) == 0) {\n            return;\n          }" if (parenthesized_expression "((param_5 & 7) == 0)" ( (binary_expression "(param_5 & 7) == 0" (parenthesized_expression "(param_5 & 7)" ( (binary_expression "param_5 & 7" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;) (expression_statement "uVar17 = 7;" (assignment_expression "uVar17 = 7" identifier = number_literal) ;) (expression_statement "fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);" (assignment_expression "fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" identifier = (pointer_expression "*(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" * (cast_expression "(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (binary_expression "PTR_s_t_to_left_003a88e4 + -0x51e0" identifier + number_literal) ))))) ;) (do_statement "do {\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }\n            *param_7 = (byte)uVar16;\n            uVar17 = uVar17 - 1;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != (~param_5 & 7));" do (compound_statement "{\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }\n            *param_7 = (byte)uVar16;\n            uVar17 = uVar17 - 1;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          }" { (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }" if (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" ( (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" * (cast_expression "(int *)(param_2[0xb4] + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x40)" ( (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) != number_literal) )) (compound_statement "{\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }" { (expression_statement "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" identifier = (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" * (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" identifier + (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" * (cast_expression "(int *)(param_2[0xb4] + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x44)" ( (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }" if (parenthesized_expression "(fVar21 <= fVar20)" ( (binary_expression "fVar21 <= fVar20" identifier <= identifier) )) (compound_statement "{\n                fVar20 = fVar20 - fVar21;\n              }" { (expression_statement "fVar20 = fVar20 - fVar21;" (assignment_expression "fVar20 = fVar20 - fVar21" identifier = (binary_expression "fVar20 - fVar21" identifier - identifier)) ;) })) (expression_statement "uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;" (assignment_expression "uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16" identifier = (binary_expression "((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16" (binary_expression "((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff" (binary_expression "((int)fVar20 & 1U) << (uVar17 & 0x1f)" (parenthesized_expression "((int)fVar20 & 1U)" ( (binary_expression "(int)fVar20 & 1U" (cast_expression "(int)fVar20" ( (type_descriptor "int" primitive_type) ) identifier) & number_literal) )) << (parenthesized_expression "(uVar17 & 0x1f)" ( (binary_expression "uVar17 & 0x1f" identifier & number_literal) ))) & number_literal) | identifier)) ;) })) (expression_statement "*param_7 = (byte)uVar16;" (assignment_expression "*param_7 = (byte)uVar16" (pointer_expression "*param_7" * identifier) = (cast_expression "(byte)uVar16" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar17 = uVar17 - 1;" (assignment_expression "uVar17 = uVar17 - 1" identifier = (binary_expression "uVar17 - 1" identifier - number_literal)) ;) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" identifier = (binary_expression "param_6 + param_2[0xb0] * 4" identifier + (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" identifier [ number_literal ]) * number_literal))) ;) }) while (parenthesized_expression "(uVar17 != (~param_5 & 7))" ( (binary_expression "uVar17 != (~param_5 & 7)" identifier != (parenthesized_expression "(~param_5 & 7)" ( (binary_expression "~param_5 & 7" (unary_expression "~param_5" ~ identifier) & number_literal) ))) )) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar17 == 4) {\n          if (0 < (int)(param_5 - 1)) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;\n            do {\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 1) == 0) {\n            return;\n          }\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }\n            else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }\n            *param_7 = bVar3;\n            return;\n          }\n          *param_7 = 0;\n          return;\n        }" if (parenthesized_expression "(uVar17 == 4)" ( (binary_expression "uVar17 == 4" identifier == number_literal) )) (compound_statement "{\n          if (0 < (int)(param_5 - 1)) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;\n            do {\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 1) == 0) {\n            return;\n          }\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }\n            else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }\n            *param_7 = bVar3;\n            return;\n          }\n          *param_7 = 0;\n          return;\n        }" { (if_statement "if (0 < (int)(param_5 - 1)) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;\n            do {\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }" if (parenthesized_expression "(0 < (int)(param_5 - 1))" ( (binary_expression "0 < (int)(param_5 - 1)" number_literal < (cast_expression "(int)(param_5 - 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(param_5 - 1)" ( (binary_expression "param_5 - 1" identifier - number_literal) )))) )) (compound_statement "{\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;\n            do {\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }" { (expression_statement "fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);" (assignment_expression "fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" identifier = (pointer_expression "*(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" * (cast_expression "(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (binary_expression "PTR_s_t_to_left_003a88e4 + -0x51e0" identifier + number_literal) ))))) ;) (expression_statement "pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;" (assignment_expression "pbVar5 = param_7 + (param_5 - 2 >> 1) + 1" identifier = (binary_expression "param_7 + (param_5 - 2 >> 1) + 1" (binary_expression "param_7 + (param_5 - 2 >> 1)" identifier + (parenthesized_expression "(param_5 - 2 >> 1)" ( (binary_expression "param_5 - 2 >> 1" (binary_expression "param_5 - 2" identifier - number_literal) >> number_literal) ))) + number_literal)) ;) (do_statement "do {\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);" do (compound_statement "{\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            }" { (if_statement "if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }" if (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) == 0)" ( (binary_expression "*(int *)(param_2[0xb4] + 0x40) == 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" * (cast_expression "(int *)(param_2[0xb4] + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x40)" ( (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) == number_literal) )) (compound_statement "{\n                bVar3 = 0;\n              }" { (expression_statement "bVar3 = 0;" (assignment_expression "bVar3 = 0" identifier = number_literal) ;) }) (else_clause "else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }" else (compound_statement "{\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }" { (expression_statement "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" identifier = (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" * (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" identifier + (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" * (cast_expression "(int *)(param_2[0xb4] + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x44)" ( (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }" if (parenthesized_expression "(fVar21 <= fVar20)" ( (binary_expression "fVar21 <= fVar20" identifier <= identifier) )) (compound_statement "{\n                  fVar20 = fVar20 - fVar21;\n                }" { (expression_statement "fVar20 = fVar20 - fVar21;" (assignment_expression "fVar20 = fVar20 - fVar21" identifier = (binary_expression "fVar20 - fVar21" identifier - identifier)) ;) })) (expression_statement "bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);" (assignment_expression "bVar3 = (byte)(((int)fVar20 & 0xffU) << 4)" identifier = (call_expression "(byte)(((int)fVar20 & 0xffU) << 4)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((int)fVar20 & 0xffU) << 4)" ( (binary_expression "((int)fVar20 & 0xffU) << 4" (parenthesized_expression "((int)fVar20 & 0xffU)" ( (binary_expression "(int)fVar20 & 0xffU" (cast_expression "(int)fVar20" ( (type_descriptor "int" primitive_type) ) identifier) & number_literal) )) << number_literal) )))) ;) }))) (expression_statement "*param_7 = bVar3;" (assignment_expression "*param_7 = bVar3" (pointer_expression "*param_7" * identifier) = identifier) ;) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" identifier = (binary_expression "param_6 + param_2[0xb0] * 4" identifier + (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" identifier [ number_literal ]) * number_literal))) ;) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }" if (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" ( (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" * (cast_expression "(int *)(param_2[0xb4] + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x40)" ( (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) != number_literal) )) (compound_statement "{\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }" { (expression_statement "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" identifier = (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" * (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" identifier + (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" * (cast_expression "(int *)(param_2[0xb4] + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x44)" ( (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }" if (parenthesized_expression "(fVar20 < fVar21)" ( (binary_expression "fVar20 < fVar21" identifier < identifier) )) (compound_statement "{\n                  bVar6 = (byte)(int)fVar20;\n                }" { (expression_statement "bVar6 = (byte)(int)fVar20;" (assignment_expression "bVar6 = (byte)(int)fVar20" identifier = (cast_expression "(byte)(int)fVar20" ( (type_descriptor "byte" type_identifier) ) (cast_expression "(int)fVar20" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }) (else_clause "else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }" else (compound_statement "{\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }" { (expression_statement "bVar6 = (byte)(int)(fVar20 - fVar21);" (assignment_expression "bVar6 = (byte)(int)(fVar20 - fVar21)" identifier = (call_expression "(byte)(int)(fVar20 - fVar21)" (call_expression "(byte)(int)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(int)" ( identifier ))) (argument_list "(fVar20 - fVar21)" ( (binary_expression "fVar20 - fVar21" identifier - identifier) )))) ;) }))) (expression_statement "bVar3 = bVar3 | bVar6 & 0xf;" (assignment_expression "bVar3 = bVar3 | bVar6 & 0xf" identifier = (binary_expression "bVar3 | bVar6 & 0xf" identifier | (binary_expression "bVar6 & 0xf" identifier & number_literal))) ;) })) (expression_statement "*param_7 = bVar3;" (assignment_expression "*param_7 = bVar3" (pointer_expression "*param_7" * identifier) = identifier) ;) (expression_statement "param_7 = param_7 + 1;" (assignment_expression "param_7 = param_7 + 1" identifier = (binary_expression "param_7 + 1" identifier + number_literal)) ;) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" identifier = (binary_expression "param_6 + param_2[0xb0] * 4" identifier + (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" identifier [ number_literal ]) * number_literal))) ;) }) while (parenthesized_expression "(param_7 != pbVar5)" ( (binary_expression "param_7 != pbVar5" identifier != identifier) )) ;) })) (if_statement "if ((param_5 & 1) == 0) {\n            return;\n          }" if (parenthesized_expression "((param_5 & 1) == 0)" ( (binary_expression "(param_5 & 1) == 0" (parenthesized_expression "(param_5 & 1)" ( (binary_expression "param_5 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }\n            else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }\n            *param_7 = bVar3;\n            return;\n          }" if (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" ( (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" * (cast_expression "(int *)(param_2[0xb4] + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x40)" ( (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) != number_literal) )) (compound_statement "{\n            fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }\n            else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }\n            *param_7 = bVar3;\n            return;\n          }" { (expression_statement "fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" identifier = (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" * (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" identifier + (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" * (cast_expression "(int *)(param_2[0xb4] + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x44)" ( (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }\n            else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }" if (parenthesized_expression "(fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0))" ( (binary_expression "fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" identifier < (pointer_expression "*(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" * (cast_expression "(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (binary_expression "PTR_s_t_to_left_003a88e4 + -0x51e0" identifier + number_literal) ))))) )) (compound_statement "{\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }" { (expression_statement "bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);" (assignment_expression "bVar3 = (byte)(((int)fVar21 & 0xfU) << 4)" identifier = (call_expression "(byte)(((int)fVar21 & 0xfU) << 4)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((int)fVar21 & 0xfU) << 4)" ( (binary_expression "((int)fVar21 & 0xfU) << 4" (parenthesized_expression "((int)fVar21 & 0xfU)" ( (binary_expression "(int)fVar21 & 0xfU" (cast_expression "(int)fVar21" ( (type_descriptor "int" primitive_type) ) identifier) & number_literal) )) << number_literal) )))) ;) }) (else_clause "else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }" else (compound_statement "{\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }" { (expression_statement "bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);" (assignment_expression "bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4)" identifier = (call_expression "(byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4)" ( (binary_expression "((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4" (parenthesized_expression "((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)" ( (binary_expression "(int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU" (cast_expression "(int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0))" ( (binary_expression "fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" identifier - (pointer_expression "*(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" * (cast_expression "(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (binary_expression "PTR_s_t_to_left_003a88e4 + -0x51e0" identifier + number_literal) ))))) ))) & number_literal) )) << number_literal) )))) ;) }))) (expression_statement "*param_7 = bVar3;" (assignment_expression "*param_7 = bVar3" (pointer_expression "*param_7" * identifier) = identifier) ;) (return_statement "return;" return ;) })) (expression_statement "*param_7 = 0;" (assignment_expression "*param_7 = 0" (pointer_expression "*param_7" * identifier) = number_literal) ;) (return_statement "return;" return ;) })) }) (else_clause "else {\n        if (uVar17 == 0x20) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar4 = 0;\n            bVar6 = 0;\n            bVar3 = 0;\n            bVar8 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 4;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n        if (uVar17 == 0x40) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n        }\n        else if (uVar17 == 0x10) {\n          if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n      }" else (compound_statement "{\n        if (uVar17 == 0x20) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar4 = 0;\n            bVar6 = 0;\n            bVar3 = 0;\n            bVar8 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 4;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n        if (uVar17 == 0x40) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n        }\n        else if (uVar17 == 0x10) {\n          if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n      }" { (if_statement "if (uVar17 == 0x20) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar4 = 0;\n            bVar6 = 0;\n            bVar3 = 0;\n            bVar8 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 4;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }" if (parenthesized_expression "(uVar17 == 0x20)" ( (binary_expression "uVar17 == 0x20" identifier == number_literal) )) (compound_statement "{\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar4 = 0;\n            bVar6 = 0;\n            bVar3 = 0;\n            bVar8 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 4;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }" { (if_statement "if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }" if (parenthesized_expression "(param_3[2] == 1)" ( (binary_expression "param_3[2] == 1" (subscript_expression "param_3[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }" { (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (if_statement "if ((int)param_5 < 1) {\n              return;\n            }" if (parenthesized_expression "((int)param_5 < 1)" ( (binary_expression "(int)param_5 < 1" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n              return;\n            }" { (return_statement "return;" return ;) })) (expression_statement "dVar22 = *(double *)(param_3 + 0x12);" (assignment_expression "dVar22 = *(double *)(param_3 + 0x12)" identifier = (pointer_expression "*(double *)(param_3 + 0x12)" * (cast_expression "(double *)(param_3 + 0x12)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x12)" ( (binary_expression "param_3 + 0x12" identifier + number_literal) ))))) ;) (expression_statement "uVar16 = param_3[0x11];" (assignment_expression "uVar16 = param_3[0x11]" identifier = (subscript_expression "param_3[0x11]" identifier [ number_literal ])) ;) (expression_statement "dVar19 = *(double *)(param_3 + 4);" (assignment_expression "dVar19 = *(double *)(param_3 + 4)" identifier = (pointer_expression "*(double *)(param_3 + 4)" * (cast_expression "(double *)(param_3 + 4)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) ))))) ;) (do_statement "do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);" do (compound_statement "{\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            }" { (expression_statement "dVar18 = 0.0;" (assignment_expression "dVar18 = 0.0" identifier = number_literal) ;) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }" if (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" ( (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" * (cast_expression "(int *)(param_2[0xb4] + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x40)" ( (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) != number_literal) )) (compound_statement "{\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }" { (expression_statement "dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" identifier = (cast_expression "(double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" * (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" identifier + (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" * (cast_expression "(int *)(param_2[0xb4] + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x44)" ( (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) )))))) ;) })) (expression_statement "fVar21 = (float)(dVar22 * dVar18 + dVar19);" (assignment_expression "fVar21 = (float)(dVar22 * dVar18 + dVar19)" identifier = (cast_expression "(float)(dVar22 * dVar18 + dVar19)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(dVar22 * dVar18 + dVar19)" ( (binary_expression "dVar22 * dVar18 + dVar19" (binary_expression "dVar22 * dVar18" identifier * identifier) + identifier) )))) ;) (expression_statement "bVar4 = (byte)((uint)fVar21 >> 8);" (assignment_expression "bVar4 = (byte)((uint)fVar21 >> 8)" identifier = (call_expression "(byte)((uint)fVar21 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar21 >> 8)" ( (binary_expression "(uint)fVar21 >> 8" (cast_expression "(uint)fVar21" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar6 = (byte)((uint)fVar21 >> 0x10);" (assignment_expression "bVar6 = (byte)((uint)fVar21 >> 0x10)" identifier = (call_expression "(byte)((uint)fVar21 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar21 >> 0x10)" ( (binary_expression "(uint)fVar21 >> 0x10" (cast_expression "(uint)fVar21" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar3 = (byte)((uint)fVar21 >> 0x18);" (assignment_expression "bVar3 = (byte)((uint)fVar21 >> 0x18)" identifier = (call_expression "(byte)((uint)fVar21 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar21 >> 0x18)" ( (binary_expression "(uint)fVar21 >> 0x18" (cast_expression "(uint)fVar21" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }" if (parenthesized_expression "(uVar16 == 1)" ( (binary_expression "uVar16 == 1" identifier == number_literal) )) (compound_statement "{\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }" { (expression_statement "param_7[1] = bVar6;" (assignment_expression "param_7[1] = bVar6" (subscript_expression "param_7[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*param_7 = bVar3;" (assignment_expression "*param_7 = bVar3" (pointer_expression "*param_7" * identifier) = identifier) ;) (expression_statement "param_7[2] = bVar4;" (assignment_expression "param_7[2] = bVar4" (subscript_expression "param_7[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_7[3] = SUB41(fVar21,0);" (assignment_expression "param_7[3] = SUB41(fVar21,0)" (subscript_expression "param_7[3]" identifier [ number_literal ]) = (call_expression "SUB41(fVar21,0)" identifier (argument_list "(fVar21,0)" ( identifier , number_literal )))) ;) }) (else_clause "else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }" else (compound_statement "{\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }" { (expression_statement "*param_7 = SUB41(fVar21,0);" (assignment_expression "*param_7 = SUB41(fVar21,0)" (pointer_expression "*param_7" * identifier) = (call_expression "SUB41(fVar21,0)" identifier (argument_list "(fVar21,0)" ( identifier , number_literal )))) ;) (expression_statement "param_7[1] = bVar4;" (assignment_expression "param_7[1] = bVar4" (subscript_expression "param_7[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_7[2] = bVar6;" (assignment_expression "param_7[2] = bVar6" (subscript_expression "param_7[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_7[3] = bVar3;" (assignment_expression "param_7[3] = bVar3" (subscript_expression "param_7[3]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "uVar17 = uVar17 + 1;" (assignment_expression "uVar17 = uVar17 + 1" identifier = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) (expression_statement "param_7 = param_7 + param_3[10] + 4;" (assignment_expression "param_7 = param_7 + param_3[10] + 4" identifier = (binary_expression "param_7 + param_3[10] + 4" (binary_expression "param_7 + param_3[10]" identifier + (subscript_expression "param_3[10]" identifier [ number_literal ])) + number_literal)) ;) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" identifier = (binary_expression "param_6 + param_2[0xb0] * 4" identifier + (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" identifier [ number_literal ]) * number_literal))) ;) }) while (parenthesized_expression "(uVar17 != param_5)" ( (binary_expression "uVar17 != param_5" identifier != identifier) )) ;) (return_statement "return;" return ;) })) (if_statement "if ((int)param_5 < 1) {\n            return;\n          }" if (parenthesized_expression "((int)param_5 < 1)" ( (binary_expression "(int)param_5 < 1" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (expression_statement "fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);" (assignment_expression "fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" identifier = (pointer_expression "*(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" * (cast_expression "(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (binary_expression "PTR_s_t_to_left_003a88e4 + -0x51e0" identifier + number_literal) ))))) ;) (do_statement "do {\n            bVar4 = 0;\n            bVar6 = 0;\n            bVar3 = 0;\n            bVar8 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 4;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);" do (compound_statement "{\n            bVar4 = 0;\n            bVar6 = 0;\n            bVar3 = 0;\n            bVar8 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 4;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          }" { (expression_statement "bVar4 = 0;" (assignment_expression "bVar4 = 0" identifier = number_literal) ;) (expression_statement "bVar6 = 0;" (assignment_expression "bVar6 = 0" identifier = number_literal) ;) (expression_statement "bVar3 = 0;" (assignment_expression "bVar3 = 0" identifier = number_literal) ;) (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" identifier = number_literal) ;) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }" if (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" ( (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" * (cast_expression "(int *)(param_2[0xb4] + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x40)" ( (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) != number_literal) )) (compound_statement "{\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }" { (expression_statement "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" identifier = (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" * (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" identifier + (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" * (cast_expression "(int *)(param_2[0xb4] + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x44)" ( (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }" if (parenthesized_expression "(fVar21 <= fVar20)" ( (binary_expression "fVar21 <= fVar20" identifier <= identifier) )) (compound_statement "{\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }" { (expression_statement "uVar16 = (int)(fVar20 - fVar21) | 0x80000000;" (assignment_expression "uVar16 = (int)(fVar20 - fVar21) | 0x80000000" identifier = (binary_expression "(int)(fVar20 - fVar21) | 0x80000000" (cast_expression "(int)(fVar20 - fVar21)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(fVar20 - fVar21)" ( (binary_expression "fVar20 - fVar21" identifier - identifier) ))) | number_literal)) ;) }) (else_clause "else {\n                uVar16 = (uint)fVar20;\n              }" else (compound_statement "{\n                uVar16 = (uint)fVar20;\n              }" { (expression_statement "uVar16 = (uint)fVar20;" (assignment_expression "uVar16 = (uint)fVar20" identifier = (cast_expression "(uint)fVar20" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }))) (expression_statement "bVar8 = (byte)(uVar16 >> 0x18);" (assignment_expression "bVar8 = (byte)(uVar16 >> 0x18)" identifier = (call_expression "(byte)(uVar16 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar16 >> 0x18)" ( (binary_expression "uVar16 >> 0x18" identifier >> number_literal) )))) ;) (expression_statement "bVar3 = (byte)(uVar16 >> 0x10);" (assignment_expression "bVar3 = (byte)(uVar16 >> 0x10)" identifier = (call_expression "(byte)(uVar16 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar16 >> 0x10)" ( (binary_expression "uVar16 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "bVar6 = (byte)(uVar16 >> 8);" (assignment_expression "bVar6 = (byte)(uVar16 >> 8)" identifier = (call_expression "(byte)(uVar16 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar16 >> 8)" ( (binary_expression "uVar16 >> 8" identifier >> number_literal) )))) ;) (expression_statement "bVar4 = (byte)uVar16;" (assignment_expression "bVar4 = (byte)uVar16" identifier = (cast_expression "(byte)uVar16" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) })) (if_statement "if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }" if (parenthesized_expression "(param_3[0x11] == 1)" ( (binary_expression "param_3[0x11] == 1" (subscript_expression "param_3[0x11]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }" { (expression_statement "*param_7 = bVar4;" (assignment_expression "*param_7 = bVar4" (pointer_expression "*param_7" * identifier) = identifier) ;) (expression_statement "param_7[1] = bVar6;" (assignment_expression "param_7[1] = bVar6" (subscript_expression "param_7[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_7[2] = bVar3;" (assignment_expression "param_7[2] = bVar3" (subscript_expression "param_7[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_7[3] = bVar8;" (assignment_expression "param_7[3] = bVar8" (subscript_expression "param_7[3]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }" else (compound_statement "{\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }" { (expression_statement "*param_7 = bVar8;" (assignment_expression "*param_7 = bVar8" (pointer_expression "*param_7" * identifier) = identifier) ;) (expression_statement "param_7[1] = bVar3;" (assignment_expression "param_7[1] = bVar3" (subscript_expression "param_7[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_7[2] = bVar6;" (assignment_expression "param_7[2] = bVar6" (subscript_expression "param_7[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_7[3] = bVar4;" (assignment_expression "param_7[3] = bVar4" (subscript_expression "param_7[3]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "uVar17 = uVar17 + 1;" (assignment_expression "uVar17 = uVar17 + 1" identifier = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) (expression_statement "param_7 = param_7 + param_3[10] + 4;" (assignment_expression "param_7 = param_7 + param_3[10] + 4" identifier = (binary_expression "param_7 + param_3[10] + 4" (binary_expression "param_7 + param_3[10]" identifier + (subscript_expression "param_3[10]" identifier [ number_literal ])) + number_literal)) ;) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" identifier = (binary_expression "param_6 + param_2[0xb0] * 4" identifier + (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" identifier [ number_literal ]) * number_literal))) ;) }) while (parenthesized_expression "(uVar17 != param_5)" ( (binary_expression "uVar17 != param_5" identifier != identifier) )) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar17 == 0x40) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n        }\n        else if (uVar17 == 0x10) {\n          if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }" if (parenthesized_expression "(uVar17 == 0x40)" ( (binary_expression "uVar17 == 0x40" identifier == number_literal) )) (compound_statement "{\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n        }" { (if_statement "if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }" if (parenthesized_expression "(param_3[2] == 1)" ( (binary_expression "param_3[2] == 1" (subscript_expression "param_3[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }" { (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (if_statement "if ((int)param_5 < 1) {\n              return;\n            }" if (parenthesized_expression "((int)param_5 < 1)" ( (binary_expression "(int)param_5 < 1" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n              return;\n            }" { (return_statement "return;" return ;) })) (expression_statement "dVar22 = *(double *)(param_3 + 0x12);" (assignment_expression "dVar22 = *(double *)(param_3 + 0x12)" identifier = (pointer_expression "*(double *)(param_3 + 0x12)" * (cast_expression "(double *)(param_3 + 0x12)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x12)" ( (binary_expression "param_3 + 0x12" identifier + number_literal) ))))) ;) (expression_statement "uVar16 = param_3[0x11];" (assignment_expression "uVar16 = param_3[0x11]" identifier = (subscript_expression "param_3[0x11]" identifier [ number_literal ])) ;) (expression_statement "dVar19 = *(double *)(param_3 + 4);" (assignment_expression "dVar19 = *(double *)(param_3 + 4)" identifier = (pointer_expression "*(double *)(param_3 + 4)" * (cast_expression "(double *)(param_3 + 4)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) ))))) ;) (do_statement "do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);" do (compound_statement "{\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            }" { (expression_statement "dVar18 = 0.0;" (assignment_expression "dVar18 = 0.0" identifier = number_literal) ;) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }" if (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" ( (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" * (cast_expression "(int *)(param_2[0xb4] + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x40)" ( (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) != number_literal) )) (compound_statement "{\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }" { (expression_statement "dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" identifier = (cast_expression "(double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" * (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" identifier + (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" * (cast_expression "(int *)(param_2[0xb4] + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x44)" ( (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) )))))) ;) })) (expression_statement "dVar18 = dVar22 * dVar18 + dVar19;" (assignment_expression "dVar18 = dVar22 * dVar18 + dVar19" identifier = (binary_expression "dVar22 * dVar18 + dVar19" (binary_expression "dVar22 * dVar18" identifier * identifier) + identifier)) ;) (expression_statement "bVar3 = (byte)((ulonglong)dVar18 >> 0x20);" (assignment_expression "bVar3 = (byte)((ulonglong)dVar18 >> 0x20)" identifier = (call_expression "(byte)((ulonglong)dVar18 >> 0x20)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar18 >> 0x20)" ( (binary_expression "(ulonglong)dVar18 >> 0x20" (cast_expression "(ulonglong)dVar18" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar15 = (byte)((ulonglong)dVar18 >> 8);" (assignment_expression "bVar15 = (byte)((ulonglong)dVar18 >> 8)" identifier = (call_expression "(byte)((ulonglong)dVar18 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar18 >> 8)" ( (binary_expression "(ulonglong)dVar18 >> 8" (cast_expression "(ulonglong)dVar18" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar13 = (byte)((ulonglong)dVar18 >> 0x10);" (assignment_expression "bVar13 = (byte)((ulonglong)dVar18 >> 0x10)" identifier = (call_expression "(byte)((ulonglong)dVar18 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar18 >> 0x10)" ( (binary_expression "(ulonglong)dVar18 >> 0x10" (cast_expression "(ulonglong)dVar18" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar4 = (byte)((ulonglong)dVar18 >> 0x18);" (assignment_expression "bVar4 = (byte)((ulonglong)dVar18 >> 0x18)" identifier = (call_expression "(byte)((ulonglong)dVar18 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar18 >> 0x18)" ( (binary_expression "(ulonglong)dVar18 >> 0x18" (cast_expression "(ulonglong)dVar18" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar10 = (byte)((ulonglong)dVar18 >> 0x28);" (assignment_expression "bVar10 = (byte)((ulonglong)dVar18 >> 0x28)" identifier = (call_expression "(byte)((ulonglong)dVar18 >> 0x28)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar18 >> 0x28)" ( (binary_expression "(ulonglong)dVar18 >> 0x28" (cast_expression "(ulonglong)dVar18" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar8 = (byte)((ulonglong)dVar18 >> 0x30);" (assignment_expression "bVar8 = (byte)((ulonglong)dVar18 >> 0x30)" identifier = (call_expression "(byte)((ulonglong)dVar18 >> 0x30)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar18 >> 0x30)" ( (binary_expression "(ulonglong)dVar18 >> 0x30" (cast_expression "(ulonglong)dVar18" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar6 = (byte)((ulonglong)dVar18 >> 0x38);" (assignment_expression "bVar6 = (byte)((ulonglong)dVar18 >> 0x38)" identifier = (call_expression "(byte)((ulonglong)dVar18 >> 0x38)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar18 >> 0x38)" ( (binary_expression "(ulonglong)dVar18 >> 0x38" (cast_expression "(ulonglong)dVar18" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }" if (parenthesized_expression "(uVar16 == 1)" ( (binary_expression "uVar16 == 1" identifier == number_literal) )) (compound_statement "{\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }" { (expression_statement "param_7[1] = bVar8;" (assignment_expression "param_7[1] = bVar8" (subscript_expression "param_7[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*param_7 = bVar6;" (assignment_expression "*param_7 = bVar6" (pointer_expression "*param_7" * identifier) = identifier) ;) (expression_statement "param_7[2] = bVar10;" (assignment_expression "param_7[2] = bVar10" (subscript_expression "param_7[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_7[3] = bVar3;" (assignment_expression "param_7[3] = bVar3" (subscript_expression "param_7[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_7[4] = bVar4;" (assignment_expression "param_7[4] = bVar4" (subscript_expression "param_7[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_7[5] = bVar13;" (assignment_expression "param_7[5] = bVar13" (subscript_expression "param_7[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_7[6] = bVar15;" (assignment_expression "param_7[6] = bVar15" (subscript_expression "param_7[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_7[7] = SUB81(dVar18,0);" (assignment_expression "param_7[7] = SUB81(dVar18,0)" (subscript_expression "param_7[7]" identifier [ number_literal ]) = (call_expression "SUB81(dVar18,0)" identifier (argument_list "(dVar18,0)" ( identifier , number_literal )))) ;) }) (else_clause "else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }" else (compound_statement "{\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }" { (expression_statement "*param_7 = SUB81(dVar18,0);" (assignment_expression "*param_7 = SUB81(dVar18,0)" (pointer_expression "*param_7" * identifier) = (call_expression "SUB81(dVar18,0)" identifier (argument_list "(dVar18,0)" ( identifier , number_literal )))) ;) (expression_statement "param_7[1] = bVar15;" (assignment_expression "param_7[1] = bVar15" (subscript_expression "param_7[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_7[2] = bVar13;" (assignment_expression "param_7[2] = bVar13" (subscript_expression "param_7[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_7[3] = bVar4;" (assignment_expression "param_7[3] = bVar4" (subscript_expression "param_7[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_7[4] = bVar3;" (assignment_expression "param_7[4] = bVar3" (subscript_expression "param_7[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_7[5] = bVar10;" (assignment_expression "param_7[5] = bVar10" (subscript_expression "param_7[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_7[6] = bVar8;" (assignment_expression "param_7[6] = bVar8" (subscript_expression "param_7[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_7[7] = bVar6;" (assignment_expression "param_7[7] = bVar6" (subscript_expression "param_7[7]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "uVar17 = uVar17 + 1;" (assignment_expression "uVar17 = uVar17 + 1" identifier = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) (expression_statement "param_7 = param_7 + param_3[10] + 8;" (assignment_expression "param_7 = param_7 + param_3[10] + 8" identifier = (binary_expression "param_7 + param_3[10] + 8" (binary_expression "param_7 + param_3[10]" identifier + (subscript_expression "param_3[10]" identifier [ number_literal ])) + number_literal)) ;) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" identifier = (binary_expression "param_6 + param_2[0xb0] * 4" identifier + (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" identifier [ number_literal ]) * number_literal))) ;) }) while (parenthesized_expression "(uVar17 != param_5)" ( (binary_expression "uVar17 != param_5" identifier != identifier) )) ;) (return_statement "return;" return ;) })) }) (else_clause "else if (uVar17 == 0x10) {\n          if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }" else (if_statement "if (uVar17 == 0x10) {\n          if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }" if (parenthesized_expression "(uVar17 == 0x10)" ( (binary_expression "uVar17 == 0x10" identifier == number_literal) )) (compound_statement "{\n          if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }" { (if_statement "if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }" if (parenthesized_expression "(param_3[2] == 1)" ( (binary_expression "param_3[2] == 1" (subscript_expression "param_3[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }" { (if_statement "if ((int)param_5 < 1) {\n              return;\n            }" if (parenthesized_expression "((int)param_5 < 1)" ( (binary_expression "(int)param_5 < 1" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n              return;\n            }" { (return_statement "return;" return ;) })) (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (expression_statement "uVar16 = 1;" (assignment_expression "uVar16 = 1" identifier = number_literal) ;) (expression_statement "dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);" (assignment_expression "dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440)" identifier = (pointer_expression "*(double *)(PTR_LAB_003a88e0 + 0x1440)" * (cast_expression "(double *)(PTR_LAB_003a88e0 + 0x1440)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_003a88e0 + 0x1440)" ( (binary_expression "PTR_LAB_003a88e0 + 0x1440" identifier + number_literal) ))))) ;) (do_statement "do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);" do (compound_statement "{\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            }" { (expression_statement "param_1 = param_1 & 0xffffffff00000000;" (assignment_expression "param_1 = param_1 & 0xffffffff00000000" identifier = (binary_expression "param_1 & 0xffffffff00000000" identifier & number_literal)) ;) (expression_statement "uVar12 = param_3[0x11];" (assignment_expression "uVar12 = param_3[0x11]" identifier = (subscript_expression "param_3[0x11]" identifier [ number_literal ])) ;) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }" if (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" ( (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" * (cast_expression "(int *)(param_2[0xb4] + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x40)" ( (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) != number_literal) )) (compound_statement "{\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }" { (expression_statement "dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;" (assignment_expression "dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19" identifier = (binary_expression "(double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19" (cast_expression "(double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" * (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" identifier + (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" * (cast_expression "(int *)(param_2[0xb4] + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x44)" ( (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) * identifier)) ;) (expression_statement "param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);" (assignment_expression "param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19)" identifier = (call_expression "CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19)" identifier (argument_list "((int)((ulonglong)dVar19 >> 0x20),(float)dVar19)" ( (cast_expression "(int)((ulonglong)dVar19 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)dVar19 >> 0x20)" ( (binary_expression "(ulonglong)dVar19 >> 0x20" (cast_expression "(ulonglong)dVar19" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) , (cast_expression "(float)dVar19" ( (type_descriptor "float" primitive_type) ) identifier) )))) ;) })) (expression_statement "uVar2 = FUN_00155b60(param_1);" (assignment_expression "uVar2 = FUN_00155b60(param_1)" identifier = (call_expression "FUN_00155b60(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "bVar3 = (byte)((ushort)uVar2 >> 8);" (assignment_expression "bVar3 = (byte)((ushort)uVar2 >> 8)" identifier = (call_expression "(byte)((ushort)uVar2 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ushort)uVar2 >> 8)" ( (binary_expression "(ushort)uVar2 >> 8" (cast_expression "(ushort)uVar2" ( (type_descriptor "ushort" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }" if (parenthesized_expression "(uVar12 == uVar16)" ( (binary_expression "uVar12 == uVar16" identifier == identifier) )) (compound_statement "{\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }" { (expression_statement "*param_7 = (byte)uVar2;" (assignment_expression "*param_7 = (byte)uVar2" (pointer_expression "*param_7" * identifier) = (cast_expression "(byte)uVar2" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "param_7[1] = bVar3;" (assignment_expression "param_7[1] = bVar3" (subscript_expression "param_7[1]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }" else (compound_statement "{\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }" { (expression_statement "*param_7 = bVar3;" (assignment_expression "*param_7 = bVar3" (pointer_expression "*param_7" * identifier) = identifier) ;) (expression_statement "param_7[1] = (byte)uVar2;" (assignment_expression "param_7[1] = (byte)uVar2" (subscript_expression "param_7[1]" identifier [ number_literal ]) = (cast_expression "(byte)uVar2" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }))) (expression_statement "uVar17 = uVar17 + 1;" (assignment_expression "uVar17 = uVar17 + 1" identifier = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) (expression_statement "param_7 = param_7 + param_3[10] + 2;" (assignment_expression "param_7 = param_7 + param_3[10] + 2" identifier = (binary_expression "param_7 + param_3[10] + 2" (binary_expression "param_7 + param_3[10]" identifier + (subscript_expression "param_3[10]" identifier [ number_literal ])) + number_literal)) ;) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" identifier = (binary_expression "param_6 + param_2[0xb0] * 4" identifier + (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" identifier [ number_literal ]) * number_literal))) ;) (expression_statement "dVar19 = extraout_f0_1;" (assignment_expression "dVar19 = extraout_f0_1" identifier = identifier) ;) }) while (parenthesized_expression "(uVar17 != param_5)" ( (binary_expression "uVar17 != param_5" identifier != identifier) )) ;) (return_statement "return;" return ;) })) (if_statement "if ((int)param_5 < 1) {\n            return;\n          }" if (parenthesized_expression "((int)param_5 < 1)" ( (binary_expression "(int)param_5 < 1" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (expression_statement "fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);" (assignment_expression "fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" identifier = (pointer_expression "*(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" * (cast_expression "(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (binary_expression "PTR_s_t_to_left_003a88e4 + -0x51e0" identifier + number_literal) ))))) ;) (do_statement "do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);" do (compound_statement "{\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          }" { (expression_statement "bVar6 = 0;" (assignment_expression "bVar6 = 0" identifier = number_literal) ;) (expression_statement "bVar3 = 0;" (assignment_expression "bVar3 = 0" identifier = number_literal) ;) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }" if (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" ( (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" * (cast_expression "(int *)(param_2[0xb4] + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x40)" ( (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) != number_literal) )) (compound_statement "{\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }" { (expression_statement "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" identifier = (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" * (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" identifier + (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" * (cast_expression "(int *)(param_2[0xb4] + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x44)" ( (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }" if (parenthesized_expression "(fVar20 < fVar21)" ( (binary_expression "fVar20 < fVar21" identifier < identifier) )) (compound_statement "{\n                uVar2 = (undefined2)(int)fVar20;\n              }" { (expression_statement "uVar2 = (undefined2)(int)fVar20;" (assignment_expression "uVar2 = (undefined2)(int)fVar20" identifier = (cast_expression "(undefined2)(int)fVar20" ( (type_descriptor "undefined2" type_identifier) ) (cast_expression "(int)fVar20" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }) (else_clause "else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }" else (compound_statement "{\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }" { (expression_statement "uVar2 = (undefined2)(int)(fVar20 - fVar21);" (assignment_expression "uVar2 = (undefined2)(int)(fVar20 - fVar21)" identifier = (call_expression "(undefined2)(int)(fVar20 - fVar21)" (call_expression "(undefined2)(int)" (parenthesized_expression "(undefined2)" ( identifier )) (argument_list "(int)" ( identifier ))) (argument_list "(fVar20 - fVar21)" ( (binary_expression "fVar20 - fVar21" identifier - identifier) )))) ;) }))) (expression_statement "bVar3 = (byte)((ushort)uVar2 >> 8);" (assignment_expression "bVar3 = (byte)((ushort)uVar2 >> 8)" identifier = (call_expression "(byte)((ushort)uVar2 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ushort)uVar2 >> 8)" ( (binary_expression "(ushort)uVar2 >> 8" (cast_expression "(ushort)uVar2" ( (type_descriptor "ushort" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar6 = (byte)uVar2;" (assignment_expression "bVar6 = (byte)uVar2" identifier = (cast_expression "(byte)uVar2" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) })) (if_statement "if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }" if (parenthesized_expression "(param_3[0x11] == 1)" ( (binary_expression "param_3[0x11] == 1" (subscript_expression "param_3[0x11]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }" { (expression_statement "*param_7 = bVar6;" (assignment_expression "*param_7 = bVar6" (pointer_expression "*param_7" * identifier) = identifier) ;) (expression_statement "param_7[1] = bVar3;" (assignment_expression "param_7[1] = bVar3" (subscript_expression "param_7[1]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }" else (compound_statement "{\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }" { (expression_statement "*param_7 = bVar3;" (assignment_expression "*param_7 = bVar3" (pointer_expression "*param_7" * identifier) = identifier) ;) (expression_statement "param_7[1] = bVar6;" (assignment_expression "param_7[1] = bVar6" (subscript_expression "param_7[1]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "uVar17 = uVar17 + 1;" (assignment_expression "uVar17 = uVar17 + 1" identifier = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) (expression_statement "param_7 = param_7 + param_3[10] + 2;" (assignment_expression "param_7 = param_7 + param_3[10] + 2" identifier = (binary_expression "param_7 + param_3[10] + 2" (binary_expression "param_7 + param_3[10]" identifier + (subscript_expression "param_3[10]" identifier [ number_literal ])) + number_literal)) ;) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" identifier = (binary_expression "param_6 + param_2[0xb0] * 4" identifier + (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" identifier [ number_literal ]) * number_literal))) ;) }) while (parenthesized_expression "(uVar17 != param_5)" ( (binary_expression "uVar17 != param_5" identifier != identifier) )) ;) (return_statement "return;" return ;) })))) }))) (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;) (if_statement "if (0 < (int)param_5) {\n        iVar1 = param_2[0xb4];\n        if (*(int *)(iVar1 + 0x40) == 0) goto LAB_001574b0;\n        do {\n          uVar23 = (*(code *)PTR_FUN_003a8a80)\n                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4));\n          while( true ) {\n            uVar12 = (uint)((ulonglong)uVar23 >> 0x20);\n            if (param_3[0x15] == 0) {\n              param_3[0x15] = 8;\n            }\n            if (0 < (int)uVar17) {\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }\n            uVar16 = uVar16 + 1;\n            param_7 = param_7 + param_3[10];\n            param_6 = param_6 + param_2[0xb0] * 4;\n            if (uVar16 == param_5) {\n              return;\n            }\n            iVar1 = param_2[0xb4];\n            uVar17 = *param_3;\n            if (*(int *)(iVar1 + 0x40) != 0) break;\nLAB_001574b0:\n            uVar23 = 0;\n          }\n        } while( true );\n      }" if (parenthesized_expression "(0 < (int)param_5)" ( (binary_expression "0 < (int)param_5" number_literal < (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        iVar1 = param_2[0xb4];\n        if (*(int *)(iVar1 + 0x40) == 0) goto LAB_001574b0;\n        do {\n          uVar23 = (*(code *)PTR_FUN_003a8a80)\n                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4));\n          while( true ) {\n            uVar12 = (uint)((ulonglong)uVar23 >> 0x20);\n            if (param_3[0x15] == 0) {\n              param_3[0x15] = 8;\n            }\n            if (0 < (int)uVar17) {\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }\n            uVar16 = uVar16 + 1;\n            param_7 = param_7 + param_3[10];\n            param_6 = param_6 + param_2[0xb0] * 4;\n            if (uVar16 == param_5) {\n              return;\n            }\n            iVar1 = param_2[0xb4];\n            uVar17 = *param_3;\n            if (*(int *)(iVar1 + 0x40) != 0) break;\nLAB_001574b0:\n            uVar23 = 0;\n          }\n        } while( true );\n      }" { (expression_statement "iVar1 = param_2[0xb4];" (assignment_expression "iVar1 = param_2[0xb4]" identifier = (subscript_expression "param_2[0xb4]" identifier [ number_literal ])) ;) (if_statement "if (*(int *)(iVar1 + 0x40) == 0) goto LAB_001574b0;" if (parenthesized_expression "(*(int *)(iVar1 + 0x40) == 0)" ( (binary_expression "*(int *)(iVar1 + 0x40) == 0" (pointer_expression "*(int *)(iVar1 + 0x40)" * (cast_expression "(int *)(iVar1 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x40)" ( (binary_expression "iVar1 + 0x40" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_001574b0;" goto statement_identifier ;)) (do_statement "do {\n          uVar23 = (*(code *)PTR_FUN_003a8a80)\n                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4));\n          while( true ) {\n            uVar12 = (uint)((ulonglong)uVar23 >> 0x20);\n            if (param_3[0x15] == 0) {\n              param_3[0x15] = 8;\n            }\n            if (0 < (int)uVar17) {\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }\n            uVar16 = uVar16 + 1;\n            param_7 = param_7 + param_3[10];\n            param_6 = param_6 + param_2[0xb0] * 4;\n            if (uVar16 == param_5) {\n              return;\n            }\n            iVar1 = param_2[0xb4];\n            uVar17 = *param_3;\n            if (*(int *)(iVar1 + 0x40) != 0) break;\nLAB_001574b0:\n            uVar23 = 0;\n          }\n        } while( true );" do (compound_statement "{\n          uVar23 = (*(code *)PTR_FUN_003a8a80)\n                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4));\n          while( true ) {\n            uVar12 = (uint)((ulonglong)uVar23 >> 0x20);\n            if (param_3[0x15] == 0) {\n              param_3[0x15] = 8;\n            }\n            if (0 < (int)uVar17) {\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }\n            uVar16 = uVar16 + 1;\n            param_7 = param_7 + param_3[10];\n            param_6 = param_6 + param_2[0xb0] * 4;\n            if (uVar16 == param_5) {\n              return;\n            }\n            iVar1 = param_2[0xb4];\n            uVar17 = *param_3;\n            if (*(int *)(iVar1 + 0x40) != 0) break;\nLAB_001574b0:\n            uVar23 = 0;\n          }\n        }" { (expression_statement "uVar23 = (*(code *)PTR_FUN_003a8a80)\n                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4));" (assignment_expression "uVar23 = (*(code *)PTR_FUN_003a8a80)\n                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4))" identifier = (call_expression "(*(code *)PTR_FUN_003a8a80)\n                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4))" (parenthesized_expression "(*(code *)PTR_FUN_003a8a80)" ( (pointer_expression "*(code *)PTR_FUN_003a8a80" * (cast_expression "(code *)PTR_FUN_003a8a80" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4))" ( (pointer_expression "*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4)" * (cast_expression "(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(iVar1 + 0x44) * 4)" ( (binary_expression "param_6 + *(int *)(iVar1 + 0x44) * 4" identifier + (binary_expression "*(int *)(iVar1 + 0x44) * 4" (pointer_expression "*(int *)(iVar1 + 0x44)" * (cast_expression "(int *)(iVar1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x44)" ( (binary_expression "iVar1 + 0x44" identifier + number_literal) )))) * number_literal)) )))) )))) ;) (while_statement "while( true ) {\n            uVar12 = (uint)((ulonglong)uVar23 >> 0x20);\n            if (param_3[0x15] == 0) {\n              param_3[0x15] = 8;\n            }\n            if (0 < (int)uVar17) {\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }\n            uVar16 = uVar16 + 1;\n            param_7 = param_7 + param_3[10];\n            param_6 = param_6 + param_2[0xb0] * 4;\n            if (uVar16 == param_5) {\n              return;\n            }\n            iVar1 = param_2[0xb4];\n            uVar17 = *param_3;\n            if (*(int *)(iVar1 + 0x40) != 0) break;\nLAB_001574b0:\n            uVar23 = 0;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            uVar12 = (uint)((ulonglong)uVar23 >> 0x20);\n            if (param_3[0x15] == 0) {\n              param_3[0x15] = 8;\n            }\n            if (0 < (int)uVar17) {\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }\n            uVar16 = uVar16 + 1;\n            param_7 = param_7 + param_3[10];\n            param_6 = param_6 + param_2[0xb0] * 4;\n            if (uVar16 == param_5) {\n              return;\n            }\n            iVar1 = param_2[0xb4];\n            uVar17 = *param_3;\n            if (*(int *)(iVar1 + 0x40) != 0) break;\nLAB_001574b0:\n            uVar23 = 0;\n          }" { (expression_statement "uVar12 = (uint)((ulonglong)uVar23 >> 0x20);" (assignment_expression "uVar12 = (uint)((ulonglong)uVar23 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)uVar23 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)uVar23 >> 0x20)" ( (binary_expression "(ulonglong)uVar23 >> 0x20" (cast_expression "(ulonglong)uVar23" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (param_3[0x15] == 0) {\n              param_3[0x15] = 8;\n            }" if (parenthesized_expression "(param_3[0x15] == 0)" ( (binary_expression "param_3[0x15] == 0" (subscript_expression "param_3[0x15]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n              param_3[0x15] = 8;\n            }" { (expression_statement "param_3[0x15] = 8;" (assignment_expression "param_3[0x15] = 8" (subscript_expression "param_3[0x15]" identifier [ number_literal ]) = number_literal) ;) })) (if_statement "if (0 < (int)uVar17) {\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }" if (parenthesized_expression "(0 < (int)uVar17)" ( (binary_expression "0 < (int)uVar17" number_literal < (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }" { (do_statement "do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);" do (compound_statement "{\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              }" { (expression_statement "uVar11 = param_3[0x15];" (assignment_expression "uVar11 = param_3[0x15]" identifier = (subscript_expression "param_3[0x15]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = uVar11;" (assignment_expression "uVar7 = uVar11" identifier = identifier) ;) (if_statement "if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }" if (parenthesized_expression "(uVar17 <= uVar11)" ( (binary_expression "uVar17 <= uVar11" identifier <= identifier) )) (compound_statement "{\n                  uVar7 = uVar17;\n                }" { (expression_statement "uVar7 = uVar17;" (assignment_expression "uVar7 = uVar17" identifier = identifier) ;) })) (expression_statement "uVar9 = uVar17 - uVar7;" (assignment_expression "uVar9 = uVar17 - uVar7" identifier = (binary_expression "uVar17 - uVar7" identifier - identifier)) ;) (expression_statement "uVar14 = uVar11 - uVar7;" (assignment_expression "uVar14 = uVar11 - uVar7" identifier = (binary_expression "uVar11 - uVar7" identifier - identifier)) ;) (expression_statement "uVar17 = uVar9;" (assignment_expression "uVar17 = uVar9" identifier = identifier) ;) (if_statement "if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }" if (parenthesized_expression "((int)uVar9 < 0)" ( (binary_expression "(int)uVar9 < 0" (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                  uVar17 = 0;\n                }" { (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) })) (if_statement "if (uVar11 == 8) {\n                  *param_7 = 0;\n                }" if (parenthesized_expression "(uVar11 == 8)" ( (binary_expression "uVar11 == 8" identifier == number_literal) )) (compound_statement "{\n                  *param_7 = 0;\n                }" { (expression_statement "*param_7 = 0;" (assignment_expression "*param_7 = 0" (pointer_expression "*param_7" * identifier) = number_literal) ;) })) (expression_statement "param_3[0x15] = uVar14;" (assignment_expression "param_3[0x15] = uVar14" (subscript_expression "param_3[0x15]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);" (assignment_expression "uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f)" identifier = (binary_expression "(uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f)" (binary_expression "(uVar12 << 1) << (~uVar17 & 0x1f)" (parenthesized_expression "(uVar12 << 1)" ( (binary_expression "uVar12 << 1" identifier << number_literal) )) << (parenthesized_expression "(~uVar17 & 0x1f)" ( (binary_expression "~uVar17 & 0x1f" (unary_expression "~uVar17" ~ identifier) & number_literal) ))) | (binary_expression "(uint)uVar23 >> (uVar17 & 0x1f)" (cast_expression "(uint)uVar23" ( (type_descriptor "uint" type_identifier) ) identifier) >> (parenthesized_expression "(uVar17 & 0x1f)" ( (binary_expression "uVar17 & 0x1f" identifier & number_literal) ))))) ;) (if_statement "if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }" if (parenthesized_expression "((uVar17 & 0x20) != 0)" ( (binary_expression "(uVar17 & 0x20) != 0" (parenthesized_expression "(uVar17 & 0x20)" ( (binary_expression "uVar17 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }" { (expression_statement "uVar11 = uVar12 >> (uVar17 & 0x1f);" (assignment_expression "uVar11 = uVar12 >> (uVar17 & 0x1f)" identifier = (binary_expression "uVar12 >> (uVar17 & 0x1f)" identifier >> (parenthesized_expression "(uVar17 & 0x1f)" ( (binary_expression "uVar17 & 0x1f" identifier & number_literal) )))) ;) })) (expression_statement "bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));" (assignment_expression "bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f))" identifier = (call_expression "(byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f))" ( (binary_expression "(~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f)" (parenthesized_expression "(~(-1 << (uVar7 & 0x1f)) & uVar11)" ( (binary_expression "~(-1 << (uVar7 & 0x1f)) & uVar11" (unary_expression "~(-1 << (uVar7 & 0x1f))" ~ (parenthesized_expression "(-1 << (uVar7 & 0x1f))" ( (binary_expression "-1 << (uVar7 & 0x1f)" number_literal << (parenthesized_expression "(uVar7 & 0x1f)" ( (binary_expression "uVar7 & 0x1f" identifier & number_literal) ))) ))) & identifier) )) << (parenthesized_expression "(uVar14 & 0x1f)" ( (binary_expression "uVar14 & 0x1f" identifier & number_literal) ))) )))) ;) (if_statement "if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }" if (parenthesized_expression "((uVar14 & 0x20) != 0)" ( (binary_expression "(uVar14 & 0x20) != 0" (parenthesized_expression "(uVar14 & 0x20)" ( (binary_expression "uVar14 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                  bVar3 = 0;\n                }" { (expression_statement "bVar3 = 0;" (assignment_expression "bVar3 = 0" identifier = number_literal) ;) })) (expression_statement "*param_7 = bVar3 | *param_7;" (assignment_expression "*param_7 = bVar3 | *param_7" (pointer_expression "*param_7" * identifier) = (binary_expression "bVar3 | *param_7" identifier | (pointer_expression "*param_7" * identifier))) ;) (if_statement "if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }" if (parenthesized_expression "(uVar14 == 0)" ( (binary_expression "uVar14 == 0" identifier == number_literal) )) (compound_statement "{\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }" { (expression_statement "param_7 = param_7 + 1;" (assignment_expression "param_7 = param_7 + 1" identifier = (binary_expression "param_7 + 1" identifier + number_literal)) ;) (expression_statement "param_3[0x15] = 8;" (assignment_expression "param_3[0x15] = 8" (subscript_expression "param_3[0x15]" identifier [ number_literal ]) = number_literal) ;) })) }) while (parenthesized_expression "(0 < (int)uVar9)" ( (binary_expression "0 < (int)uVar9" number_literal < (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })) (expression_statement "uVar16 = uVar16 + 1;" (assignment_expression "uVar16 = uVar16 + 1" identifier = (binary_expression "uVar16 + 1" identifier + number_literal)) ;) (expression_statement "param_7 = param_7 + param_3[10];" (assignment_expression "param_7 = param_7 + param_3[10]" identifier = (binary_expression "param_7 + param_3[10]" identifier + (subscript_expression "param_3[10]" identifier [ number_literal ]))) ;) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" identifier = (binary_expression "param_6 + param_2[0xb0] * 4" identifier + (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" identifier [ number_literal ]) * number_literal))) ;) (if_statement "if (uVar16 == param_5) {\n              return;\n            }" if (parenthesized_expression "(uVar16 == param_5)" ( (binary_expression "uVar16 == param_5" identifier == identifier) )) (compound_statement "{\n              return;\n            }" { (return_statement "return;" return ;) })) (expression_statement "iVar1 = param_2[0xb4];" (assignment_expression "iVar1 = param_2[0xb4]" identifier = (subscript_expression "param_2[0xb4]" identifier [ number_literal ])) ;) (expression_statement "uVar17 = *param_3;" (assignment_expression "uVar17 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (if_statement "if (*(int *)(iVar1 + 0x40) != 0) break;" if (parenthesized_expression "(*(int *)(iVar1 + 0x40) != 0)" ( (binary_expression "*(int *)(iVar1 + 0x40) != 0" (pointer_expression "*(int *)(iVar1 + 0x40)" * (cast_expression "(int *)(iVar1 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x40)" ( (binary_expression "iVar1 + 0x40" identifier + number_literal) )))) != number_literal) )) (break_statement "break;" break ;)) (labeled_statement "LAB_001574b0:\n            uVar23 = 0;" statement_identifier : (expression_statement "uVar23 = 0;" (assignment_expression "uVar23 = 0" identifier = number_literal) ;)) })) }) while (parenthesized_expression "( true )" ( true )) ;) })) }))) }) (else_clause "else {\n    (*(code *)PTR_ThrowMagickException_003a8f20)\n              (param_8,PTR_s_courses_003a88ec + -0x7af0,PTR_s_courses_003a88ec + -0x768c,0x9d8,0x1d1\n               ,PTR_s_courses_003a88ec + -0x7ad4,PTR_LAB_003a88e0 + 0x3e28,param_2 + 0xd0);\n  }" else (compound_statement "{\n    (*(code *)PTR_ThrowMagickException_003a8f20)\n              (param_8,PTR_s_courses_003a88ec + -0x7af0,PTR_s_courses_003a88ec + -0x768c,0x9d8,0x1d1\n               ,PTR_s_courses_003a88ec + -0x7ad4,PTR_LAB_003a88e0 + 0x3e28,param_2 + 0xd0);\n  }" { (expression_statement "(*(code *)PTR_ThrowMagickException_003a8f20)\n              (param_8,PTR_s_courses_003a88ec + -0x7af0,PTR_s_courses_003a88ec + -0x768c,0x9d8,0x1d1\n               ,PTR_s_courses_003a88ec + -0x7ad4,PTR_LAB_003a88e0 + 0x3e28,param_2 + 0xd0);" (call_expression "(*(code *)PTR_ThrowMagickException_003a8f20)\n              (param_8,PTR_s_courses_003a88ec + -0x7af0,PTR_s_courses_003a88ec + -0x768c,0x9d8,0x1d1\n               ,PTR_s_courses_003a88ec + -0x7ad4,PTR_LAB_003a88e0 + 0x3e28,param_2 + 0xd0)" (parenthesized_expression "(*(code *)PTR_ThrowMagickException_003a8f20)" ( (pointer_expression "*(code *)PTR_ThrowMagickException_003a8f20" * (cast_expression "(code *)PTR_ThrowMagickException_003a8f20" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_8,PTR_s_courses_003a88ec + -0x7af0,PTR_s_courses_003a88ec + -0x768c,0x9d8,0x1d1\n               ,PTR_s_courses_003a88ec + -0x7ad4,PTR_LAB_003a88e0 + 0x3e28,param_2 + 0xd0)" ( identifier , (binary_expression "PTR_s_courses_003a88ec + -0x7af0" identifier + number_literal) , (binary_expression "PTR_s_courses_003a88ec + -0x768c" identifier + number_literal) , number_literal , number_literal , (binary_expression "PTR_s_courses_003a88ec + -0x7ad4" identifier + number_literal) , (binary_expression "PTR_LAB_003a88e0 + 0x3e28" identifier + number_literal) , (binary_expression "param_2 + 0xd0" identifier + number_literal) ))) ;) }))) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Enum "GravityType": Some values do not have unique names */\n/* WARNING: Enum "DisposeType": Some values do not have unique names */\n/* WARNING: Enum "ChannelType": Some values do not have unique names */\n/* WARNING: Enum "PixelChannel": Some values do not have unique names */\n/* WARNING: Enum "ExceptionType": Some values do not have unique names */\n\nvoid ExportIndexQuantum(Image *image,QuantumInfo *quantum_info,MagickSizeType number_pixels,\n                       Quantum *p,uchar *q,ExceptionInfo *exception)\n\n{\n  byte bVar1;\n  PixelChannelMap *pPVar2;\n  undefined1 uVar4;\n  byte bVar5;\n  undefined1 uVar6;\n  ushort uVar3;\n  undefined1 uVar7;\n  byte bVar8;\n  uint uVar9;\n  uint uVar10;\n  undefined1 uVar11;\n  uint uVar12;\n  undefined1 uVar14;\n  EndianType EVar13;\n  uint uVar15;\n  EndianType EVar16;\n  undefined1 uVar17;\n  uint uVar18;\n  undefined1 uVar19;\n  byte *pbVar20;\n  byte *pbVar21;\n  undefined1 *puVar22;\n  int iVar23;\n  uchar *puVar24;\n  uint uVar25;\n  float fVar28;\n  double dVar26;\n  undefined2 uVar29;\n  double dVar27;\n  float fVar30;\n  double dVar31;\n  undefined8 uVar32;\n  \n  if (image->storage_class == PseudoClass) {\n    uVar25 = quantum_info->depth;\n    if (uVar25 == 8) {\n      if (0 < (int)q) {\n        puVar24 = (uchar *)0x0;\n        fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n        do {\n          iVar23 = (int)(number_pixels >> 0x20);\n          uVar4 = 0;\n          if (image->channel_map[5].traits != UndefinedPixelTrait) {\n            fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n            if (fVar28 < fVar30) {\n              uVar4 = (undefined1)(int)fVar28;\n            }\n            else {\n              uVar4 = (undefined1)(int)(fVar28 - fVar30);\n            }\n          }\n          *(undefined1 *)number_pixels = uVar4;\n          puVar24 = puVar24 + 1;\n          number_pixels =\n               CONCAT44(iVar23 + image->number_channels * 4,\n                        (undefined1 *)number_pixels + quantum_info->pad + 1);\n        } while (puVar24 != q);\n      }\n    }\n    else {\n      if (uVar25 < 9) {\n        if (uVar25 == 1) {\n          if (7 < (int)q) {\n            fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar20 = (byte *)(number_pixels._4_4_ + ((uint)(q + -8) >> 3) + 1);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              pbVar21 = (byte *)number_pixels;\n              bVar5 = 0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = (byte)(((int)fVar28 & 0xffU) << 7);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = bVar5 | (byte)(((int)fVar28 & 1U) << 6);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar8 = bVar5;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 5);\n                bVar8 = bVar5 | bVar1;\n                *pbVar21 = bVar5 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar8 = bVar8 | (byte)(((int)fVar28 & 1U) << 4);\n              }\n              *pbVar21 = bVar8;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar5 = bVar8;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 3);\n                bVar5 = bVar8 | bVar1;\n                *pbVar21 = bVar8 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = bVar5 | (byte)(((int)fVar28 & 1U) << 2);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar8 = bVar5;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 1);\n                bVar8 = bVar5 | bVar1;\n                *pbVar21 = bVar5 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar28 < fVar30) {\n                  bVar5 = (byte)(int)fVar28;\n                }\n                else {\n                  bVar5 = (byte)(int)(fVar28 - fVar30);\n                }\n                bVar8 = bVar8 | bVar5 & 1;\n              }\n              *pbVar21 = bVar8;\n              number_pixels = CONCAT44(iVar23 + image->number_channels * 4,pbVar21 + 1);\n            } while (pbVar21 + 1 != pbVar20);\n          }\n          iVar23 = (int)(number_pixels >> 0x20);\n          if (((uint)q & 7) == 0) {\n            return;\n          }\n          *(undefined1 *)number_pixels = 0;\n          if (((uint)q & 7) == 0) {\n            return;\n          }\n          uVar10 = 0;\n          uVar25 = 7;\n          fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar30 <= fVar28) {\n                fVar28 = fVar28 - fVar30;\n              }\n              uVar10 = ((int)fVar28 & 1U) << (uVar25 & 0x1f) & 0xff | uVar10;\n            }\n            *(undefined1 *)number_pixels = (char)uVar10;\n            uVar25 = uVar25 - 1;\n            iVar23 = iVar23 + image->number_channels * 4;\n          } while (uVar25 != (~(uint)q & 7));\n          return;\n        }\n        if (uVar25 == 4) {\n          if (0 < (int)(q + -1)) {\n            fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar20 = (byte *)(number_pixels._4_4_ + ((uint)(q + -2) >> 1) + 1);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              pbVar21 = (byte *)number_pixels;\n              if (image->channel_map[5].traits == UndefinedPixelTrait) {\n                bVar5 = 0;\n              }\n              else {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = (byte)(((int)fVar28 & 0xffU) << 4);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar28 < fVar30) {\n                  bVar8 = (byte)(int)fVar28;\n                }\n                else {\n                  bVar8 = (byte)(int)(fVar28 - fVar30);\n                }\n                bVar5 = bVar5 | bVar8 & 0xf;\n              }\n              *pbVar21 = bVar5;\n              number_pixels = CONCAT44(iVar23 + image->number_channels * 4,pbVar21 + 1);\n            } while (pbVar21 + 1 != pbVar20);\n          }\n          if (((uint)q & 1) == 0) {\n            return;\n          }\n          if (image->channel_map[5].traits != UndefinedPixelTrait) {\n            fVar30 = *(float *)((int)(number_pixels >> 0x20) + image->channel_map[5].offset * 4);\n            if (fVar30 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              uVar4 = (undefined1)(((int)fVar30 & 0xfU) << 4);\n            }\n            else {\n              uVar4 = (undefined1)\n                      (((int)(fVar30 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU) << 4)\n              ;\n            }\n            *(undefined1 *)number_pixels = uVar4;\n            return;\n          }\n          *(undefined1 *)number_pixels = 0;\n          return;\n        }\n      }\n      else {\n        if (uVar25 == 0x20) {\n          if (quantum_info->format == FloatingPointQuantumFormat) {\n            puVar24 = (uchar *)0x0;\n            if ((int)q < 1) {\n              return;\n            }\n            dVar31 = (quantum_info->state).inverse_scale;\n            EVar13 = quantum_info->endian;\n            dVar27 = quantum_info->minimum;\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              dVar26 = 0.0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                dVar26 = (double)*(float *)(iVar23 + image->channel_map[5].offset * 4);\n              }\n              fVar30 = (float)(dVar31 * dVar26 + dVar27);\n              uVar7 = (undefined1)((uint)fVar30 >> 8);\n              uVar6 = (undefined1)((uint)fVar30 >> 0x10);\n              uVar4 = (undefined1)((uint)fVar30 >> 0x18);\n              if (EVar13 == LSBEndian) {\n                puVar22[1] = uVar6;\n                *puVar22 = uVar4;\n                puVar22[2] = uVar7;\n                puVar22[3] = SUB41(fVar30,0);\n              }\n              else {\n                *puVar22 = SUB41(fVar30,0);\n                puVar22[1] = uVar7;\n                puVar22[2] = uVar6;\n                puVar22[3] = uVar4;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 4);\n            } while (puVar24 != q);\n            return;\n          }\n          if ((int)q < 1) {\n            return;\n          }\n          puVar24 = (uchar *)0x0;\n          fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            iVar23 = (int)(number_pixels >> 0x20);\n            puVar22 = (undefined1 *)number_pixels;\n            uVar7 = 0;\n            uVar6 = 0;\n            uVar4 = 0;\n            uVar11 = 0;\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar30 <= fVar28) {\n                uVar25 = (int)(fVar28 - fVar30) | 0x80000000;\n              }\n              else {\n                uVar25 = (uint)fVar28;\n              }\n              uVar11 = (undefined1)(uVar25 >> 0x18);\n              uVar4 = (undefined1)(uVar25 >> 0x10);\n              uVar6 = (undefined1)(uVar25 >> 8);\n              uVar7 = (undefined1)uVar25;\n            }\n            if (quantum_info->endian == LSBEndian) {\n              *puVar22 = uVar7;\n              puVar22[1] = uVar6;\n              puVar22[2] = uVar4;\n              puVar22[3] = uVar11;\n            }\n            else {\n              *puVar22 = uVar11;\n              puVar22[1] = uVar4;\n              puVar22[2] = uVar6;\n              puVar22[3] = uVar7;\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 4);\n          } while (puVar24 != q);\n          return;\n        }\n        if (uVar25 == 0x40) {\n          if (quantum_info->format == FloatingPointQuantumFormat) {\n            puVar24 = (uchar *)0x0;\n            if ((int)q < 1) {\n              return;\n            }\n            dVar31 = (quantum_info->state).inverse_scale;\n            EVar13 = quantum_info->endian;\n            dVar27 = quantum_info->minimum;\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              dVar26 = 0.0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                dVar26 = (double)*(float *)(iVar23 + image->channel_map[5].offset * 4);\n              }\n              dVar26 = dVar31 * dVar26 + dVar27;\n              uVar4 = (undefined1)((ulonglong)dVar26 >> 0x20);\n              uVar19 = (undefined1)((ulonglong)dVar26 >> 8);\n              uVar17 = (undefined1)((ulonglong)dVar26 >> 0x10);\n              uVar7 = (undefined1)((ulonglong)dVar26 >> 0x18);\n              uVar14 = (undefined1)((ulonglong)dVar26 >> 0x28);\n              uVar11 = (undefined1)((ulonglong)dVar26 >> 0x30);\n              uVar6 = (undefined1)((ulonglong)dVar26 >> 0x38);\n              if (EVar13 == LSBEndian) {\n                puVar22[1] = uVar11;\n                *puVar22 = uVar6;\n                puVar22[2] = uVar14;\n                puVar22[3] = uVar4;\n                puVar22[4] = uVar7;\n                puVar22[5] = uVar17;\n                puVar22[6] = uVar19;\n                puVar22[7] = SUB81(dVar26,0);\n              }\n              else {\n                *puVar22 = SUB81(dVar26,0);\n                puVar22[1] = uVar19;\n                puVar22[2] = uVar17;\n                puVar22[3] = uVar7;\n                puVar22[4] = uVar4;\n                puVar22[5] = uVar14;\n                puVar22[6] = uVar11;\n                puVar22[7] = uVar6;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 8);\n            } while (puVar24 != q);\n            return;\n          }\n        }\n        else if (uVar25 == 0x10) {\n          if (quantum_info->format == FloatingPointQuantumFormat) {\n            if ((int)q < 1) {\n              return;\n            }\n            puVar24 = (uchar *)0x0;\n            EVar13 = LSBEndian;\n            dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              fVar30 = 0.0;\n              EVar16 = quantum_info->endian;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar30 = (float)((double)*(float *)(iVar23 + image->channel_map[5].offset * 4) *\n                                dVar27);\n              }\n              uVar3 = SinglePrecisionToHalf(fVar30);\n              uVar4 = (undefined1)(uVar3 >> 8);\n              if (EVar16 == EVar13) {\n                *puVar22 = (char)uVar3;\n                puVar22[1] = uVar4;\n              }\n              else {\n                *puVar22 = uVar4;\n                puVar22[1] = (char)uVar3;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2);\n            } while (puVar24 != q);\n            return;\n          }\n          if ((int)q < 1) {\n            return;\n          }\n          puVar24 = (uchar *)0x0;\n          fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            iVar23 = (int)(number_pixels >> 0x20);\n            puVar22 = (undefined1 *)number_pixels;\n            uVar6 = 0;\n            uVar4 = 0;\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar28 < fVar30) {\n                uVar29 = (undefined2)(int)fVar28;\n              }\n              else {\n                uVar29 = (undefined2)(int)(fVar28 - fVar30);\n              }\n              uVar4 = (undefined1)((ushort)uVar29 >> 8);\n              uVar6 = (undefined1)uVar29;\n            }\n            if (quantum_info->endian == LSBEndian) {\n              *puVar22 = uVar6;\n              puVar22[1] = uVar4;\n            }\n            else {\n              *puVar22 = uVar4;\n              puVar22[1] = uVar6;\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2);\n          } while (puVar24 != q);\n          return;\n        }\n      }\n      puVar24 = (uchar *)0x0;\n      if (0 < (int)q) {\n        pPVar2 = image->channel_map;\n        if (pPVar2[5].traits == UndefinedPixelTrait) goto LAB_001574b0;\n        do {\n          uVar32 = (*(code *)PTR___fixunssfdi_003a8a80)\n                             (*(undefined4 *)((int)(number_pixels >> 0x20) + pPVar2[5].offset * 4));\n          while( true ) {\n            uVar10 = (uint)((ulonglong)uVar32 >> 0x20);\n            pbVar20 = (byte *)number_pixels;\n            if ((quantum_info->state).bits == 0) {\n              (quantum_info->state).bits = 8;\n            }\n            if (0 < (int)uVar25) {\n              do {\n                uVar15 = (quantum_info->state).bits;\n                uVar9 = uVar15;\n                if (uVar25 <= uVar15) {\n                  uVar9 = uVar25;\n                }\n                uVar12 = uVar25 - uVar9;\n                uVar18 = uVar15 - uVar9;\n                uVar25 = uVar12;\n                if ((int)uVar12 < 0) {\n                  uVar25 = 0;\n                }\n                if (uVar15 == 8) {\n                  *pbVar20 = 0;\n                }\n                (quantum_info->state).bits = uVar18;\n                uVar15 = (uVar10 << 1) << (~uVar25 & 0x1f) | (uint)uVar32 >> (uVar25 & 0x1f);\n                if ((uVar25 & 0x20) != 0) {\n                  uVar15 = uVar10 >> (uVar25 & 0x1f);\n                }\n                bVar5 = (byte)((~(-1 << (uVar9 & 0x1f)) & uVar15) << (uVar18 & 0x1f));\n                if ((uVar18 & 0x20) != 0) {\n                  bVar5 = 0;\n                }\n                *pbVar20 = bVar5 | *pbVar20;\n                if (uVar18 == 0) {\n                  pbVar20 = pbVar20 + 1;\n                  (quantum_info->state).bits = 8;\n                }\n              } while (0 < (int)uVar12);\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44((int)(number_pixels >> 0x20) + image->number_channels * 4,\n                          pbVar20 + quantum_info->pad);\n            if (puVar24 == q) {\n              return;\n            }\n            pPVar2 = image->channel_map;\n            uVar25 = quantum_info->depth;\n            if (pPVar2[5].traits != UndefinedPixelTrait) break;\nLAB_001574b0:\n            uVar32 = 0;\n          }\n        } while( true );\n      }\n    }\n  }\n  else {\n    (*(code *)PTR_ThrowMagickException_003a8f20)\n              (exception,PTR_s_courses_003a88ec + -0x7af0,PTR_s_courses_003a88ec + -0x768c,0x9d8,\n               0x1d1,PTR_s_courses_003a88ec + -0x7ad4,PTR_LAB_003a88e0 + 0x3e28,image->filename);\n  }\n  return;\n}\n\n" comment comment comment comment comment (function_definition "void ExportIndexQuantum(Image *image,QuantumInfo *quantum_info,MagickSizeType number_pixels,\n                       Quantum *p,uchar *q,ExceptionInfo *exception)\n\n{\n  byte bVar1;\n  PixelChannelMap *pPVar2;\n  undefined1 uVar4;\n  byte bVar5;\n  undefined1 uVar6;\n  ushort uVar3;\n  undefined1 uVar7;\n  byte bVar8;\n  uint uVar9;\n  uint uVar10;\n  undefined1 uVar11;\n  uint uVar12;\n  undefined1 uVar14;\n  EndianType EVar13;\n  uint uVar15;\n  EndianType EVar16;\n  undefined1 uVar17;\n  uint uVar18;\n  undefined1 uVar19;\n  byte *pbVar20;\n  byte *pbVar21;\n  undefined1 *puVar22;\n  int iVar23;\n  uchar *puVar24;\n  uint uVar25;\n  float fVar28;\n  double dVar26;\n  undefined2 uVar29;\n  double dVar27;\n  float fVar30;\n  double dVar31;\n  undefined8 uVar32;\n  \n  if (image->storage_class == PseudoClass) {\n    uVar25 = quantum_info->depth;\n    if (uVar25 == 8) {\n      if (0 < (int)q) {\n        puVar24 = (uchar *)0x0;\n        fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n        do {\n          iVar23 = (int)(number_pixels >> 0x20);\n          uVar4 = 0;\n          if (image->channel_map[5].traits != UndefinedPixelTrait) {\n            fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n            if (fVar28 < fVar30) {\n              uVar4 = (undefined1)(int)fVar28;\n            }\n            else {\n              uVar4 = (undefined1)(int)(fVar28 - fVar30);\n            }\n          }\n          *(undefined1 *)number_pixels = uVar4;\n          puVar24 = puVar24 + 1;\n          number_pixels =\n               CONCAT44(iVar23 + image->number_channels * 4,\n                        (undefined1 *)number_pixels + quantum_info->pad + 1);\n        } while (puVar24 != q);\n      }\n    }\n    else {\n      if (uVar25 < 9) {\n        if (uVar25 == 1) {\n          if (7 < (int)q) {\n            fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar20 = (byte *)(number_pixels._4_4_ + ((uint)(q + -8) >> 3) + 1);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              pbVar21 = (byte *)number_pixels;\n              bVar5 = 0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = (byte)(((int)fVar28 & 0xffU) << 7);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = bVar5 | (byte)(((int)fVar28 & 1U) << 6);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar8 = bVar5;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 5);\n                bVar8 = bVar5 | bVar1;\n                *pbVar21 = bVar5 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar8 = bVar8 | (byte)(((int)fVar28 & 1U) << 4);\n              }\n              *pbVar21 = bVar8;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar5 = bVar8;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 3);\n                bVar5 = bVar8 | bVar1;\n                *pbVar21 = bVar8 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = bVar5 | (byte)(((int)fVar28 & 1U) << 2);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar8 = bVar5;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 1);\n                bVar8 = bVar5 | bVar1;\n                *pbVar21 = bVar5 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar28 < fVar30) {\n                  bVar5 = (byte)(int)fVar28;\n                }\n                else {\n                  bVar5 = (byte)(int)(fVar28 - fVar30);\n                }\n                bVar8 = bVar8 | bVar5 & 1;\n              }\n              *pbVar21 = bVar8;\n              number_pixels = CONCAT44(iVar23 + image->number_channels * 4,pbVar21 + 1);\n            } while (pbVar21 + 1 != pbVar20);\n          }\n          iVar23 = (int)(number_pixels >> 0x20);\n          if (((uint)q & 7) == 0) {\n            return;\n          }\n          *(undefined1 *)number_pixels = 0;\n          if (((uint)q & 7) == 0) {\n            return;\n          }\n          uVar10 = 0;\n          uVar25 = 7;\n          fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar30 <= fVar28) {\n                fVar28 = fVar28 - fVar30;\n              }\n              uVar10 = ((int)fVar28 & 1U) << (uVar25 & 0x1f) & 0xff | uVar10;\n            }\n            *(undefined1 *)number_pixels = (char)uVar10;\n            uVar25 = uVar25 - 1;\n            iVar23 = iVar23 + image->number_channels * 4;\n          } while (uVar25 != (~(uint)q & 7));\n          return;\n        }\n        if (uVar25 == 4) {\n          if (0 < (int)(q + -1)) {\n            fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar20 = (byte *)(number_pixels._4_4_ + ((uint)(q + -2) >> 1) + 1);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              pbVar21 = (byte *)number_pixels;\n              if (image->channel_map[5].traits == UndefinedPixelTrait) {\n                bVar5 = 0;\n              }\n              else {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = (byte)(((int)fVar28 & 0xffU) << 4);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar28 < fVar30) {\n                  bVar8 = (byte)(int)fVar28;\n                }\n                else {\n                  bVar8 = (byte)(int)(fVar28 - fVar30);\n                }\n                bVar5 = bVar5 | bVar8 & 0xf;\n              }\n              *pbVar21 = bVar5;\n              number_pixels = CONCAT44(iVar23 + image->number_channels * 4,pbVar21 + 1);\n            } while (pbVar21 + 1 != pbVar20);\n          }\n          if (((uint)q & 1) == 0) {\n            return;\n          }\n          if (image->channel_map[5].traits != UndefinedPixelTrait) {\n            fVar30 = *(float *)((int)(number_pixels >> 0x20) + image->channel_map[5].offset * 4);\n            if (fVar30 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              uVar4 = (undefined1)(((int)fVar30 & 0xfU) << 4);\n            }\n            else {\n              uVar4 = (undefined1)\n                      (((int)(fVar30 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU) << 4)\n              ;\n            }\n            *(undefined1 *)number_pixels = uVar4;\n            return;\n          }\n          *(undefined1 *)number_pixels = 0;\n          return;\n        }\n      }\n      else {\n        if (uVar25 == 0x20) {\n          if (quantum_info->format == FloatingPointQuantumFormat) {\n            puVar24 = (uchar *)0x0;\n            if ((int)q < 1) {\n              return;\n            }\n            dVar31 = (quantum_info->state).inverse_scale;\n            EVar13 = quantum_info->endian;\n            dVar27 = quantum_info->minimum;\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              dVar26 = 0.0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                dVar26 = (double)*(float *)(iVar23 + image->channel_map[5].offset * 4);\n              }\n              fVar30 = (float)(dVar31 * dVar26 + dVar27);\n              uVar7 = (undefined1)((uint)fVar30 >> 8);\n              uVar6 = (undefined1)((uint)fVar30 >> 0x10);\n              uVar4 = (undefined1)((uint)fVar30 >> 0x18);\n              if (EVar13 == LSBEndian) {\n                puVar22[1] = uVar6;\n                *puVar22 = uVar4;\n                puVar22[2] = uVar7;\n                puVar22[3] = SUB41(fVar30,0);\n              }\n              else {\n                *puVar22 = SUB41(fVar30,0);\n                puVar22[1] = uVar7;\n                puVar22[2] = uVar6;\n                puVar22[3] = uVar4;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 4);\n            } while (puVar24 != q);\n            return;\n          }\n          if ((int)q < 1) {\n            return;\n          }\n          puVar24 = (uchar *)0x0;\n          fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            iVar23 = (int)(number_pixels >> 0x20);\n            puVar22 = (undefined1 *)number_pixels;\n            uVar7 = 0;\n            uVar6 = 0;\n            uVar4 = 0;\n            uVar11 = 0;\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar30 <= fVar28) {\n                uVar25 = (int)(fVar28 - fVar30) | 0x80000000;\n              }\n              else {\n                uVar25 = (uint)fVar28;\n              }\n              uVar11 = (undefined1)(uVar25 >> 0x18);\n              uVar4 = (undefined1)(uVar25 >> 0x10);\n              uVar6 = (undefined1)(uVar25 >> 8);\n              uVar7 = (undefined1)uVar25;\n            }\n            if (quantum_info->endian == LSBEndian) {\n              *puVar22 = uVar7;\n              puVar22[1] = uVar6;\n              puVar22[2] = uVar4;\n              puVar22[3] = uVar11;\n            }\n            else {\n              *puVar22 = uVar11;\n              puVar22[1] = uVar4;\n              puVar22[2] = uVar6;\n              puVar22[3] = uVar7;\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 4);\n          } while (puVar24 != q);\n          return;\n        }\n        if (uVar25 == 0x40) {\n          if (quantum_info->format == FloatingPointQuantumFormat) {\n            puVar24 = (uchar *)0x0;\n            if ((int)q < 1) {\n              return;\n            }\n            dVar31 = (quantum_info->state).inverse_scale;\n            EVar13 = quantum_info->endian;\n            dVar27 = quantum_info->minimum;\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              dVar26 = 0.0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                dVar26 = (double)*(float *)(iVar23 + image->channel_map[5].offset * 4);\n              }\n              dVar26 = dVar31 * dVar26 + dVar27;\n              uVar4 = (undefined1)((ulonglong)dVar26 >> 0x20);\n              uVar19 = (undefined1)((ulonglong)dVar26 >> 8);\n              uVar17 = (undefined1)((ulonglong)dVar26 >> 0x10);\n              uVar7 = (undefined1)((ulonglong)dVar26 >> 0x18);\n              uVar14 = (undefined1)((ulonglong)dVar26 >> 0x28);\n              uVar11 = (undefined1)((ulonglong)dVar26 >> 0x30);\n              uVar6 = (undefined1)((ulonglong)dVar26 >> 0x38);\n              if (EVar13 == LSBEndian) {\n                puVar22[1] = uVar11;\n                *puVar22 = uVar6;\n                puVar22[2] = uVar14;\n                puVar22[3] = uVar4;\n                puVar22[4] = uVar7;\n                puVar22[5] = uVar17;\n                puVar22[6] = uVar19;\n                puVar22[7] = SUB81(dVar26,0);\n              }\n              else {\n                *puVar22 = SUB81(dVar26,0);\n                puVar22[1] = uVar19;\n                puVar22[2] = uVar17;\n                puVar22[3] = uVar7;\n                puVar22[4] = uVar4;\n                puVar22[5] = uVar14;\n                puVar22[6] = uVar11;\n                puVar22[7] = uVar6;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 8);\n            } while (puVar24 != q);\n            return;\n          }\n        }\n        else if (uVar25 == 0x10) {\n          if (quantum_info->format == FloatingPointQuantumFormat) {\n            if ((int)q < 1) {\n              return;\n            }\n            puVar24 = (uchar *)0x0;\n            EVar13 = LSBEndian;\n            dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              fVar30 = 0.0;\n              EVar16 = quantum_info->endian;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar30 = (float)((double)*(float *)(iVar23 + image->channel_map[5].offset * 4) *\n                                dVar27);\n              }\n              uVar3 = SinglePrecisionToHalf(fVar30);\n              uVar4 = (undefined1)(uVar3 >> 8);\n              if (EVar16 == EVar13) {\n                *puVar22 = (char)uVar3;\n                puVar22[1] = uVar4;\n              }\n              else {\n                *puVar22 = uVar4;\n                puVar22[1] = (char)uVar3;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2);\n            } while (puVar24 != q);\n            return;\n          }\n          if ((int)q < 1) {\n            return;\n          }\n          puVar24 = (uchar *)0x0;\n          fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            iVar23 = (int)(number_pixels >> 0x20);\n            puVar22 = (undefined1 *)number_pixels;\n            uVar6 = 0;\n            uVar4 = 0;\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar28 < fVar30) {\n                uVar29 = (undefined2)(int)fVar28;\n              }\n              else {\n                uVar29 = (undefined2)(int)(fVar28 - fVar30);\n              }\n              uVar4 = (undefined1)((ushort)uVar29 >> 8);\n              uVar6 = (undefined1)uVar29;\n            }\n            if (quantum_info->endian == LSBEndian) {\n              *puVar22 = uVar6;\n              puVar22[1] = uVar4;\n            }\n            else {\n              *puVar22 = uVar4;\n              puVar22[1] = uVar6;\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2);\n          } while (puVar24 != q);\n          return;\n        }\n      }\n      puVar24 = (uchar *)0x0;\n      if (0 < (int)q) {\n        pPVar2 = image->channel_map;\n        if (pPVar2[5].traits == UndefinedPixelTrait) goto LAB_001574b0;\n        do {\n          uVar32 = (*(code *)PTR___fixunssfdi_003a8a80)\n                             (*(undefined4 *)((int)(number_pixels >> 0x20) + pPVar2[5].offset * 4));\n          while( true ) {\n            uVar10 = (uint)((ulonglong)uVar32 >> 0x20);\n            pbVar20 = (byte *)number_pixels;\n            if ((quantum_info->state).bits == 0) {\n              (quantum_info->state).bits = 8;\n            }\n            if (0 < (int)uVar25) {\n              do {\n                uVar15 = (quantum_info->state).bits;\n                uVar9 = uVar15;\n                if (uVar25 <= uVar15) {\n                  uVar9 = uVar25;\n                }\n                uVar12 = uVar25 - uVar9;\n                uVar18 = uVar15 - uVar9;\n                uVar25 = uVar12;\n                if ((int)uVar12 < 0) {\n                  uVar25 = 0;\n                }\n                if (uVar15 == 8) {\n                  *pbVar20 = 0;\n                }\n                (quantum_info->state).bits = uVar18;\n                uVar15 = (uVar10 << 1) << (~uVar25 & 0x1f) | (uint)uVar32 >> (uVar25 & 0x1f);\n                if ((uVar25 & 0x20) != 0) {\n                  uVar15 = uVar10 >> (uVar25 & 0x1f);\n                }\n                bVar5 = (byte)((~(-1 << (uVar9 & 0x1f)) & uVar15) << (uVar18 & 0x1f));\n                if ((uVar18 & 0x20) != 0) {\n                  bVar5 = 0;\n                }\n                *pbVar20 = bVar5 | *pbVar20;\n                if (uVar18 == 0) {\n                  pbVar20 = pbVar20 + 1;\n                  (quantum_info->state).bits = 8;\n                }\n              } while (0 < (int)uVar12);\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44((int)(number_pixels >> 0x20) + image->number_channels * 4,\n                          pbVar20 + quantum_info->pad);\n            if (puVar24 == q) {\n              return;\n            }\n            pPVar2 = image->channel_map;\n            uVar25 = quantum_info->depth;\n            if (pPVar2[5].traits != UndefinedPixelTrait) break;\nLAB_001574b0:\n            uVar32 = 0;\n          }\n        } while( true );\n      }\n    }\n  }\n  else {\n    (*(code *)PTR_ThrowMagickException_003a8f20)\n              (exception,PTR_s_courses_003a88ec + -0x7af0,PTR_s_courses_003a88ec + -0x768c,0x9d8,\n               0x1d1,PTR_s_courses_003a88ec + -0x7ad4,PTR_LAB_003a88e0 + 0x3e28,image->filename);\n  }\n  return;\n}" primitive_type (function_declarator "ExportIndexQuantum(Image *image,QuantumInfo *quantum_info,MagickSizeType number_pixels,\n                       Quantum *p,uchar *q,ExceptionInfo *exception)" identifier (parameter_list "(Image *image,QuantumInfo *quantum_info,MagickSizeType number_pixels,\n                       Quantum *p,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 bVar1;\n  PixelChannelMap *pPVar2;\n  undefined1 uVar4;\n  byte bVar5;\n  undefined1 uVar6;\n  ushort uVar3;\n  undefined1 uVar7;\n  byte bVar8;\n  uint uVar9;\n  uint uVar10;\n  undefined1 uVar11;\n  uint uVar12;\n  undefined1 uVar14;\n  EndianType EVar13;\n  uint uVar15;\n  EndianType EVar16;\n  undefined1 uVar17;\n  uint uVar18;\n  undefined1 uVar19;\n  byte *pbVar20;\n  byte *pbVar21;\n  undefined1 *puVar22;\n  int iVar23;\n  uchar *puVar24;\n  uint uVar25;\n  float fVar28;\n  double dVar26;\n  undefined2 uVar29;\n  double dVar27;\n  float fVar30;\n  double dVar31;\n  undefined8 uVar32;\n  \n  if (image->storage_class == PseudoClass) {\n    uVar25 = quantum_info->depth;\n    if (uVar25 == 8) {\n      if (0 < (int)q) {\n        puVar24 = (uchar *)0x0;\n        fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n        do {\n          iVar23 = (int)(number_pixels >> 0x20);\n          uVar4 = 0;\n          if (image->channel_map[5].traits != UndefinedPixelTrait) {\n            fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n            if (fVar28 < fVar30) {\n              uVar4 = (undefined1)(int)fVar28;\n            }\n            else {\n              uVar4 = (undefined1)(int)(fVar28 - fVar30);\n            }\n          }\n          *(undefined1 *)number_pixels = uVar4;\n          puVar24 = puVar24 + 1;\n          number_pixels =\n               CONCAT44(iVar23 + image->number_channels * 4,\n                        (undefined1 *)number_pixels + quantum_info->pad + 1);\n        } while (puVar24 != q);\n      }\n    }\n    else {\n      if (uVar25 < 9) {\n        if (uVar25 == 1) {\n          if (7 < (int)q) {\n            fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar20 = (byte *)(number_pixels._4_4_ + ((uint)(q + -8) >> 3) + 1);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              pbVar21 = (byte *)number_pixels;\n              bVar5 = 0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = (byte)(((int)fVar28 & 0xffU) << 7);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = bVar5 | (byte)(((int)fVar28 & 1U) << 6);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar8 = bVar5;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 5);\n                bVar8 = bVar5 | bVar1;\n                *pbVar21 = bVar5 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar8 = bVar8 | (byte)(((int)fVar28 & 1U) << 4);\n              }\n              *pbVar21 = bVar8;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar5 = bVar8;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 3);\n                bVar5 = bVar8 | bVar1;\n                *pbVar21 = bVar8 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = bVar5 | (byte)(((int)fVar28 & 1U) << 2);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar8 = bVar5;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 1);\n                bVar8 = bVar5 | bVar1;\n                *pbVar21 = bVar5 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar28 < fVar30) {\n                  bVar5 = (byte)(int)fVar28;\n                }\n                else {\n                  bVar5 = (byte)(int)(fVar28 - fVar30);\n                }\n                bVar8 = bVar8 | bVar5 & 1;\n              }\n              *pbVar21 = bVar8;\n              number_pixels = CONCAT44(iVar23 + image->number_channels * 4,pbVar21 + 1);\n            } while (pbVar21 + 1 != pbVar20);\n          }\n          iVar23 = (int)(number_pixels >> 0x20);\n          if (((uint)q & 7) == 0) {\n            return;\n          }\n          *(undefined1 *)number_pixels = 0;\n          if (((uint)q & 7) == 0) {\n            return;\n          }\n          uVar10 = 0;\n          uVar25 = 7;\n          fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar30 <= fVar28) {\n                fVar28 = fVar28 - fVar30;\n              }\n              uVar10 = ((int)fVar28 & 1U) << (uVar25 & 0x1f) & 0xff | uVar10;\n            }\n            *(undefined1 *)number_pixels = (char)uVar10;\n            uVar25 = uVar25 - 1;\n            iVar23 = iVar23 + image->number_channels * 4;\n          } while (uVar25 != (~(uint)q & 7));\n          return;\n        }\n        if (uVar25 == 4) {\n          if (0 < (int)(q + -1)) {\n            fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar20 = (byte *)(number_pixels._4_4_ + ((uint)(q + -2) >> 1) + 1);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              pbVar21 = (byte *)number_pixels;\n              if (image->channel_map[5].traits == UndefinedPixelTrait) {\n                bVar5 = 0;\n              }\n              else {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = (byte)(((int)fVar28 & 0xffU) << 4);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar28 < fVar30) {\n                  bVar8 = (byte)(int)fVar28;\n                }\n                else {\n                  bVar8 = (byte)(int)(fVar28 - fVar30);\n                }\n                bVar5 = bVar5 | bVar8 & 0xf;\n              }\n              *pbVar21 = bVar5;\n              number_pixels = CONCAT44(iVar23 + image->number_channels * 4,pbVar21 + 1);\n            } while (pbVar21 + 1 != pbVar20);\n          }\n          if (((uint)q & 1) == 0) {\n            return;\n          }\n          if (image->channel_map[5].traits != UndefinedPixelTrait) {\n            fVar30 = *(float *)((int)(number_pixels >> 0x20) + image->channel_map[5].offset * 4);\n            if (fVar30 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              uVar4 = (undefined1)(((int)fVar30 & 0xfU) << 4);\n            }\n            else {\n              uVar4 = (undefined1)\n                      (((int)(fVar30 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU) << 4)\n              ;\n            }\n            *(undefined1 *)number_pixels = uVar4;\n            return;\n          }\n          *(undefined1 *)number_pixels = 0;\n          return;\n        }\n      }\n      else {\n        if (uVar25 == 0x20) {\n          if (quantum_info->format == FloatingPointQuantumFormat) {\n            puVar24 = (uchar *)0x0;\n            if ((int)q < 1) {\n              return;\n            }\n            dVar31 = (quantum_info->state).inverse_scale;\n            EVar13 = quantum_info->endian;\n            dVar27 = quantum_info->minimum;\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              dVar26 = 0.0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                dVar26 = (double)*(float *)(iVar23 + image->channel_map[5].offset * 4);\n              }\n              fVar30 = (float)(dVar31 * dVar26 + dVar27);\n              uVar7 = (undefined1)((uint)fVar30 >> 8);\n              uVar6 = (undefined1)((uint)fVar30 >> 0x10);\n              uVar4 = (undefined1)((uint)fVar30 >> 0x18);\n              if (EVar13 == LSBEndian) {\n                puVar22[1] = uVar6;\n                *puVar22 = uVar4;\n                puVar22[2] = uVar7;\n                puVar22[3] = SUB41(fVar30,0);\n              }\n              else {\n                *puVar22 = SUB41(fVar30,0);\n                puVar22[1] = uVar7;\n                puVar22[2] = uVar6;\n                puVar22[3] = uVar4;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 4);\n            } while (puVar24 != q);\n            return;\n          }\n          if ((int)q < 1) {\n            return;\n          }\n          puVar24 = (uchar *)0x0;\n          fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            iVar23 = (int)(number_pixels >> 0x20);\n            puVar22 = (undefined1 *)number_pixels;\n            uVar7 = 0;\n            uVar6 = 0;\n            uVar4 = 0;\n            uVar11 = 0;\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar30 <= fVar28) {\n                uVar25 = (int)(fVar28 - fVar30) | 0x80000000;\n              }\n              else {\n                uVar25 = (uint)fVar28;\n              }\n              uVar11 = (undefined1)(uVar25 >> 0x18);\n              uVar4 = (undefined1)(uVar25 >> 0x10);\n              uVar6 = (undefined1)(uVar25 >> 8);\n              uVar7 = (undefined1)uVar25;\n            }\n            if (quantum_info->endian == LSBEndian) {\n              *puVar22 = uVar7;\n              puVar22[1] = uVar6;\n              puVar22[2] = uVar4;\n              puVar22[3] = uVar11;\n            }\n            else {\n              *puVar22 = uVar11;\n              puVar22[1] = uVar4;\n              puVar22[2] = uVar6;\n              puVar22[3] = uVar7;\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 4);\n          } while (puVar24 != q);\n          return;\n        }\n        if (uVar25 == 0x40) {\n          if (quantum_info->format == FloatingPointQuantumFormat) {\n            puVar24 = (uchar *)0x0;\n            if ((int)q < 1) {\n              return;\n            }\n            dVar31 = (quantum_info->state).inverse_scale;\n            EVar13 = quantum_info->endian;\n            dVar27 = quantum_info->minimum;\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              dVar26 = 0.0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                dVar26 = (double)*(float *)(iVar23 + image->channel_map[5].offset * 4);\n              }\n              dVar26 = dVar31 * dVar26 + dVar27;\n              uVar4 = (undefined1)((ulonglong)dVar26 >> 0x20);\n              uVar19 = (undefined1)((ulonglong)dVar26 >> 8);\n              uVar17 = (undefined1)((ulonglong)dVar26 >> 0x10);\n              uVar7 = (undefined1)((ulonglong)dVar26 >> 0x18);\n              uVar14 = (undefined1)((ulonglong)dVar26 >> 0x28);\n              uVar11 = (undefined1)((ulonglong)dVar26 >> 0x30);\n              uVar6 = (undefined1)((ulonglong)dVar26 >> 0x38);\n              if (EVar13 == LSBEndian) {\n                puVar22[1] = uVar11;\n                *puVar22 = uVar6;\n                puVar22[2] = uVar14;\n                puVar22[3] = uVar4;\n                puVar22[4] = uVar7;\n                puVar22[5] = uVar17;\n                puVar22[6] = uVar19;\n                puVar22[7] = SUB81(dVar26,0);\n              }\n              else {\n                *puVar22 = SUB81(dVar26,0);\n                puVar22[1] = uVar19;\n                puVar22[2] = uVar17;\n                puVar22[3] = uVar7;\n                puVar22[4] = uVar4;\n                puVar22[5] = uVar14;\n                puVar22[6] = uVar11;\n                puVar22[7] = uVar6;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 8);\n            } while (puVar24 != q);\n            return;\n          }\n        }\n        else if (uVar25 == 0x10) {\n          if (quantum_info->format == FloatingPointQuantumFormat) {\n            if ((int)q < 1) {\n              return;\n            }\n            puVar24 = (uchar *)0x0;\n            EVar13 = LSBEndian;\n            dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              fVar30 = 0.0;\n              EVar16 = quantum_info->endian;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar30 = (float)((double)*(float *)(iVar23 + image->channel_map[5].offset * 4) *\n                                dVar27);\n              }\n              uVar3 = SinglePrecisionToHalf(fVar30);\n              uVar4 = (undefined1)(uVar3 >> 8);\n              if (EVar16 == EVar13) {\n                *puVar22 = (char)uVar3;\n                puVar22[1] = uVar4;\n              }\n              else {\n                *puVar22 = uVar4;\n                puVar22[1] = (char)uVar3;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2);\n            } while (puVar24 != q);\n            return;\n          }\n          if ((int)q < 1) {\n            return;\n          }\n          puVar24 = (uchar *)0x0;\n          fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            iVar23 = (int)(number_pixels >> 0x20);\n            puVar22 = (undefined1 *)number_pixels;\n            uVar6 = 0;\n            uVar4 = 0;\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar28 < fVar30) {\n                uVar29 = (undefined2)(int)fVar28;\n              }\n              else {\n                uVar29 = (undefined2)(int)(fVar28 - fVar30);\n              }\n              uVar4 = (undefined1)((ushort)uVar29 >> 8);\n              uVar6 = (undefined1)uVar29;\n            }\n            if (quantum_info->endian == LSBEndian) {\n              *puVar22 = uVar6;\n              puVar22[1] = uVar4;\n            }\n            else {\n              *puVar22 = uVar4;\n              puVar22[1] = uVar6;\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2);\n          } while (puVar24 != q);\n          return;\n        }\n      }\n      puVar24 = (uchar *)0x0;\n      if (0 < (int)q) {\n        pPVar2 = image->channel_map;\n        if (pPVar2[5].traits == UndefinedPixelTrait) goto LAB_001574b0;\n        do {\n          uVar32 = (*(code *)PTR___fixunssfdi_003a8a80)\n                             (*(undefined4 *)((int)(number_pixels >> 0x20) + pPVar2[5].offset * 4));\n          while( true ) {\n            uVar10 = (uint)((ulonglong)uVar32 >> 0x20);\n            pbVar20 = (byte *)number_pixels;\n            if ((quantum_info->state).bits == 0) {\n              (quantum_info->state).bits = 8;\n            }\n            if (0 < (int)uVar25) {\n              do {\n                uVar15 = (quantum_info->state).bits;\n                uVar9 = uVar15;\n                if (uVar25 <= uVar15) {\n                  uVar9 = uVar25;\n                }\n                uVar12 = uVar25 - uVar9;\n                uVar18 = uVar15 - uVar9;\n                uVar25 = uVar12;\n                if ((int)uVar12 < 0) {\n                  uVar25 = 0;\n                }\n                if (uVar15 == 8) {\n                  *pbVar20 = 0;\n                }\n                (quantum_info->state).bits = uVar18;\n                uVar15 = (uVar10 << 1) << (~uVar25 & 0x1f) | (uint)uVar32 >> (uVar25 & 0x1f);\n                if ((uVar25 & 0x20) != 0) {\n                  uVar15 = uVar10 >> (uVar25 & 0x1f);\n                }\n                bVar5 = (byte)((~(-1 << (uVar9 & 0x1f)) & uVar15) << (uVar18 & 0x1f));\n                if ((uVar18 & 0x20) != 0) {\n                  bVar5 = 0;\n                }\n                *pbVar20 = bVar5 | *pbVar20;\n                if (uVar18 == 0) {\n                  pbVar20 = pbVar20 + 1;\n                  (quantum_info->state).bits = 8;\n                }\n              } while (0 < (int)uVar12);\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44((int)(number_pixels >> 0x20) + image->number_channels * 4,\n                          pbVar20 + quantum_info->pad);\n            if (puVar24 == q) {\n              return;\n            }\n            pPVar2 = image->channel_map;\n            uVar25 = quantum_info->depth;\n            if (pPVar2[5].traits != UndefinedPixelTrait) break;\nLAB_001574b0:\n            uVar32 = 0;\n          }\n        } while( true );\n      }\n    }\n  }\n  else {\n    (*(code *)PTR_ThrowMagickException_003a8f20)\n              (exception,PTR_s_courses_003a88ec + -0x7af0,PTR_s_courses_003a88ec + -0x768c,0x9d8,\n               0x1d1,PTR_s_courses_003a88ec + -0x7ad4,PTR_LAB_003a88e0 + 0x3e28,image->filename);\n  }\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "PixelChannelMap *pPVar2;" type_identifier (pointer_declarator "*pPVar2" * identifier) ;) (declaration "undefined1 uVar4;" type_identifier identifier ;) (declaration "byte bVar5;" type_identifier identifier ;) (declaration "undefined1 uVar6;" type_identifier identifier ;) (declaration "ushort uVar3;" type_identifier identifier ;) (declaration "undefined1 uVar7;" type_identifier identifier ;) (declaration "byte bVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "undefined1 uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "undefined1 uVar14;" type_identifier identifier ;) (declaration "EndianType EVar13;" type_identifier identifier ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "EndianType EVar16;" type_identifier identifier ;) (declaration "undefined1 uVar17;" type_identifier identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "undefined1 uVar19;" type_identifier identifier ;) (declaration "byte *pbVar20;" type_identifier (pointer_declarator "*pbVar20" * identifier) ;) (declaration "byte *pbVar21;" type_identifier (pointer_declarator "*pbVar21" * identifier) ;) (declaration "undefined1 *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "int iVar23;" primitive_type identifier ;) (declaration "uchar *puVar24;" type_identifier (pointer_declarator "*puVar24" * identifier) ;) (declaration "uint uVar25;" type_identifier identifier ;) (declaration "float fVar28;" primitive_type identifier ;) (declaration "double dVar26;" primitive_type identifier ;) (declaration "undefined2 uVar29;" type_identifier identifier ;) (declaration "double dVar27;" primitive_type identifier ;) (declaration "float fVar30;" primitive_type identifier ;) (declaration "double dVar31;" primitive_type identifier ;) (declaration "undefined8 uVar32;" type_identifier identifier ;) (if_statement "if (image->storage_class == PseudoClass) {\n    uVar25 = quantum_info->depth;\n    if (uVar25 == 8) {\n      if (0 < (int)q) {\n        puVar24 = (uchar *)0x0;\n        fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n        do {\n          iVar23 = (int)(number_pixels >> 0x20);\n          uVar4 = 0;\n          if (image->channel_map[5].traits != UndefinedPixelTrait) {\n            fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n            if (fVar28 < fVar30) {\n              uVar4 = (undefined1)(int)fVar28;\n            }\n            else {\n              uVar4 = (undefined1)(int)(fVar28 - fVar30);\n            }\n          }\n          *(undefined1 *)number_pixels = uVar4;\n          puVar24 = puVar24 + 1;\n          number_pixels =\n               CONCAT44(iVar23 + image->number_channels * 4,\n                        (undefined1 *)number_pixels + quantum_info->pad + 1);\n        } while (puVar24 != q);\n      }\n    }\n    else {\n      if (uVar25 < 9) {\n        if (uVar25 == 1) {\n          if (7 < (int)q) {\n            fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar20 = (byte *)(number_pixels._4_4_ + ((uint)(q + -8) >> 3) + 1);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              pbVar21 = (byte *)number_pixels;\n              bVar5 = 0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = (byte)(((int)fVar28 & 0xffU) << 7);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = bVar5 | (byte)(((int)fVar28 & 1U) << 6);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar8 = bVar5;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 5);\n                bVar8 = bVar5 | bVar1;\n                *pbVar21 = bVar5 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar8 = bVar8 | (byte)(((int)fVar28 & 1U) << 4);\n              }\n              *pbVar21 = bVar8;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar5 = bVar8;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 3);\n                bVar5 = bVar8 | bVar1;\n                *pbVar21 = bVar8 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = bVar5 | (byte)(((int)fVar28 & 1U) << 2);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar8 = bVar5;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 1);\n                bVar8 = bVar5 | bVar1;\n                *pbVar21 = bVar5 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar28 < fVar30) {\n                  bVar5 = (byte)(int)fVar28;\n                }\n                else {\n                  bVar5 = (byte)(int)(fVar28 - fVar30);\n                }\n                bVar8 = bVar8 | bVar5 & 1;\n              }\n              *pbVar21 = bVar8;\n              number_pixels = CONCAT44(iVar23 + image->number_channels * 4,pbVar21 + 1);\n            } while (pbVar21 + 1 != pbVar20);\n          }\n          iVar23 = (int)(number_pixels >> 0x20);\n          if (((uint)q & 7) == 0) {\n            return;\n          }\n          *(undefined1 *)number_pixels = 0;\n          if (((uint)q & 7) == 0) {\n            return;\n          }\n          uVar10 = 0;\n          uVar25 = 7;\n          fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar30 <= fVar28) {\n                fVar28 = fVar28 - fVar30;\n              }\n              uVar10 = ((int)fVar28 & 1U) << (uVar25 & 0x1f) & 0xff | uVar10;\n            }\n            *(undefined1 *)number_pixels = (char)uVar10;\n            uVar25 = uVar25 - 1;\n            iVar23 = iVar23 + image->number_channels * 4;\n          } while (uVar25 != (~(uint)q & 7));\n          return;\n        }\n        if (uVar25 == 4) {\n          if (0 < (int)(q + -1)) {\n            fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar20 = (byte *)(number_pixels._4_4_ + ((uint)(q + -2) >> 1) + 1);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              pbVar21 = (byte *)number_pixels;\n              if (image->channel_map[5].traits == UndefinedPixelTrait) {\n                bVar5 = 0;\n              }\n              else {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = (byte)(((int)fVar28 & 0xffU) << 4);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar28 < fVar30) {\n                  bVar8 = (byte)(int)fVar28;\n                }\n                else {\n                  bVar8 = (byte)(int)(fVar28 - fVar30);\n                }\n                bVar5 = bVar5 | bVar8 & 0xf;\n              }\n              *pbVar21 = bVar5;\n              number_pixels = CONCAT44(iVar23 + image->number_channels * 4,pbVar21 + 1);\n            } while (pbVar21 + 1 != pbVar20);\n          }\n          if (((uint)q & 1) == 0) {\n            return;\n          }\n          if (image->channel_map[5].traits != UndefinedPixelTrait) {\n            fVar30 = *(float *)((int)(number_pixels >> 0x20) + image->channel_map[5].offset * 4);\n            if (fVar30 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              uVar4 = (undefined1)(((int)fVar30 & 0xfU) << 4);\n            }\n            else {\n              uVar4 = (undefined1)\n                      (((int)(fVar30 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU) << 4)\n              ;\n            }\n            *(undefined1 *)number_pixels = uVar4;\n            return;\n          }\n          *(undefined1 *)number_pixels = 0;\n          return;\n        }\n      }\n      else {\n        if (uVar25 == 0x20) {\n          if (quantum_info->format == FloatingPointQuantumFormat) {\n            puVar24 = (uchar *)0x0;\n            if ((int)q < 1) {\n              return;\n            }\n            dVar31 = (quantum_info->state).inverse_scale;\n            EVar13 = quantum_info->endian;\n            dVar27 = quantum_info->minimum;\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              dVar26 = 0.0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                dVar26 = (double)*(float *)(iVar23 + image->channel_map[5].offset * 4);\n              }\n              fVar30 = (float)(dVar31 * dVar26 + dVar27);\n              uVar7 = (undefined1)((uint)fVar30 >> 8);\n              uVar6 = (undefined1)((uint)fVar30 >> 0x10);\n              uVar4 = (undefined1)((uint)fVar30 >> 0x18);\n              if (EVar13 == LSBEndian) {\n                puVar22[1] = uVar6;\n                *puVar22 = uVar4;\n                puVar22[2] = uVar7;\n                puVar22[3] = SUB41(fVar30,0);\n              }\n              else {\n                *puVar22 = SUB41(fVar30,0);\n                puVar22[1] = uVar7;\n                puVar22[2] = uVar6;\n                puVar22[3] = uVar4;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 4);\n            } while (puVar24 != q);\n            return;\n          }\n          if ((int)q < 1) {\n            return;\n          }\n          puVar24 = (uchar *)0x0;\n          fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            iVar23 = (int)(number_pixels >> 0x20);\n            puVar22 = (undefined1 *)number_pixels;\n            uVar7 = 0;\n            uVar6 = 0;\n            uVar4 = 0;\n            uVar11 = 0;\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar30 <= fVar28) {\n                uVar25 = (int)(fVar28 - fVar30) | 0x80000000;\n              }\n              else {\n                uVar25 = (uint)fVar28;\n              }\n              uVar11 = (undefined1)(uVar25 >> 0x18);\n              uVar4 = (undefined1)(uVar25 >> 0x10);\n              uVar6 = (undefined1)(uVar25 >> 8);\n              uVar7 = (undefined1)uVar25;\n            }\n            if (quantum_info->endian == LSBEndian) {\n              *puVar22 = uVar7;\n              puVar22[1] = uVar6;\n              puVar22[2] = uVar4;\n              puVar22[3] = uVar11;\n            }\n            else {\n              *puVar22 = uVar11;\n              puVar22[1] = uVar4;\n              puVar22[2] = uVar6;\n              puVar22[3] = uVar7;\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 4);\n          } while (puVar24 != q);\n          return;\n        }\n        if (uVar25 == 0x40) {\n          if (quantum_info->format == FloatingPointQuantumFormat) {\n            puVar24 = (uchar *)0x0;\n            if ((int)q < 1) {\n              return;\n            }\n            dVar31 = (quantum_info->state).inverse_scale;\n            EVar13 = quantum_info->endian;\n            dVar27 = quantum_info->minimum;\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              dVar26 = 0.0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                dVar26 = (double)*(float *)(iVar23 + image->channel_map[5].offset * 4);\n              }\n              dVar26 = dVar31 * dVar26 + dVar27;\n              uVar4 = (undefined1)((ulonglong)dVar26 >> 0x20);\n              uVar19 = (undefined1)((ulonglong)dVar26 >> 8);\n              uVar17 = (undefined1)((ulonglong)dVar26 >> 0x10);\n              uVar7 = (undefined1)((ulonglong)dVar26 >> 0x18);\n              uVar14 = (undefined1)((ulonglong)dVar26 >> 0x28);\n              uVar11 = (undefined1)((ulonglong)dVar26 >> 0x30);\n              uVar6 = (undefined1)((ulonglong)dVar26 >> 0x38);\n              if (EVar13 == LSBEndian) {\n                puVar22[1] = uVar11;\n                *puVar22 = uVar6;\n                puVar22[2] = uVar14;\n                puVar22[3] = uVar4;\n                puVar22[4] = uVar7;\n                puVar22[5] = uVar17;\n                puVar22[6] = uVar19;\n                puVar22[7] = SUB81(dVar26,0);\n              }\n              else {\n                *puVar22 = SUB81(dVar26,0);\n                puVar22[1] = uVar19;\n                puVar22[2] = uVar17;\n                puVar22[3] = uVar7;\n                puVar22[4] = uVar4;\n                puVar22[5] = uVar14;\n                puVar22[6] = uVar11;\n                puVar22[7] = uVar6;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 8);\n            } while (puVar24 != q);\n            return;\n          }\n        }\n        else if (uVar25 == 0x10) {\n          if (quantum_info->format == FloatingPointQuantumFormat) {\n            if ((int)q < 1) {\n              return;\n            }\n            puVar24 = (uchar *)0x0;\n            EVar13 = LSBEndian;\n            dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              fVar30 = 0.0;\n              EVar16 = quantum_info->endian;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar30 = (float)((double)*(float *)(iVar23 + image->channel_map[5].offset * 4) *\n                                dVar27);\n              }\n              uVar3 = SinglePrecisionToHalf(fVar30);\n              uVar4 = (undefined1)(uVar3 >> 8);\n              if (EVar16 == EVar13) {\n                *puVar22 = (char)uVar3;\n                puVar22[1] = uVar4;\n              }\n              else {\n                *puVar22 = uVar4;\n                puVar22[1] = (char)uVar3;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2);\n            } while (puVar24 != q);\n            return;\n          }\n          if ((int)q < 1) {\n            return;\n          }\n          puVar24 = (uchar *)0x0;\n          fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            iVar23 = (int)(number_pixels >> 0x20);\n            puVar22 = (undefined1 *)number_pixels;\n            uVar6 = 0;\n            uVar4 = 0;\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar28 < fVar30) {\n                uVar29 = (undefined2)(int)fVar28;\n              }\n              else {\n                uVar29 = (undefined2)(int)(fVar28 - fVar30);\n              }\n              uVar4 = (undefined1)((ushort)uVar29 >> 8);\n              uVar6 = (undefined1)uVar29;\n            }\n            if (quantum_info->endian == LSBEndian) {\n              *puVar22 = uVar6;\n              puVar22[1] = uVar4;\n            }\n            else {\n              *puVar22 = uVar4;\n              puVar22[1] = uVar6;\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2);\n          } while (puVar24 != q);\n          return;\n        }\n      }\n      puVar24 = (uchar *)0x0;\n      if (0 < (int)q) {\n        pPVar2 = image->channel_map;\n        if (pPVar2[5].traits == UndefinedPixelTrait) goto LAB_001574b0;\n        do {\n          uVar32 = (*(code *)PTR___fixunssfdi_003a8a80)\n                             (*(undefined4 *)((int)(number_pixels >> 0x20) + pPVar2[5].offset * 4));\n          while( true ) {\n            uVar10 = (uint)((ulonglong)uVar32 >> 0x20);\n            pbVar20 = (byte *)number_pixels;\n            if ((quantum_info->state).bits == 0) {\n              (quantum_info->state).bits = 8;\n            }\n            if (0 < (int)uVar25) {\n              do {\n                uVar15 = (quantum_info->state).bits;\n                uVar9 = uVar15;\n                if (uVar25 <= uVar15) {\n                  uVar9 = uVar25;\n                }\n                uVar12 = uVar25 - uVar9;\n                uVar18 = uVar15 - uVar9;\n                uVar25 = uVar12;\n                if ((int)uVar12 < 0) {\n                  uVar25 = 0;\n                }\n                if (uVar15 == 8) {\n                  *pbVar20 = 0;\n                }\n                (quantum_info->state).bits = uVar18;\n                uVar15 = (uVar10 << 1) << (~uVar25 & 0x1f) | (uint)uVar32 >> (uVar25 & 0x1f);\n                if ((uVar25 & 0x20) != 0) {\n                  uVar15 = uVar10 >> (uVar25 & 0x1f);\n                }\n                bVar5 = (byte)((~(-1 << (uVar9 & 0x1f)) & uVar15) << (uVar18 & 0x1f));\n                if ((uVar18 & 0x20) != 0) {\n                  bVar5 = 0;\n                }\n                *pbVar20 = bVar5 | *pbVar20;\n                if (uVar18 == 0) {\n                  pbVar20 = pbVar20 + 1;\n                  (quantum_info->state).bits = 8;\n                }\n              } while (0 < (int)uVar12);\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44((int)(number_pixels >> 0x20) + image->number_channels * 4,\n                          pbVar20 + quantum_info->pad);\n            if (puVar24 == q) {\n              return;\n            }\n            pPVar2 = image->channel_map;\n            uVar25 = quantum_info->depth;\n            if (pPVar2[5].traits != UndefinedPixelTrait) break;\nLAB_001574b0:\n            uVar32 = 0;\n          }\n        } while( true );\n      }\n    }\n  }\n  else {\n    (*(code *)PTR_ThrowMagickException_003a8f20)\n              (exception,PTR_s_courses_003a88ec + -0x7af0,PTR_s_courses_003a88ec + -0x768c,0x9d8,\n               0x1d1,PTR_s_courses_003a88ec + -0x7ad4,PTR_LAB_003a88e0 + 0x3e28,image->filename);\n  }" if (parenthesized_expression "(image->storage_class == PseudoClass)" ( (binary_expression "image->storage_class == PseudoClass" (field_expression "image->storage_class" identifier -> field_identifier) == identifier) )) (compound_statement "{\n    uVar25 = quantum_info->depth;\n    if (uVar25 == 8) {\n      if (0 < (int)q) {\n        puVar24 = (uchar *)0x0;\n        fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n        do {\n          iVar23 = (int)(number_pixels >> 0x20);\n          uVar4 = 0;\n          if (image->channel_map[5].traits != UndefinedPixelTrait) {\n            fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n            if (fVar28 < fVar30) {\n              uVar4 = (undefined1)(int)fVar28;\n            }\n            else {\n              uVar4 = (undefined1)(int)(fVar28 - fVar30);\n            }\n          }\n          *(undefined1 *)number_pixels = uVar4;\n          puVar24 = puVar24 + 1;\n          number_pixels =\n               CONCAT44(iVar23 + image->number_channels * 4,\n                        (undefined1 *)number_pixels + quantum_info->pad + 1);\n        } while (puVar24 != q);\n      }\n    }\n    else {\n      if (uVar25 < 9) {\n        if (uVar25 == 1) {\n          if (7 < (int)q) {\n            fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar20 = (byte *)(number_pixels._4_4_ + ((uint)(q + -8) >> 3) + 1);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              pbVar21 = (byte *)number_pixels;\n              bVar5 = 0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = (byte)(((int)fVar28 & 0xffU) << 7);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = bVar5 | (byte)(((int)fVar28 & 1U) << 6);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar8 = bVar5;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 5);\n                bVar8 = bVar5 | bVar1;\n                *pbVar21 = bVar5 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar8 = bVar8 | (byte)(((int)fVar28 & 1U) << 4);\n              }\n              *pbVar21 = bVar8;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar5 = bVar8;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 3);\n                bVar5 = bVar8 | bVar1;\n                *pbVar21 = bVar8 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = bVar5 | (byte)(((int)fVar28 & 1U) << 2);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar8 = bVar5;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 1);\n                bVar8 = bVar5 | bVar1;\n                *pbVar21 = bVar5 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar28 < fVar30) {\n                  bVar5 = (byte)(int)fVar28;\n                }\n                else {\n                  bVar5 = (byte)(int)(fVar28 - fVar30);\n                }\n                bVar8 = bVar8 | bVar5 & 1;\n              }\n              *pbVar21 = bVar8;\n              number_pixels = CONCAT44(iVar23 + image->number_channels * 4,pbVar21 + 1);\n            } while (pbVar21 + 1 != pbVar20);\n          }\n          iVar23 = (int)(number_pixels >> 0x20);\n          if (((uint)q & 7) == 0) {\n            return;\n          }\n          *(undefined1 *)number_pixels = 0;\n          if (((uint)q & 7) == 0) {\n            return;\n          }\n          uVar10 = 0;\n          uVar25 = 7;\n          fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar30 <= fVar28) {\n                fVar28 = fVar28 - fVar30;\n              }\n              uVar10 = ((int)fVar28 & 1U) << (uVar25 & 0x1f) & 0xff | uVar10;\n            }\n            *(undefined1 *)number_pixels = (char)uVar10;\n            uVar25 = uVar25 - 1;\n            iVar23 = iVar23 + image->number_channels * 4;\n          } while (uVar25 != (~(uint)q & 7));\n          return;\n        }\n        if (uVar25 == 4) {\n          if (0 < (int)(q + -1)) {\n            fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar20 = (byte *)(number_pixels._4_4_ + ((uint)(q + -2) >> 1) + 1);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              pbVar21 = (byte *)number_pixels;\n              if (image->channel_map[5].traits == UndefinedPixelTrait) {\n                bVar5 = 0;\n              }\n              else {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = (byte)(((int)fVar28 & 0xffU) << 4);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar28 < fVar30) {\n                  bVar8 = (byte)(int)fVar28;\n                }\n                else {\n                  bVar8 = (byte)(int)(fVar28 - fVar30);\n                }\n                bVar5 = bVar5 | bVar8 & 0xf;\n              }\n              *pbVar21 = bVar5;\n              number_pixels = CONCAT44(iVar23 + image->number_channels * 4,pbVar21 + 1);\n            } while (pbVar21 + 1 != pbVar20);\n          }\n          if (((uint)q & 1) == 0) {\n            return;\n          }\n          if (image->channel_map[5].traits != UndefinedPixelTrait) {\n            fVar30 = *(float *)((int)(number_pixels >> 0x20) + image->channel_map[5].offset * 4);\n            if (fVar30 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              uVar4 = (undefined1)(((int)fVar30 & 0xfU) << 4);\n            }\n            else {\n              uVar4 = (undefined1)\n                      (((int)(fVar30 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU) << 4)\n              ;\n            }\n            *(undefined1 *)number_pixels = uVar4;\n            return;\n          }\n          *(undefined1 *)number_pixels = 0;\n          return;\n        }\n      }\n      else {\n        if (uVar25 == 0x20) {\n          if (quantum_info->format == FloatingPointQuantumFormat) {\n            puVar24 = (uchar *)0x0;\n            if ((int)q < 1) {\n              return;\n            }\n            dVar31 = (quantum_info->state).inverse_scale;\n            EVar13 = quantum_info->endian;\n            dVar27 = quantum_info->minimum;\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              dVar26 = 0.0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                dVar26 = (double)*(float *)(iVar23 + image->channel_map[5].offset * 4);\n              }\n              fVar30 = (float)(dVar31 * dVar26 + dVar27);\n              uVar7 = (undefined1)((uint)fVar30 >> 8);\n              uVar6 = (undefined1)((uint)fVar30 >> 0x10);\n              uVar4 = (undefined1)((uint)fVar30 >> 0x18);\n              if (EVar13 == LSBEndian) {\n                puVar22[1] = uVar6;\n                *puVar22 = uVar4;\n                puVar22[2] = uVar7;\n                puVar22[3] = SUB41(fVar30,0);\n              }\n              else {\n                *puVar22 = SUB41(fVar30,0);\n                puVar22[1] = uVar7;\n                puVar22[2] = uVar6;\n                puVar22[3] = uVar4;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 4);\n            } while (puVar24 != q);\n            return;\n          }\n          if ((int)q < 1) {\n            return;\n          }\n          puVar24 = (uchar *)0x0;\n          fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            iVar23 = (int)(number_pixels >> 0x20);\n            puVar22 = (undefined1 *)number_pixels;\n            uVar7 = 0;\n            uVar6 = 0;\n            uVar4 = 0;\n            uVar11 = 0;\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar30 <= fVar28) {\n                uVar25 = (int)(fVar28 - fVar30) | 0x80000000;\n              }\n              else {\n                uVar25 = (uint)fVar28;\n              }\n              uVar11 = (undefined1)(uVar25 >> 0x18);\n              uVar4 = (undefined1)(uVar25 >> 0x10);\n              uVar6 = (undefined1)(uVar25 >> 8);\n              uVar7 = (undefined1)uVar25;\n            }\n            if (quantum_info->endian == LSBEndian) {\n              *puVar22 = uVar7;\n              puVar22[1] = uVar6;\n              puVar22[2] = uVar4;\n              puVar22[3] = uVar11;\n            }\n            else {\n              *puVar22 = uVar11;\n              puVar22[1] = uVar4;\n              puVar22[2] = uVar6;\n              puVar22[3] = uVar7;\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 4);\n          } while (puVar24 != q);\n          return;\n        }\n        if (uVar25 == 0x40) {\n          if (quantum_info->format == FloatingPointQuantumFormat) {\n            puVar24 = (uchar *)0x0;\n            if ((int)q < 1) {\n              return;\n            }\n            dVar31 = (quantum_info->state).inverse_scale;\n            EVar13 = quantum_info->endian;\n            dVar27 = quantum_info->minimum;\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              dVar26 = 0.0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                dVar26 = (double)*(float *)(iVar23 + image->channel_map[5].offset * 4);\n              }\n              dVar26 = dVar31 * dVar26 + dVar27;\n              uVar4 = (undefined1)((ulonglong)dVar26 >> 0x20);\n              uVar19 = (undefined1)((ulonglong)dVar26 >> 8);\n              uVar17 = (undefined1)((ulonglong)dVar26 >> 0x10);\n              uVar7 = (undefined1)((ulonglong)dVar26 >> 0x18);\n              uVar14 = (undefined1)((ulonglong)dVar26 >> 0x28);\n              uVar11 = (undefined1)((ulonglong)dVar26 >> 0x30);\n              uVar6 = (undefined1)((ulonglong)dVar26 >> 0x38);\n              if (EVar13 == LSBEndian) {\n                puVar22[1] = uVar11;\n                *puVar22 = uVar6;\n                puVar22[2] = uVar14;\n                puVar22[3] = uVar4;\n                puVar22[4] = uVar7;\n                puVar22[5] = uVar17;\n                puVar22[6] = uVar19;\n                puVar22[7] = SUB81(dVar26,0);\n              }\n              else {\n                *puVar22 = SUB81(dVar26,0);\n                puVar22[1] = uVar19;\n                puVar22[2] = uVar17;\n                puVar22[3] = uVar7;\n                puVar22[4] = uVar4;\n                puVar22[5] = uVar14;\n                puVar22[6] = uVar11;\n                puVar22[7] = uVar6;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 8);\n            } while (puVar24 != q);\n            return;\n          }\n        }\n        else if (uVar25 == 0x10) {\n          if (quantum_info->format == FloatingPointQuantumFormat) {\n            if ((int)q < 1) {\n              return;\n            }\n            puVar24 = (uchar *)0x0;\n            EVar13 = LSBEndian;\n            dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              fVar30 = 0.0;\n              EVar16 = quantum_info->endian;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar30 = (float)((double)*(float *)(iVar23 + image->channel_map[5].offset * 4) *\n                                dVar27);\n              }\n              uVar3 = SinglePrecisionToHalf(fVar30);\n              uVar4 = (undefined1)(uVar3 >> 8);\n              if (EVar16 == EVar13) {\n                *puVar22 = (char)uVar3;\n                puVar22[1] = uVar4;\n              }\n              else {\n                *puVar22 = uVar4;\n                puVar22[1] = (char)uVar3;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2);\n            } while (puVar24 != q);\n            return;\n          }\n          if ((int)q < 1) {\n            return;\n          }\n          puVar24 = (uchar *)0x0;\n          fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            iVar23 = (int)(number_pixels >> 0x20);\n            puVar22 = (undefined1 *)number_pixels;\n            uVar6 = 0;\n            uVar4 = 0;\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar28 < fVar30) {\n                uVar29 = (undefined2)(int)fVar28;\n              }\n              else {\n                uVar29 = (undefined2)(int)(fVar28 - fVar30);\n              }\n              uVar4 = (undefined1)((ushort)uVar29 >> 8);\n              uVar6 = (undefined1)uVar29;\n            }\n            if (quantum_info->endian == LSBEndian) {\n              *puVar22 = uVar6;\n              puVar22[1] = uVar4;\n            }\n            else {\n              *puVar22 = uVar4;\n              puVar22[1] = uVar6;\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2);\n          } while (puVar24 != q);\n          return;\n        }\n      }\n      puVar24 = (uchar *)0x0;\n      if (0 < (int)q) {\n        pPVar2 = image->channel_map;\n        if (pPVar2[5].traits == UndefinedPixelTrait) goto LAB_001574b0;\n        do {\n          uVar32 = (*(code *)PTR___fixunssfdi_003a8a80)\n                             (*(undefined4 *)((int)(number_pixels >> 0x20) + pPVar2[5].offset * 4));\n          while( true ) {\n            uVar10 = (uint)((ulonglong)uVar32 >> 0x20);\n            pbVar20 = (byte *)number_pixels;\n            if ((quantum_info->state).bits == 0) {\n              (quantum_info->state).bits = 8;\n            }\n            if (0 < (int)uVar25) {\n              do {\n                uVar15 = (quantum_info->state).bits;\n                uVar9 = uVar15;\n                if (uVar25 <= uVar15) {\n                  uVar9 = uVar25;\n                }\n                uVar12 = uVar25 - uVar9;\n                uVar18 = uVar15 - uVar9;\n                uVar25 = uVar12;\n                if ((int)uVar12 < 0) {\n                  uVar25 = 0;\n                }\n                if (uVar15 == 8) {\n                  *pbVar20 = 0;\n                }\n                (quantum_info->state).bits = uVar18;\n                uVar15 = (uVar10 << 1) << (~uVar25 & 0x1f) | (uint)uVar32 >> (uVar25 & 0x1f);\n                if ((uVar25 & 0x20) != 0) {\n                  uVar15 = uVar10 >> (uVar25 & 0x1f);\n                }\n                bVar5 = (byte)((~(-1 << (uVar9 & 0x1f)) & uVar15) << (uVar18 & 0x1f));\n                if ((uVar18 & 0x20) != 0) {\n                  bVar5 = 0;\n                }\n                *pbVar20 = bVar5 | *pbVar20;\n                if (uVar18 == 0) {\n                  pbVar20 = pbVar20 + 1;\n                  (quantum_info->state).bits = 8;\n                }\n              } while (0 < (int)uVar12);\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44((int)(number_pixels >> 0x20) + image->number_channels * 4,\n                          pbVar20 + quantum_info->pad);\n            if (puVar24 == q) {\n              return;\n            }\n            pPVar2 = image->channel_map;\n            uVar25 = quantum_info->depth;\n            if (pPVar2[5].traits != UndefinedPixelTrait) break;\nLAB_001574b0:\n            uVar32 = 0;\n          }\n        } while( true );\n      }\n    }\n  }" { (expression_statement "uVar25 = quantum_info->depth;" (assignment_expression "uVar25 = quantum_info->depth" identifier = (field_expression "quantum_info->depth" identifier -> field_identifier)) ;) (if_statement "if (uVar25 == 8) {\n      if (0 < (int)q) {\n        puVar24 = (uchar *)0x0;\n        fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n        do {\n          iVar23 = (int)(number_pixels >> 0x20);\n          uVar4 = 0;\n          if (image->channel_map[5].traits != UndefinedPixelTrait) {\n            fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n            if (fVar28 < fVar30) {\n              uVar4 = (undefined1)(int)fVar28;\n            }\n            else {\n              uVar4 = (undefined1)(int)(fVar28 - fVar30);\n            }\n          }\n          *(undefined1 *)number_pixels = uVar4;\n          puVar24 = puVar24 + 1;\n          number_pixels =\n               CONCAT44(iVar23 + image->number_channels * 4,\n                        (undefined1 *)number_pixels + quantum_info->pad + 1);\n        } while (puVar24 != q);\n      }\n    }\n    else {\n      if (uVar25 < 9) {\n        if (uVar25 == 1) {\n          if (7 < (int)q) {\n            fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar20 = (byte *)(number_pixels._4_4_ + ((uint)(q + -8) >> 3) + 1);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              pbVar21 = (byte *)number_pixels;\n              bVar5 = 0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = (byte)(((int)fVar28 & 0xffU) << 7);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = bVar5 | (byte)(((int)fVar28 & 1U) << 6);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar8 = bVar5;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 5);\n                bVar8 = bVar5 | bVar1;\n                *pbVar21 = bVar5 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar8 = bVar8 | (byte)(((int)fVar28 & 1U) << 4);\n              }\n              *pbVar21 = bVar8;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar5 = bVar8;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 3);\n                bVar5 = bVar8 | bVar1;\n                *pbVar21 = bVar8 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = bVar5 | (byte)(((int)fVar28 & 1U) << 2);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar8 = bVar5;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 1);\n                bVar8 = bVar5 | bVar1;\n                *pbVar21 = bVar5 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar28 < fVar30) {\n                  bVar5 = (byte)(int)fVar28;\n                }\n                else {\n                  bVar5 = (byte)(int)(fVar28 - fVar30);\n                }\n                bVar8 = bVar8 | bVar5 & 1;\n              }\n              *pbVar21 = bVar8;\n              number_pixels = CONCAT44(iVar23 + image->number_channels * 4,pbVar21 + 1);\n            } while (pbVar21 + 1 != pbVar20);\n          }\n          iVar23 = (int)(number_pixels >> 0x20);\n          if (((uint)q & 7) == 0) {\n            return;\n          }\n          *(undefined1 *)number_pixels = 0;\n          if (((uint)q & 7) == 0) {\n            return;\n          }\n          uVar10 = 0;\n          uVar25 = 7;\n          fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar30 <= fVar28) {\n                fVar28 = fVar28 - fVar30;\n              }\n              uVar10 = ((int)fVar28 & 1U) << (uVar25 & 0x1f) & 0xff | uVar10;\n            }\n            *(undefined1 *)number_pixels = (char)uVar10;\n            uVar25 = uVar25 - 1;\n            iVar23 = iVar23 + image->number_channels * 4;\n          } while (uVar25 != (~(uint)q & 7));\n          return;\n        }\n        if (uVar25 == 4) {\n          if (0 < (int)(q + -1)) {\n            fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar20 = (byte *)(number_pixels._4_4_ + ((uint)(q + -2) >> 1) + 1);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              pbVar21 = (byte *)number_pixels;\n              if (image->channel_map[5].traits == UndefinedPixelTrait) {\n                bVar5 = 0;\n              }\n              else {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = (byte)(((int)fVar28 & 0xffU) << 4);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar28 < fVar30) {\n                  bVar8 = (byte)(int)fVar28;\n                }\n                else {\n                  bVar8 = (byte)(int)(fVar28 - fVar30);\n                }\n                bVar5 = bVar5 | bVar8 & 0xf;\n              }\n              *pbVar21 = bVar5;\n              number_pixels = CONCAT44(iVar23 + image->number_channels * 4,pbVar21 + 1);\n            } while (pbVar21 + 1 != pbVar20);\n          }\n          if (((uint)q & 1) == 0) {\n            return;\n          }\n          if (image->channel_map[5].traits != UndefinedPixelTrait) {\n            fVar30 = *(float *)((int)(number_pixels >> 0x20) + image->channel_map[5].offset * 4);\n            if (fVar30 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              uVar4 = (undefined1)(((int)fVar30 & 0xfU) << 4);\n            }\n            else {\n              uVar4 = (undefined1)\n                      (((int)(fVar30 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU) << 4)\n              ;\n            }\n            *(undefined1 *)number_pixels = uVar4;\n            return;\n          }\n          *(undefined1 *)number_pixels = 0;\n          return;\n        }\n      }\n      else {\n        if (uVar25 == 0x20) {\n          if (quantum_info->format == FloatingPointQuantumFormat) {\n            puVar24 = (uchar *)0x0;\n            if ((int)q < 1) {\n              return;\n            }\n            dVar31 = (quantum_info->state).inverse_scale;\n            EVar13 = quantum_info->endian;\n            dVar27 = quantum_info->minimum;\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              dVar26 = 0.0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                dVar26 = (double)*(float *)(iVar23 + image->channel_map[5].offset * 4);\n              }\n              fVar30 = (float)(dVar31 * dVar26 + dVar27);\n              uVar7 = (undefined1)((uint)fVar30 >> 8);\n              uVar6 = (undefined1)((uint)fVar30 >> 0x10);\n              uVar4 = (undefined1)((uint)fVar30 >> 0x18);\n              if (EVar13 == LSBEndian) {\n                puVar22[1] = uVar6;\n                *puVar22 = uVar4;\n                puVar22[2] = uVar7;\n                puVar22[3] = SUB41(fVar30,0);\n              }\n              else {\n                *puVar22 = SUB41(fVar30,0);\n                puVar22[1] = uVar7;\n                puVar22[2] = uVar6;\n                puVar22[3] = uVar4;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 4);\n            } while (puVar24 != q);\n            return;\n          }\n          if ((int)q < 1) {\n            return;\n          }\n          puVar24 = (uchar *)0x0;\n          fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            iVar23 = (int)(number_pixels >> 0x20);\n            puVar22 = (undefined1 *)number_pixels;\n            uVar7 = 0;\n            uVar6 = 0;\n            uVar4 = 0;\n            uVar11 = 0;\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar30 <= fVar28) {\n                uVar25 = (int)(fVar28 - fVar30) | 0x80000000;\n              }\n              else {\n                uVar25 = (uint)fVar28;\n              }\n              uVar11 = (undefined1)(uVar25 >> 0x18);\n              uVar4 = (undefined1)(uVar25 >> 0x10);\n              uVar6 = (undefined1)(uVar25 >> 8);\n              uVar7 = (undefined1)uVar25;\n            }\n            if (quantum_info->endian == LSBEndian) {\n              *puVar22 = uVar7;\n              puVar22[1] = uVar6;\n              puVar22[2] = uVar4;\n              puVar22[3] = uVar11;\n            }\n            else {\n              *puVar22 = uVar11;\n              puVar22[1] = uVar4;\n              puVar22[2] = uVar6;\n              puVar22[3] = uVar7;\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 4);\n          } while (puVar24 != q);\n          return;\n        }\n        if (uVar25 == 0x40) {\n          if (quantum_info->format == FloatingPointQuantumFormat) {\n            puVar24 = (uchar *)0x0;\n            if ((int)q < 1) {\n              return;\n            }\n            dVar31 = (quantum_info->state).inverse_scale;\n            EVar13 = quantum_info->endian;\n            dVar27 = quantum_info->minimum;\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              dVar26 = 0.0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                dVar26 = (double)*(float *)(iVar23 + image->channel_map[5].offset * 4);\n              }\n              dVar26 = dVar31 * dVar26 + dVar27;\n              uVar4 = (undefined1)((ulonglong)dVar26 >> 0x20);\n              uVar19 = (undefined1)((ulonglong)dVar26 >> 8);\n              uVar17 = (undefined1)((ulonglong)dVar26 >> 0x10);\n              uVar7 = (undefined1)((ulonglong)dVar26 >> 0x18);\n              uVar14 = (undefined1)((ulonglong)dVar26 >> 0x28);\n              uVar11 = (undefined1)((ulonglong)dVar26 >> 0x30);\n              uVar6 = (undefined1)((ulonglong)dVar26 >> 0x38);\n              if (EVar13 == LSBEndian) {\n                puVar22[1] = uVar11;\n                *puVar22 = uVar6;\n                puVar22[2] = uVar14;\n                puVar22[3] = uVar4;\n                puVar22[4] = uVar7;\n                puVar22[5] = uVar17;\n                puVar22[6] = uVar19;\n                puVar22[7] = SUB81(dVar26,0);\n              }\n              else {\n                *puVar22 = SUB81(dVar26,0);\n                puVar22[1] = uVar19;\n                puVar22[2] = uVar17;\n                puVar22[3] = uVar7;\n                puVar22[4] = uVar4;\n                puVar22[5] = uVar14;\n                puVar22[6] = uVar11;\n                puVar22[7] = uVar6;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 8);\n            } while (puVar24 != q);\n            return;\n          }\n        }\n        else if (uVar25 == 0x10) {\n          if (quantum_info->format == FloatingPointQuantumFormat) {\n            if ((int)q < 1) {\n              return;\n            }\n            puVar24 = (uchar *)0x0;\n            EVar13 = LSBEndian;\n            dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              fVar30 = 0.0;\n              EVar16 = quantum_info->endian;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar30 = (float)((double)*(float *)(iVar23 + image->channel_map[5].offset * 4) *\n                                dVar27);\n              }\n              uVar3 = SinglePrecisionToHalf(fVar30);\n              uVar4 = (undefined1)(uVar3 >> 8);\n              if (EVar16 == EVar13) {\n                *puVar22 = (char)uVar3;\n                puVar22[1] = uVar4;\n              }\n              else {\n                *puVar22 = uVar4;\n                puVar22[1] = (char)uVar3;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2);\n            } while (puVar24 != q);\n            return;\n          }\n          if ((int)q < 1) {\n            return;\n          }\n          puVar24 = (uchar *)0x0;\n          fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            iVar23 = (int)(number_pixels >> 0x20);\n            puVar22 = (undefined1 *)number_pixels;\n            uVar6 = 0;\n            uVar4 = 0;\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar28 < fVar30) {\n                uVar29 = (undefined2)(int)fVar28;\n              }\n              else {\n                uVar29 = (undefined2)(int)(fVar28 - fVar30);\n              }\n              uVar4 = (undefined1)((ushort)uVar29 >> 8);\n              uVar6 = (undefined1)uVar29;\n            }\n            if (quantum_info->endian == LSBEndian) {\n              *puVar22 = uVar6;\n              puVar22[1] = uVar4;\n            }\n            else {\n              *puVar22 = uVar4;\n              puVar22[1] = uVar6;\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2);\n          } while (puVar24 != q);\n          return;\n        }\n      }\n      puVar24 = (uchar *)0x0;\n      if (0 < (int)q) {\n        pPVar2 = image->channel_map;\n        if (pPVar2[5].traits == UndefinedPixelTrait) goto LAB_001574b0;\n        do {\n          uVar32 = (*(code *)PTR___fixunssfdi_003a8a80)\n                             (*(undefined4 *)((int)(number_pixels >> 0x20) + pPVar2[5].offset * 4));\n          while( true ) {\n            uVar10 = (uint)((ulonglong)uVar32 >> 0x20);\n            pbVar20 = (byte *)number_pixels;\n            if ((quantum_info->state).bits == 0) {\n              (quantum_info->state).bits = 8;\n            }\n            if (0 < (int)uVar25) {\n              do {\n                uVar15 = (quantum_info->state).bits;\n                uVar9 = uVar15;\n                if (uVar25 <= uVar15) {\n                  uVar9 = uVar25;\n                }\n                uVar12 = uVar25 - uVar9;\n                uVar18 = uVar15 - uVar9;\n                uVar25 = uVar12;\n                if ((int)uVar12 < 0) {\n                  uVar25 = 0;\n                }\n                if (uVar15 == 8) {\n                  *pbVar20 = 0;\n                }\n                (quantum_info->state).bits = uVar18;\n                uVar15 = (uVar10 << 1) << (~uVar25 & 0x1f) | (uint)uVar32 >> (uVar25 & 0x1f);\n                if ((uVar25 & 0x20) != 0) {\n                  uVar15 = uVar10 >> (uVar25 & 0x1f);\n                }\n                bVar5 = (byte)((~(-1 << (uVar9 & 0x1f)) & uVar15) << (uVar18 & 0x1f));\n                if ((uVar18 & 0x20) != 0) {\n                  bVar5 = 0;\n                }\n                *pbVar20 = bVar5 | *pbVar20;\n                if (uVar18 == 0) {\n                  pbVar20 = pbVar20 + 1;\n                  (quantum_info->state).bits = 8;\n                }\n              } while (0 < (int)uVar12);\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44((int)(number_pixels >> 0x20) + image->number_channels * 4,\n                          pbVar20 + quantum_info->pad);\n            if (puVar24 == q) {\n              return;\n            }\n            pPVar2 = image->channel_map;\n            uVar25 = quantum_info->depth;\n            if (pPVar2[5].traits != UndefinedPixelTrait) break;\nLAB_001574b0:\n            uVar32 = 0;\n          }\n        } while( true );\n      }\n    }" if (parenthesized_expression "(uVar25 == 8)" ( (binary_expression "uVar25 == 8" identifier == number_literal) )) (compound_statement "{\n      if (0 < (int)q) {\n        puVar24 = (uchar *)0x0;\n        fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n        do {\n          iVar23 = (int)(number_pixels >> 0x20);\n          uVar4 = 0;\n          if (image->channel_map[5].traits != UndefinedPixelTrait) {\n            fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n            if (fVar28 < fVar30) {\n              uVar4 = (undefined1)(int)fVar28;\n            }\n            else {\n              uVar4 = (undefined1)(int)(fVar28 - fVar30);\n            }\n          }\n          *(undefined1 *)number_pixels = uVar4;\n          puVar24 = puVar24 + 1;\n          number_pixels =\n               CONCAT44(iVar23 + image->number_channels * 4,\n                        (undefined1 *)number_pixels + quantum_info->pad + 1);\n        } while (puVar24 != q);\n      }\n    }" { (if_statement "if (0 < (int)q) {\n        puVar24 = (uchar *)0x0;\n        fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n        do {\n          iVar23 = (int)(number_pixels >> 0x20);\n          uVar4 = 0;\n          if (image->channel_map[5].traits != UndefinedPixelTrait) {\n            fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n            if (fVar28 < fVar30) {\n              uVar4 = (undefined1)(int)fVar28;\n            }\n            else {\n              uVar4 = (undefined1)(int)(fVar28 - fVar30);\n            }\n          }\n          *(undefined1 *)number_pixels = uVar4;\n          puVar24 = puVar24 + 1;\n          number_pixels =\n               CONCAT44(iVar23 + image->number_channels * 4,\n                        (undefined1 *)number_pixels + quantum_info->pad + 1);\n        } while (puVar24 != q);\n      }" if (parenthesized_expression "(0 < (int)q)" ( (binary_expression "0 < (int)q" number_literal < (cast_expression "(int)q" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        puVar24 = (uchar *)0x0;\n        fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n        do {\n          iVar23 = (int)(number_pixels >> 0x20);\n          uVar4 = 0;\n          if (image->channel_map[5].traits != UndefinedPixelTrait) {\n            fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n            if (fVar28 < fVar30) {\n              uVar4 = (undefined1)(int)fVar28;\n            }\n            else {\n              uVar4 = (undefined1)(int)(fVar28 - fVar30);\n            }\n          }\n          *(undefined1 *)number_pixels = uVar4;\n          puVar24 = puVar24 + 1;\n          number_pixels =\n               CONCAT44(iVar23 + image->number_channels * 4,\n                        (undefined1 *)number_pixels + quantum_info->pad + 1);\n        } while (puVar24 != q);\n      }" { (expression_statement "puVar24 = (uchar *)0x0;" (assignment_expression "puVar24 = (uchar *)0x0" identifier = (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);" (assignment_expression "fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" identifier = (pointer_expression "*(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" * (cast_expression "(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (binary_expression "PTR_s_t_to_left_003a88e4 + -0x51e0" identifier + number_literal) ))))) ;) (do_statement "do {\n          iVar23 = (int)(number_pixels >> 0x20);\n          uVar4 = 0;\n          if (image->channel_map[5].traits != UndefinedPixelTrait) {\n            fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n            if (fVar28 < fVar30) {\n              uVar4 = (undefined1)(int)fVar28;\n            }\n            else {\n              uVar4 = (undefined1)(int)(fVar28 - fVar30);\n            }\n          }\n          *(undefined1 *)number_pixels = uVar4;\n          puVar24 = puVar24 + 1;\n          number_pixels =\n               CONCAT44(iVar23 + image->number_channels * 4,\n                        (undefined1 *)number_pixels + quantum_info->pad + 1);\n        } while (puVar24 != q);" do (compound_statement "{\n          iVar23 = (int)(number_pixels >> 0x20);\n          uVar4 = 0;\n          if (image->channel_map[5].traits != UndefinedPixelTrait) {\n            fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n            if (fVar28 < fVar30) {\n              uVar4 = (undefined1)(int)fVar28;\n            }\n            else {\n              uVar4 = (undefined1)(int)(fVar28 - fVar30);\n            }\n          }\n          *(undefined1 *)number_pixels = uVar4;\n          puVar24 = puVar24 + 1;\n          number_pixels =\n               CONCAT44(iVar23 + image->number_channels * 4,\n                        (undefined1 *)number_pixels + quantum_info->pad + 1);\n        }" { (expression_statement "iVar23 = (int)(number_pixels >> 0x20);" (assignment_expression "iVar23 = (int)(number_pixels >> 0x20)" identifier = (cast_expression "(int)(number_pixels >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(number_pixels >> 0x20)" ( (binary_expression "number_pixels >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if (image->channel_map[5].traits != UndefinedPixelTrait) {\n            fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n            if (fVar28 < fVar30) {\n              uVar4 = (undefined1)(int)fVar28;\n            }\n            else {\n              uVar4 = (undefined1)(int)(fVar28 - fVar30);\n            }\n          }" if (parenthesized_expression "(image->channel_map[5].traits != UndefinedPixelTrait)" ( (binary_expression "image->channel_map[5].traits != UndefinedPixelTrait" (field_expression "image->channel_map[5].traits" (subscript_expression "image->channel_map[5]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) != identifier) )) (compound_statement "{\n            fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n            if (fVar28 < fVar30) {\n              uVar4 = (undefined1)(int)fVar28;\n            }\n            else {\n              uVar4 = (undefined1)(int)(fVar28 - fVar30);\n            }\n          }" { (expression_statement "fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);" (assignment_expression "fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4)" identifier = (pointer_expression "*(float *)(iVar23 + image->channel_map[5].offset * 4)" * (cast_expression "(float *)(iVar23 + image->channel_map[5].offset * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + image->channel_map[5].offset * 4)" ( (binary_expression "iVar23 + image->channel_map[5].offset * 4" identifier + (binary_expression "image->channel_map[5].offset * 4" (field_expression "image->channel_map[5].offset" (subscript_expression "image->channel_map[5]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) * number_literal)) ))))) ;) (if_statement "if (fVar28 < fVar30) {\n              uVar4 = (undefined1)(int)fVar28;\n            }\n            else {\n              uVar4 = (undefined1)(int)(fVar28 - fVar30);\n            }" if (parenthesized_expression "(fVar28 < fVar30)" ( (binary_expression "fVar28 < fVar30" identifier < identifier) )) (compound_statement "{\n              uVar4 = (undefined1)(int)fVar28;\n            }" { (expression_statement "uVar4 = (undefined1)(int)fVar28;" (assignment_expression "uVar4 = (undefined1)(int)fVar28" identifier = (cast_expression "(undefined1)(int)fVar28" ( (type_descriptor "undefined1" type_identifier) ) (cast_expression "(int)fVar28" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }) (else_clause "else {\n              uVar4 = (undefined1)(int)(fVar28 - fVar30);\n            }" else (compound_statement "{\n              uVar4 = (undefined1)(int)(fVar28 - fVar30);\n            }" { (expression_statement "uVar4 = (undefined1)(int)(fVar28 - fVar30);" (assignment_expression "uVar4 = (undefined1)(int)(fVar28 - fVar30)" identifier = (call_expression "(undefined1)(int)(fVar28 - fVar30)" (call_expression "(undefined1)(int)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "(int)" ( identifier ))) (argument_list "(fVar28 - fVar30)" ( (binary_expression "fVar28 - fVar30" identifier - identifier) )))) ;) }))) })) (expression_statement "*(undefined1 *)number_pixels = uVar4;" (assignment_expression "*(undefined1 *)number_pixels = uVar4" (pointer_expression "*(undefined1 *)number_pixels" * (cast_expression "(undefined1 *)number_pixels" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (expression_statement "puVar24 = puVar24 + 1;" (assignment_expression "puVar24 = puVar24 + 1" identifier = (binary_expression "puVar24 + 1" identifier + number_literal)) ;) (expression_statement "number_pixels =\n               CONCAT44(iVar23 + image->number_channels * 4,\n                        (undefined1 *)number_pixels + quantum_info->pad + 1);" (assignment_expression "number_pixels =\n               CONCAT44(iVar23 + image->number_channels * 4,\n                        (undefined1 *)number_pixels + quantum_info->pad + 1)" identifier = (call_expression "CONCAT44(iVar23 + image->number_channels * 4,\n                        (undefined1 *)number_pixels + quantum_info->pad + 1)" identifier (argument_list "(iVar23 + image->number_channels * 4,\n                        (undefined1 *)number_pixels + quantum_info->pad + 1)" ( (binary_expression "iVar23 + image->number_channels * 4" identifier + (binary_expression "image->number_channels * 4" (field_expression "image->number_channels" identifier -> field_identifier) * number_literal)) , (binary_expression "(undefined1 *)number_pixels + quantum_info->pad + 1" (binary_expression "(undefined1 *)number_pixels + quantum_info->pad" (cast_expression "(undefined1 *)number_pixels" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) + (field_expression "quantum_info->pad" identifier -> field_identifier)) + number_literal) )))) ;) }) while (parenthesized_expression "(puVar24 != q)" ( (binary_expression "puVar24 != q" identifier != identifier) )) ;) })) }) (else_clause "else {\n      if (uVar25 < 9) {\n        if (uVar25 == 1) {\n          if (7 < (int)q) {\n            fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar20 = (byte *)(number_pixels._4_4_ + ((uint)(q + -8) >> 3) + 1);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              pbVar21 = (byte *)number_pixels;\n              bVar5 = 0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = (byte)(((int)fVar28 & 0xffU) << 7);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = bVar5 | (byte)(((int)fVar28 & 1U) << 6);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar8 = bVar5;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 5);\n                bVar8 = bVar5 | bVar1;\n                *pbVar21 = bVar5 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar8 = bVar8 | (byte)(((int)fVar28 & 1U) << 4);\n              }\n              *pbVar21 = bVar8;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar5 = bVar8;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 3);\n                bVar5 = bVar8 | bVar1;\n                *pbVar21 = bVar8 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = bVar5 | (byte)(((int)fVar28 & 1U) << 2);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar8 = bVar5;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 1);\n                bVar8 = bVar5 | bVar1;\n                *pbVar21 = bVar5 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar28 < fVar30) {\n                  bVar5 = (byte)(int)fVar28;\n                }\n                else {\n                  bVar5 = (byte)(int)(fVar28 - fVar30);\n                }\n                bVar8 = bVar8 | bVar5 & 1;\n              }\n              *pbVar21 = bVar8;\n              number_pixels = CONCAT44(iVar23 + image->number_channels * 4,pbVar21 + 1);\n            } while (pbVar21 + 1 != pbVar20);\n          }\n          iVar23 = (int)(number_pixels >> 0x20);\n          if (((uint)q & 7) == 0) {\n            return;\n          }\n          *(undefined1 *)number_pixels = 0;\n          if (((uint)q & 7) == 0) {\n            return;\n          }\n          uVar10 = 0;\n          uVar25 = 7;\n          fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar30 <= fVar28) {\n                fVar28 = fVar28 - fVar30;\n              }\n              uVar10 = ((int)fVar28 & 1U) << (uVar25 & 0x1f) & 0xff | uVar10;\n            }\n            *(undefined1 *)number_pixels = (char)uVar10;\n            uVar25 = uVar25 - 1;\n            iVar23 = iVar23 + image->number_channels * 4;\n          } while (uVar25 != (~(uint)q & 7));\n          return;\n        }\n        if (uVar25 == 4) {\n          if (0 < (int)(q + -1)) {\n            fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar20 = (byte *)(number_pixels._4_4_ + ((uint)(q + -2) >> 1) + 1);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              pbVar21 = (byte *)number_pixels;\n              if (image->channel_map[5].traits == UndefinedPixelTrait) {\n                bVar5 = 0;\n              }\n              else {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = (byte)(((int)fVar28 & 0xffU) << 4);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar28 < fVar30) {\n                  bVar8 = (byte)(int)fVar28;\n                }\n                else {\n                  bVar8 = (byte)(int)(fVar28 - fVar30);\n                }\n                bVar5 = bVar5 | bVar8 & 0xf;\n              }\n              *pbVar21 = bVar5;\n              number_pixels = CONCAT44(iVar23 + image->number_channels * 4,pbVar21 + 1);\n            } while (pbVar21 + 1 != pbVar20);\n          }\n          if (((uint)q & 1) == 0) {\n            return;\n          }\n          if (image->channel_map[5].traits != UndefinedPixelTrait) {\n            fVar30 = *(float *)((int)(number_pixels >> 0x20) + image->channel_map[5].offset * 4);\n            if (fVar30 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              uVar4 = (undefined1)(((int)fVar30 & 0xfU) << 4);\n            }\n            else {\n              uVar4 = (undefined1)\n                      (((int)(fVar30 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU) << 4)\n              ;\n            }\n            *(undefined1 *)number_pixels = uVar4;\n            return;\n          }\n          *(undefined1 *)number_pixels = 0;\n          return;\n        }\n      }\n      else {\n        if (uVar25 == 0x20) {\n          if (quantum_info->format == FloatingPointQuantumFormat) {\n            puVar24 = (uchar *)0x0;\n            if ((int)q < 1) {\n              return;\n            }\n            dVar31 = (quantum_info->state).inverse_scale;\n            EVar13 = quantum_info->endian;\n            dVar27 = quantum_info->minimum;\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              dVar26 = 0.0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                dVar26 = (double)*(float *)(iVar23 + image->channel_map[5].offset * 4);\n              }\n              fVar30 = (float)(dVar31 * dVar26 + dVar27);\n              uVar7 = (undefined1)((uint)fVar30 >> 8);\n              uVar6 = (undefined1)((uint)fVar30 >> 0x10);\n              uVar4 = (undefined1)((uint)fVar30 >> 0x18);\n              if (EVar13 == LSBEndian) {\n                puVar22[1] = uVar6;\n                *puVar22 = uVar4;\n                puVar22[2] = uVar7;\n                puVar22[3] = SUB41(fVar30,0);\n              }\n              else {\n                *puVar22 = SUB41(fVar30,0);\n                puVar22[1] = uVar7;\n                puVar22[2] = uVar6;\n                puVar22[3] = uVar4;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 4);\n            } while (puVar24 != q);\n            return;\n          }\n          if ((int)q < 1) {\n            return;\n          }\n          puVar24 = (uchar *)0x0;\n          fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            iVar23 = (int)(number_pixels >> 0x20);\n            puVar22 = (undefined1 *)number_pixels;\n            uVar7 = 0;\n            uVar6 = 0;\n            uVar4 = 0;\n            uVar11 = 0;\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar30 <= fVar28) {\n                uVar25 = (int)(fVar28 - fVar30) | 0x80000000;\n              }\n              else {\n                uVar25 = (uint)fVar28;\n              }\n              uVar11 = (undefined1)(uVar25 >> 0x18);\n              uVar4 = (undefined1)(uVar25 >> 0x10);\n              uVar6 = (undefined1)(uVar25 >> 8);\n              uVar7 = (undefined1)uVar25;\n            }\n            if (quantum_info->endian == LSBEndian) {\n              *puVar22 = uVar7;\n              puVar22[1] = uVar6;\n              puVar22[2] = uVar4;\n              puVar22[3] = uVar11;\n            }\n            else {\n              *puVar22 = uVar11;\n              puVar22[1] = uVar4;\n              puVar22[2] = uVar6;\n              puVar22[3] = uVar7;\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 4);\n          } while (puVar24 != q);\n          return;\n        }\n        if (uVar25 == 0x40) {\n          if (quantum_info->format == FloatingPointQuantumFormat) {\n            puVar24 = (uchar *)0x0;\n            if ((int)q < 1) {\n              return;\n            }\n            dVar31 = (quantum_info->state).inverse_scale;\n            EVar13 = quantum_info->endian;\n            dVar27 = quantum_info->minimum;\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              dVar26 = 0.0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                dVar26 = (double)*(float *)(iVar23 + image->channel_map[5].offset * 4);\n              }\n              dVar26 = dVar31 * dVar26 + dVar27;\n              uVar4 = (undefined1)((ulonglong)dVar26 >> 0x20);\n              uVar19 = (undefined1)((ulonglong)dVar26 >> 8);\n              uVar17 = (undefined1)((ulonglong)dVar26 >> 0x10);\n              uVar7 = (undefined1)((ulonglong)dVar26 >> 0x18);\n              uVar14 = (undefined1)((ulonglong)dVar26 >> 0x28);\n              uVar11 = (undefined1)((ulonglong)dVar26 >> 0x30);\n              uVar6 = (undefined1)((ulonglong)dVar26 >> 0x38);\n              if (EVar13 == LSBEndian) {\n                puVar22[1] = uVar11;\n                *puVar22 = uVar6;\n                puVar22[2] = uVar14;\n                puVar22[3] = uVar4;\n                puVar22[4] = uVar7;\n                puVar22[5] = uVar17;\n                puVar22[6] = uVar19;\n                puVar22[7] = SUB81(dVar26,0);\n              }\n              else {\n                *puVar22 = SUB81(dVar26,0);\n                puVar22[1] = uVar19;\n                puVar22[2] = uVar17;\n                puVar22[3] = uVar7;\n                puVar22[4] = uVar4;\n                puVar22[5] = uVar14;\n                puVar22[6] = uVar11;\n                puVar22[7] = uVar6;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 8);\n            } while (puVar24 != q);\n            return;\n          }\n        }\n        else if (uVar25 == 0x10) {\n          if (quantum_info->format == FloatingPointQuantumFormat) {\n            if ((int)q < 1) {\n              return;\n            }\n            puVar24 = (uchar *)0x0;\n            EVar13 = LSBEndian;\n            dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              fVar30 = 0.0;\n              EVar16 = quantum_info->endian;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar30 = (float)((double)*(float *)(iVar23 + image->channel_map[5].offset * 4) *\n                                dVar27);\n              }\n              uVar3 = SinglePrecisionToHalf(fVar30);\n              uVar4 = (undefined1)(uVar3 >> 8);\n              if (EVar16 == EVar13) {\n                *puVar22 = (char)uVar3;\n                puVar22[1] = uVar4;\n              }\n              else {\n                *puVar22 = uVar4;\n                puVar22[1] = (char)uVar3;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2);\n            } while (puVar24 != q);\n            return;\n          }\n          if ((int)q < 1) {\n            return;\n          }\n          puVar24 = (uchar *)0x0;\n          fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            iVar23 = (int)(number_pixels >> 0x20);\n            puVar22 = (undefined1 *)number_pixels;\n            uVar6 = 0;\n            uVar4 = 0;\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar28 < fVar30) {\n                uVar29 = (undefined2)(int)fVar28;\n              }\n              else {\n                uVar29 = (undefined2)(int)(fVar28 - fVar30);\n              }\n              uVar4 = (undefined1)((ushort)uVar29 >> 8);\n              uVar6 = (undefined1)uVar29;\n            }\n            if (quantum_info->endian == LSBEndian) {\n              *puVar22 = uVar6;\n              puVar22[1] = uVar4;\n            }\n            else {\n              *puVar22 = uVar4;\n              puVar22[1] = uVar6;\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2);\n          } while (puVar24 != q);\n          return;\n        }\n      }\n      puVar24 = (uchar *)0x0;\n      if (0 < (int)q) {\n        pPVar2 = image->channel_map;\n        if (pPVar2[5].traits == UndefinedPixelTrait) goto LAB_001574b0;\n        do {\n          uVar32 = (*(code *)PTR___fixunssfdi_003a8a80)\n                             (*(undefined4 *)((int)(number_pixels >> 0x20) + pPVar2[5].offset * 4));\n          while( true ) {\n            uVar10 = (uint)((ulonglong)uVar32 >> 0x20);\n            pbVar20 = (byte *)number_pixels;\n            if ((quantum_info->state).bits == 0) {\n              (quantum_info->state).bits = 8;\n            }\n            if (0 < (int)uVar25) {\n              do {\n                uVar15 = (quantum_info->state).bits;\n                uVar9 = uVar15;\n                if (uVar25 <= uVar15) {\n                  uVar9 = uVar25;\n                }\n                uVar12 = uVar25 - uVar9;\n                uVar18 = uVar15 - uVar9;\n                uVar25 = uVar12;\n                if ((int)uVar12 < 0) {\n                  uVar25 = 0;\n                }\n                if (uVar15 == 8) {\n                  *pbVar20 = 0;\n                }\n                (quantum_info->state).bits = uVar18;\n                uVar15 = (uVar10 << 1) << (~uVar25 & 0x1f) | (uint)uVar32 >> (uVar25 & 0x1f);\n                if ((uVar25 & 0x20) != 0) {\n                  uVar15 = uVar10 >> (uVar25 & 0x1f);\n                }\n                bVar5 = (byte)((~(-1 << (uVar9 & 0x1f)) & uVar15) << (uVar18 & 0x1f));\n                if ((uVar18 & 0x20) != 0) {\n                  bVar5 = 0;\n                }\n                *pbVar20 = bVar5 | *pbVar20;\n                if (uVar18 == 0) {\n                  pbVar20 = pbVar20 + 1;\n                  (quantum_info->state).bits = 8;\n                }\n              } while (0 < (int)uVar12);\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44((int)(number_pixels >> 0x20) + image->number_channels * 4,\n                          pbVar20 + quantum_info->pad);\n            if (puVar24 == q) {\n              return;\n            }\n            pPVar2 = image->channel_map;\n            uVar25 = quantum_info->depth;\n            if (pPVar2[5].traits != UndefinedPixelTrait) break;\nLAB_001574b0:\n            uVar32 = 0;\n          }\n        } while( true );\n      }\n    }" else (compound_statement "{\n      if (uVar25 < 9) {\n        if (uVar25 == 1) {\n          if (7 < (int)q) {\n            fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar20 = (byte *)(number_pixels._4_4_ + ((uint)(q + -8) >> 3) + 1);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              pbVar21 = (byte *)number_pixels;\n              bVar5 = 0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = (byte)(((int)fVar28 & 0xffU) << 7);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = bVar5 | (byte)(((int)fVar28 & 1U) << 6);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar8 = bVar5;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 5);\n                bVar8 = bVar5 | bVar1;\n                *pbVar21 = bVar5 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar8 = bVar8 | (byte)(((int)fVar28 & 1U) << 4);\n              }\n              *pbVar21 = bVar8;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar5 = bVar8;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 3);\n                bVar5 = bVar8 | bVar1;\n                *pbVar21 = bVar8 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = bVar5 | (byte)(((int)fVar28 & 1U) << 2);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar8 = bVar5;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 1);\n                bVar8 = bVar5 | bVar1;\n                *pbVar21 = bVar5 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar28 < fVar30) {\n                  bVar5 = (byte)(int)fVar28;\n                }\n                else {\n                  bVar5 = (byte)(int)(fVar28 - fVar30);\n                }\n                bVar8 = bVar8 | bVar5 & 1;\n              }\n              *pbVar21 = bVar8;\n              number_pixels = CONCAT44(iVar23 + image->number_channels * 4,pbVar21 + 1);\n            } while (pbVar21 + 1 != pbVar20);\n          }\n          iVar23 = (int)(number_pixels >> 0x20);\n          if (((uint)q & 7) == 0) {\n            return;\n          }\n          *(undefined1 *)number_pixels = 0;\n          if (((uint)q & 7) == 0) {\n            return;\n          }\n          uVar10 = 0;\n          uVar25 = 7;\n          fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar30 <= fVar28) {\n                fVar28 = fVar28 - fVar30;\n              }\n              uVar10 = ((int)fVar28 & 1U) << (uVar25 & 0x1f) & 0xff | uVar10;\n            }\n            *(undefined1 *)number_pixels = (char)uVar10;\n            uVar25 = uVar25 - 1;\n            iVar23 = iVar23 + image->number_channels * 4;\n          } while (uVar25 != (~(uint)q & 7));\n          return;\n        }\n        if (uVar25 == 4) {\n          if (0 < (int)(q + -1)) {\n            fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar20 = (byte *)(number_pixels._4_4_ + ((uint)(q + -2) >> 1) + 1);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              pbVar21 = (byte *)number_pixels;\n              if (image->channel_map[5].traits == UndefinedPixelTrait) {\n                bVar5 = 0;\n              }\n              else {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = (byte)(((int)fVar28 & 0xffU) << 4);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar28 < fVar30) {\n                  bVar8 = (byte)(int)fVar28;\n                }\n                else {\n                  bVar8 = (byte)(int)(fVar28 - fVar30);\n                }\n                bVar5 = bVar5 | bVar8 & 0xf;\n              }\n              *pbVar21 = bVar5;\n              number_pixels = CONCAT44(iVar23 + image->number_channels * 4,pbVar21 + 1);\n            } while (pbVar21 + 1 != pbVar20);\n          }\n          if (((uint)q & 1) == 0) {\n            return;\n          }\n          if (image->channel_map[5].traits != UndefinedPixelTrait) {\n            fVar30 = *(float *)((int)(number_pixels >> 0x20) + image->channel_map[5].offset * 4);\n            if (fVar30 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              uVar4 = (undefined1)(((int)fVar30 & 0xfU) << 4);\n            }\n            else {\n              uVar4 = (undefined1)\n                      (((int)(fVar30 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU) << 4)\n              ;\n            }\n            *(undefined1 *)number_pixels = uVar4;\n            return;\n          }\n          *(undefined1 *)number_pixels = 0;\n          return;\n        }\n      }\n      else {\n        if (uVar25 == 0x20) {\n          if (quantum_info->format == FloatingPointQuantumFormat) {\n            puVar24 = (uchar *)0x0;\n            if ((int)q < 1) {\n              return;\n            }\n            dVar31 = (quantum_info->state).inverse_scale;\n            EVar13 = quantum_info->endian;\n            dVar27 = quantum_info->minimum;\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              dVar26 = 0.0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                dVar26 = (double)*(float *)(iVar23 + image->channel_map[5].offset * 4);\n              }\n              fVar30 = (float)(dVar31 * dVar26 + dVar27);\n              uVar7 = (undefined1)((uint)fVar30 >> 8);\n              uVar6 = (undefined1)((uint)fVar30 >> 0x10);\n              uVar4 = (undefined1)((uint)fVar30 >> 0x18);\n              if (EVar13 == LSBEndian) {\n                puVar22[1] = uVar6;\n                *puVar22 = uVar4;\n                puVar22[2] = uVar7;\n                puVar22[3] = SUB41(fVar30,0);\n              }\n              else {\n                *puVar22 = SUB41(fVar30,0);\n                puVar22[1] = uVar7;\n                puVar22[2] = uVar6;\n                puVar22[3] = uVar4;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 4);\n            } while (puVar24 != q);\n            return;\n          }\n          if ((int)q < 1) {\n            return;\n          }\n          puVar24 = (uchar *)0x0;\n          fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            iVar23 = (int)(number_pixels >> 0x20);\n            puVar22 = (undefined1 *)number_pixels;\n            uVar7 = 0;\n            uVar6 = 0;\n            uVar4 = 0;\n            uVar11 = 0;\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar30 <= fVar28) {\n                uVar25 = (int)(fVar28 - fVar30) | 0x80000000;\n              }\n              else {\n                uVar25 = (uint)fVar28;\n              }\n              uVar11 = (undefined1)(uVar25 >> 0x18);\n              uVar4 = (undefined1)(uVar25 >> 0x10);\n              uVar6 = (undefined1)(uVar25 >> 8);\n              uVar7 = (undefined1)uVar25;\n            }\n            if (quantum_info->endian == LSBEndian) {\n              *puVar22 = uVar7;\n              puVar22[1] = uVar6;\n              puVar22[2] = uVar4;\n              puVar22[3] = uVar11;\n            }\n            else {\n              *puVar22 = uVar11;\n              puVar22[1] = uVar4;\n              puVar22[2] = uVar6;\n              puVar22[3] = uVar7;\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 4);\n          } while (puVar24 != q);\n          return;\n        }\n        if (uVar25 == 0x40) {\n          if (quantum_info->format == FloatingPointQuantumFormat) {\n            puVar24 = (uchar *)0x0;\n            if ((int)q < 1) {\n              return;\n            }\n            dVar31 = (quantum_info->state).inverse_scale;\n            EVar13 = quantum_info->endian;\n            dVar27 = quantum_info->minimum;\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              dVar26 = 0.0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                dVar26 = (double)*(float *)(iVar23 + image->channel_map[5].offset * 4);\n              }\n              dVar26 = dVar31 * dVar26 + dVar27;\n              uVar4 = (undefined1)((ulonglong)dVar26 >> 0x20);\n              uVar19 = (undefined1)((ulonglong)dVar26 >> 8);\n              uVar17 = (undefined1)((ulonglong)dVar26 >> 0x10);\n              uVar7 = (undefined1)((ulonglong)dVar26 >> 0x18);\n              uVar14 = (undefined1)((ulonglong)dVar26 >> 0x28);\n              uVar11 = (undefined1)((ulonglong)dVar26 >> 0x30);\n              uVar6 = (undefined1)((ulonglong)dVar26 >> 0x38);\n              if (EVar13 == LSBEndian) {\n                puVar22[1] = uVar11;\n                *puVar22 = uVar6;\n                puVar22[2] = uVar14;\n                puVar22[3] = uVar4;\n                puVar22[4] = uVar7;\n                puVar22[5] = uVar17;\n                puVar22[6] = uVar19;\n                puVar22[7] = SUB81(dVar26,0);\n              }\n              else {\n                *puVar22 = SUB81(dVar26,0);\n                puVar22[1] = uVar19;\n                puVar22[2] = uVar17;\n                puVar22[3] = uVar7;\n                puVar22[4] = uVar4;\n                puVar22[5] = uVar14;\n                puVar22[6] = uVar11;\n                puVar22[7] = uVar6;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 8);\n            } while (puVar24 != q);\n            return;\n          }\n        }\n        else if (uVar25 == 0x10) {\n          if (quantum_info->format == FloatingPointQuantumFormat) {\n            if ((int)q < 1) {\n              return;\n            }\n            puVar24 = (uchar *)0x0;\n            EVar13 = LSBEndian;\n            dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              fVar30 = 0.0;\n              EVar16 = quantum_info->endian;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar30 = (float)((double)*(float *)(iVar23 + image->channel_map[5].offset * 4) *\n                                dVar27);\n              }\n              uVar3 = SinglePrecisionToHalf(fVar30);\n              uVar4 = (undefined1)(uVar3 >> 8);\n              if (EVar16 == EVar13) {\n                *puVar22 = (char)uVar3;\n                puVar22[1] = uVar4;\n              }\n              else {\n                *puVar22 = uVar4;\n                puVar22[1] = (char)uVar3;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2);\n            } while (puVar24 != q);\n            return;\n          }\n          if ((int)q < 1) {\n            return;\n          }\n          puVar24 = (uchar *)0x0;\n          fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            iVar23 = (int)(number_pixels >> 0x20);\n            puVar22 = (undefined1 *)number_pixels;\n            uVar6 = 0;\n            uVar4 = 0;\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar28 < fVar30) {\n                uVar29 = (undefined2)(int)fVar28;\n              }\n              else {\n                uVar29 = (undefined2)(int)(fVar28 - fVar30);\n              }\n              uVar4 = (undefined1)((ushort)uVar29 >> 8);\n              uVar6 = (undefined1)uVar29;\n            }\n            if (quantum_info->endian == LSBEndian) {\n              *puVar22 = uVar6;\n              puVar22[1] = uVar4;\n            }\n            else {\n              *puVar22 = uVar4;\n              puVar22[1] = uVar6;\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2);\n          } while (puVar24 != q);\n          return;\n        }\n      }\n      puVar24 = (uchar *)0x0;\n      if (0 < (int)q) {\n        pPVar2 = image->channel_map;\n        if (pPVar2[5].traits == UndefinedPixelTrait) goto LAB_001574b0;\n        do {\n          uVar32 = (*(code *)PTR___fixunssfdi_003a8a80)\n                             (*(undefined4 *)((int)(number_pixels >> 0x20) + pPVar2[5].offset * 4));\n          while( true ) {\n            uVar10 = (uint)((ulonglong)uVar32 >> 0x20);\n            pbVar20 = (byte *)number_pixels;\n            if ((quantum_info->state).bits == 0) {\n              (quantum_info->state).bits = 8;\n            }\n            if (0 < (int)uVar25) {\n              do {\n                uVar15 = (quantum_info->state).bits;\n                uVar9 = uVar15;\n                if (uVar25 <= uVar15) {\n                  uVar9 = uVar25;\n                }\n                uVar12 = uVar25 - uVar9;\n                uVar18 = uVar15 - uVar9;\n                uVar25 = uVar12;\n                if ((int)uVar12 < 0) {\n                  uVar25 = 0;\n                }\n                if (uVar15 == 8) {\n                  *pbVar20 = 0;\n                }\n                (quantum_info->state).bits = uVar18;\n                uVar15 = (uVar10 << 1) << (~uVar25 & 0x1f) | (uint)uVar32 >> (uVar25 & 0x1f);\n                if ((uVar25 & 0x20) != 0) {\n                  uVar15 = uVar10 >> (uVar25 & 0x1f);\n                }\n                bVar5 = (byte)((~(-1 << (uVar9 & 0x1f)) & uVar15) << (uVar18 & 0x1f));\n                if ((uVar18 & 0x20) != 0) {\n                  bVar5 = 0;\n                }\n                *pbVar20 = bVar5 | *pbVar20;\n                if (uVar18 == 0) {\n                  pbVar20 = pbVar20 + 1;\n                  (quantum_info->state).bits = 8;\n                }\n              } while (0 < (int)uVar12);\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44((int)(number_pixels >> 0x20) + image->number_channels * 4,\n                          pbVar20 + quantum_info->pad);\n            if (puVar24 == q) {\n              return;\n            }\n            pPVar2 = image->channel_map;\n            uVar25 = quantum_info->depth;\n            if (pPVar2[5].traits != UndefinedPixelTrait) break;\nLAB_001574b0:\n            uVar32 = 0;\n          }\n        } while( true );\n      }\n    }" { (if_statement "if (uVar25 < 9) {\n        if (uVar25 == 1) {\n          if (7 < (int)q) {\n            fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar20 = (byte *)(number_pixels._4_4_ + ((uint)(q + -8) >> 3) + 1);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              pbVar21 = (byte *)number_pixels;\n              bVar5 = 0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = (byte)(((int)fVar28 & 0xffU) << 7);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = bVar5 | (byte)(((int)fVar28 & 1U) << 6);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar8 = bVar5;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 5);\n                bVar8 = bVar5 | bVar1;\n                *pbVar21 = bVar5 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar8 = bVar8 | (byte)(((int)fVar28 & 1U) << 4);\n              }\n              *pbVar21 = bVar8;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar5 = bVar8;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 3);\n                bVar5 = bVar8 | bVar1;\n                *pbVar21 = bVar8 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = bVar5 | (byte)(((int)fVar28 & 1U) << 2);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar8 = bVar5;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 1);\n                bVar8 = bVar5 | bVar1;\n                *pbVar21 = bVar5 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar28 < fVar30) {\n                  bVar5 = (byte)(int)fVar28;\n                }\n                else {\n                  bVar5 = (byte)(int)(fVar28 - fVar30);\n                }\n                bVar8 = bVar8 | bVar5 & 1;\n              }\n              *pbVar21 = bVar8;\n              number_pixels = CONCAT44(iVar23 + image->number_channels * 4,pbVar21 + 1);\n            } while (pbVar21 + 1 != pbVar20);\n          }\n          iVar23 = (int)(number_pixels >> 0x20);\n          if (((uint)q & 7) == 0) {\n            return;\n          }\n          *(undefined1 *)number_pixels = 0;\n          if (((uint)q & 7) == 0) {\n            return;\n          }\n          uVar10 = 0;\n          uVar25 = 7;\n          fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar30 <= fVar28) {\n                fVar28 = fVar28 - fVar30;\n              }\n              uVar10 = ((int)fVar28 & 1U) << (uVar25 & 0x1f) & 0xff | uVar10;\n            }\n            *(undefined1 *)number_pixels = (char)uVar10;\n            uVar25 = uVar25 - 1;\n            iVar23 = iVar23 + image->number_channels * 4;\n          } while (uVar25 != (~(uint)q & 7));\n          return;\n        }\n        if (uVar25 == 4) {\n          if (0 < (int)(q + -1)) {\n            fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar20 = (byte *)(number_pixels._4_4_ + ((uint)(q + -2) >> 1) + 1);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              pbVar21 = (byte *)number_pixels;\n              if (image->channel_map[5].traits == UndefinedPixelTrait) {\n                bVar5 = 0;\n              }\n              else {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = (byte)(((int)fVar28 & 0xffU) << 4);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar28 < fVar30) {\n                  bVar8 = (byte)(int)fVar28;\n                }\n                else {\n                  bVar8 = (byte)(int)(fVar28 - fVar30);\n                }\n                bVar5 = bVar5 | bVar8 & 0xf;\n              }\n              *pbVar21 = bVar5;\n              number_pixels = CONCAT44(iVar23 + image->number_channels * 4,pbVar21 + 1);\n            } while (pbVar21 + 1 != pbVar20);\n          }\n          if (((uint)q & 1) == 0) {\n            return;\n          }\n          if (image->channel_map[5].traits != UndefinedPixelTrait) {\n            fVar30 = *(float *)((int)(number_pixels >> 0x20) + image->channel_map[5].offset * 4);\n            if (fVar30 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              uVar4 = (undefined1)(((int)fVar30 & 0xfU) << 4);\n            }\n            else {\n              uVar4 = (undefined1)\n                      (((int)(fVar30 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU) << 4)\n              ;\n            }\n            *(undefined1 *)number_pixels = uVar4;\n            return;\n          }\n          *(undefined1 *)number_pixels = 0;\n          return;\n        }\n      }\n      else {\n        if (uVar25 == 0x20) {\n          if (quantum_info->format == FloatingPointQuantumFormat) {\n            puVar24 = (uchar *)0x0;\n            if ((int)q < 1) {\n              return;\n            }\n            dVar31 = (quantum_info->state).inverse_scale;\n            EVar13 = quantum_info->endian;\n            dVar27 = quantum_info->minimum;\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              dVar26 = 0.0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                dVar26 = (double)*(float *)(iVar23 + image->channel_map[5].offset * 4);\n              }\n              fVar30 = (float)(dVar31 * dVar26 + dVar27);\n              uVar7 = (undefined1)((uint)fVar30 >> 8);\n              uVar6 = (undefined1)((uint)fVar30 >> 0x10);\n              uVar4 = (undefined1)((uint)fVar30 >> 0x18);\n              if (EVar13 == LSBEndian) {\n                puVar22[1] = uVar6;\n                *puVar22 = uVar4;\n                puVar22[2] = uVar7;\n                puVar22[3] = SUB41(fVar30,0);\n              }\n              else {\n                *puVar22 = SUB41(fVar30,0);\n                puVar22[1] = uVar7;\n                puVar22[2] = uVar6;\n                puVar22[3] = uVar4;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 4);\n            } while (puVar24 != q);\n            return;\n          }\n          if ((int)q < 1) {\n            return;\n          }\n          puVar24 = (uchar *)0x0;\n          fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            iVar23 = (int)(number_pixels >> 0x20);\n            puVar22 = (undefined1 *)number_pixels;\n            uVar7 = 0;\n            uVar6 = 0;\n            uVar4 = 0;\n            uVar11 = 0;\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar30 <= fVar28) {\n                uVar25 = (int)(fVar28 - fVar30) | 0x80000000;\n              }\n              else {\n                uVar25 = (uint)fVar28;\n              }\n              uVar11 = (undefined1)(uVar25 >> 0x18);\n              uVar4 = (undefined1)(uVar25 >> 0x10);\n              uVar6 = (undefined1)(uVar25 >> 8);\n              uVar7 = (undefined1)uVar25;\n            }\n            if (quantum_info->endian == LSBEndian) {\n              *puVar22 = uVar7;\n              puVar22[1] = uVar6;\n              puVar22[2] = uVar4;\n              puVar22[3] = uVar11;\n            }\n            else {\n              *puVar22 = uVar11;\n              puVar22[1] = uVar4;\n              puVar22[2] = uVar6;\n              puVar22[3] = uVar7;\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 4);\n          } while (puVar24 != q);\n          return;\n        }\n        if (uVar25 == 0x40) {\n          if (quantum_info->format == FloatingPointQuantumFormat) {\n            puVar24 = (uchar *)0x0;\n            if ((int)q < 1) {\n              return;\n            }\n            dVar31 = (quantum_info->state).inverse_scale;\n            EVar13 = quantum_info->endian;\n            dVar27 = quantum_info->minimum;\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              dVar26 = 0.0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                dVar26 = (double)*(float *)(iVar23 + image->channel_map[5].offset * 4);\n              }\n              dVar26 = dVar31 * dVar26 + dVar27;\n              uVar4 = (undefined1)((ulonglong)dVar26 >> 0x20);\n              uVar19 = (undefined1)((ulonglong)dVar26 >> 8);\n              uVar17 = (undefined1)((ulonglong)dVar26 >> 0x10);\n              uVar7 = (undefined1)((ulonglong)dVar26 >> 0x18);\n              uVar14 = (undefined1)((ulonglong)dVar26 >> 0x28);\n              uVar11 = (undefined1)((ulonglong)dVar26 >> 0x30);\n              uVar6 = (undefined1)((ulonglong)dVar26 >> 0x38);\n              if (EVar13 == LSBEndian) {\n                puVar22[1] = uVar11;\n                *puVar22 = uVar6;\n                puVar22[2] = uVar14;\n                puVar22[3] = uVar4;\n                puVar22[4] = uVar7;\n                puVar22[5] = uVar17;\n                puVar22[6] = uVar19;\n                puVar22[7] = SUB81(dVar26,0);\n              }\n              else {\n                *puVar22 = SUB81(dVar26,0);\n                puVar22[1] = uVar19;\n                puVar22[2] = uVar17;\n                puVar22[3] = uVar7;\n                puVar22[4] = uVar4;\n                puVar22[5] = uVar14;\n                puVar22[6] = uVar11;\n                puVar22[7] = uVar6;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 8);\n            } while (puVar24 != q);\n            return;\n          }\n        }\n        else if (uVar25 == 0x10) {\n          if (quantum_info->format == FloatingPointQuantumFormat) {\n            if ((int)q < 1) {\n              return;\n            }\n            puVar24 = (uchar *)0x0;\n            EVar13 = LSBEndian;\n            dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              fVar30 = 0.0;\n              EVar16 = quantum_info->endian;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar30 = (float)((double)*(float *)(iVar23 + image->channel_map[5].offset * 4) *\n                                dVar27);\n              }\n              uVar3 = SinglePrecisionToHalf(fVar30);\n              uVar4 = (undefined1)(uVar3 >> 8);\n              if (EVar16 == EVar13) {\n                *puVar22 = (char)uVar3;\n                puVar22[1] = uVar4;\n              }\n              else {\n                *puVar22 = uVar4;\n                puVar22[1] = (char)uVar3;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2);\n            } while (puVar24 != q);\n            return;\n          }\n          if ((int)q < 1) {\n            return;\n          }\n          puVar24 = (uchar *)0x0;\n          fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            iVar23 = (int)(number_pixels >> 0x20);\n            puVar22 = (undefined1 *)number_pixels;\n            uVar6 = 0;\n            uVar4 = 0;\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar28 < fVar30) {\n                uVar29 = (undefined2)(int)fVar28;\n              }\n              else {\n                uVar29 = (undefined2)(int)(fVar28 - fVar30);\n              }\n              uVar4 = (undefined1)((ushort)uVar29 >> 8);\n              uVar6 = (undefined1)uVar29;\n            }\n            if (quantum_info->endian == LSBEndian) {\n              *puVar22 = uVar6;\n              puVar22[1] = uVar4;\n            }\n            else {\n              *puVar22 = uVar4;\n              puVar22[1] = uVar6;\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2);\n          } while (puVar24 != q);\n          return;\n        }\n      }" if (parenthesized_expression "(uVar25 < 9)" ( (binary_expression "uVar25 < 9" identifier < number_literal) )) (compound_statement "{\n        if (uVar25 == 1) {\n          if (7 < (int)q) {\n            fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar20 = (byte *)(number_pixels._4_4_ + ((uint)(q + -8) >> 3) + 1);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              pbVar21 = (byte *)number_pixels;\n              bVar5 = 0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = (byte)(((int)fVar28 & 0xffU) << 7);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = bVar5 | (byte)(((int)fVar28 & 1U) << 6);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar8 = bVar5;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 5);\n                bVar8 = bVar5 | bVar1;\n                *pbVar21 = bVar5 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar8 = bVar8 | (byte)(((int)fVar28 & 1U) << 4);\n              }\n              *pbVar21 = bVar8;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar5 = bVar8;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 3);\n                bVar5 = bVar8 | bVar1;\n                *pbVar21 = bVar8 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = bVar5 | (byte)(((int)fVar28 & 1U) << 2);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar8 = bVar5;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 1);\n                bVar8 = bVar5 | bVar1;\n                *pbVar21 = bVar5 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar28 < fVar30) {\n                  bVar5 = (byte)(int)fVar28;\n                }\n                else {\n                  bVar5 = (byte)(int)(fVar28 - fVar30);\n                }\n                bVar8 = bVar8 | bVar5 & 1;\n              }\n              *pbVar21 = bVar8;\n              number_pixels = CONCAT44(iVar23 + image->number_channels * 4,pbVar21 + 1);\n            } while (pbVar21 + 1 != pbVar20);\n          }\n          iVar23 = (int)(number_pixels >> 0x20);\n          if (((uint)q & 7) == 0) {\n            return;\n          }\n          *(undefined1 *)number_pixels = 0;\n          if (((uint)q & 7) == 0) {\n            return;\n          }\n          uVar10 = 0;\n          uVar25 = 7;\n          fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar30 <= fVar28) {\n                fVar28 = fVar28 - fVar30;\n              }\n              uVar10 = ((int)fVar28 & 1U) << (uVar25 & 0x1f) & 0xff | uVar10;\n            }\n            *(undefined1 *)number_pixels = (char)uVar10;\n            uVar25 = uVar25 - 1;\n            iVar23 = iVar23 + image->number_channels * 4;\n          } while (uVar25 != (~(uint)q & 7));\n          return;\n        }\n        if (uVar25 == 4) {\n          if (0 < (int)(q + -1)) {\n            fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar20 = (byte *)(number_pixels._4_4_ + ((uint)(q + -2) >> 1) + 1);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              pbVar21 = (byte *)number_pixels;\n              if (image->channel_map[5].traits == UndefinedPixelTrait) {\n                bVar5 = 0;\n              }\n              else {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = (byte)(((int)fVar28 & 0xffU) << 4);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar28 < fVar30) {\n                  bVar8 = (byte)(int)fVar28;\n                }\n                else {\n                  bVar8 = (byte)(int)(fVar28 - fVar30);\n                }\n                bVar5 = bVar5 | bVar8 & 0xf;\n              }\n              *pbVar21 = bVar5;\n              number_pixels = CONCAT44(iVar23 + image->number_channels * 4,pbVar21 + 1);\n            } while (pbVar21 + 1 != pbVar20);\n          }\n          if (((uint)q & 1) == 0) {\n            return;\n          }\n          if (image->channel_map[5].traits != UndefinedPixelTrait) {\n            fVar30 = *(float *)((int)(number_pixels >> 0x20) + image->channel_map[5].offset * 4);\n            if (fVar30 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              uVar4 = (undefined1)(((int)fVar30 & 0xfU) << 4);\n            }\n            else {\n              uVar4 = (undefined1)\n                      (((int)(fVar30 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU) << 4)\n              ;\n            }\n            *(undefined1 *)number_pixels = uVar4;\n            return;\n          }\n          *(undefined1 *)number_pixels = 0;\n          return;\n        }\n      }" { (if_statement "if (uVar25 == 1) {\n          if (7 < (int)q) {\n            fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar20 = (byte *)(number_pixels._4_4_ + ((uint)(q + -8) >> 3) + 1);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              pbVar21 = (byte *)number_pixels;\n              bVar5 = 0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = (byte)(((int)fVar28 & 0xffU) << 7);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = bVar5 | (byte)(((int)fVar28 & 1U) << 6);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar8 = bVar5;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 5);\n                bVar8 = bVar5 | bVar1;\n                *pbVar21 = bVar5 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar8 = bVar8 | (byte)(((int)fVar28 & 1U) << 4);\n              }\n              *pbVar21 = bVar8;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar5 = bVar8;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 3);\n                bVar5 = bVar8 | bVar1;\n                *pbVar21 = bVar8 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = bVar5 | (byte)(((int)fVar28 & 1U) << 2);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar8 = bVar5;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 1);\n                bVar8 = bVar5 | bVar1;\n                *pbVar21 = bVar5 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar28 < fVar30) {\n                  bVar5 = (byte)(int)fVar28;\n                }\n                else {\n                  bVar5 = (byte)(int)(fVar28 - fVar30);\n                }\n                bVar8 = bVar8 | bVar5 & 1;\n              }\n              *pbVar21 = bVar8;\n              number_pixels = CONCAT44(iVar23 + image->number_channels * 4,pbVar21 + 1);\n            } while (pbVar21 + 1 != pbVar20);\n          }\n          iVar23 = (int)(number_pixels >> 0x20);\n          if (((uint)q & 7) == 0) {\n            return;\n          }\n          *(undefined1 *)number_pixels = 0;\n          if (((uint)q & 7) == 0) {\n            return;\n          }\n          uVar10 = 0;\n          uVar25 = 7;\n          fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar30 <= fVar28) {\n                fVar28 = fVar28 - fVar30;\n              }\n              uVar10 = ((int)fVar28 & 1U) << (uVar25 & 0x1f) & 0xff | uVar10;\n            }\n            *(undefined1 *)number_pixels = (char)uVar10;\n            uVar25 = uVar25 - 1;\n            iVar23 = iVar23 + image->number_channels * 4;\n          } while (uVar25 != (~(uint)q & 7));\n          return;\n        }" if (parenthesized_expression "(uVar25 == 1)" ( (binary_expression "uVar25 == 1" identifier == number_literal) )) (compound_statement "{\n          if (7 < (int)q) {\n            fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar20 = (byte *)(number_pixels._4_4_ + ((uint)(q + -8) >> 3) + 1);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              pbVar21 = (byte *)number_pixels;\n              bVar5 = 0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = (byte)(((int)fVar28 & 0xffU) << 7);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = bVar5 | (byte)(((int)fVar28 & 1U) << 6);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar8 = bVar5;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 5);\n                bVar8 = bVar5 | bVar1;\n                *pbVar21 = bVar5 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar8 = bVar8 | (byte)(((int)fVar28 & 1U) << 4);\n              }\n              *pbVar21 = bVar8;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar5 = bVar8;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 3);\n                bVar5 = bVar8 | bVar1;\n                *pbVar21 = bVar8 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = bVar5 | (byte)(((int)fVar28 & 1U) << 2);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar8 = bVar5;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 1);\n                bVar8 = bVar5 | bVar1;\n                *pbVar21 = bVar5 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar28 < fVar30) {\n                  bVar5 = (byte)(int)fVar28;\n                }\n                else {\n                  bVar5 = (byte)(int)(fVar28 - fVar30);\n                }\n                bVar8 = bVar8 | bVar5 & 1;\n              }\n              *pbVar21 = bVar8;\n              number_pixels = CONCAT44(iVar23 + image->number_channels * 4,pbVar21 + 1);\n            } while (pbVar21 + 1 != pbVar20);\n          }\n          iVar23 = (int)(number_pixels >> 0x20);\n          if (((uint)q & 7) == 0) {\n            return;\n          }\n          *(undefined1 *)number_pixels = 0;\n          if (((uint)q & 7) == 0) {\n            return;\n          }\n          uVar10 = 0;\n          uVar25 = 7;\n          fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar30 <= fVar28) {\n                fVar28 = fVar28 - fVar30;\n              }\n              uVar10 = ((int)fVar28 & 1U) << (uVar25 & 0x1f) & 0xff | uVar10;\n            }\n            *(undefined1 *)number_pixels = (char)uVar10;\n            uVar25 = uVar25 - 1;\n            iVar23 = iVar23 + image->number_channels * 4;\n          } while (uVar25 != (~(uint)q & 7));\n          return;\n        }" { (if_statement "if (7 < (int)q) {\n            fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar20 = (byte *)(number_pixels._4_4_ + ((uint)(q + -8) >> 3) + 1);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              pbVar21 = (byte *)number_pixels;\n              bVar5 = 0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = (byte)(((int)fVar28 & 0xffU) << 7);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = bVar5 | (byte)(((int)fVar28 & 1U) << 6);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar8 = bVar5;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 5);\n                bVar8 = bVar5 | bVar1;\n                *pbVar21 = bVar5 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar8 = bVar8 | (byte)(((int)fVar28 & 1U) << 4);\n              }\n              *pbVar21 = bVar8;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar5 = bVar8;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 3);\n                bVar5 = bVar8 | bVar1;\n                *pbVar21 = bVar8 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = bVar5 | (byte)(((int)fVar28 & 1U) << 2);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar8 = bVar5;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 1);\n                bVar8 = bVar5 | bVar1;\n                *pbVar21 = bVar5 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar28 < fVar30) {\n                  bVar5 = (byte)(int)fVar28;\n                }\n                else {\n                  bVar5 = (byte)(int)(fVar28 - fVar30);\n                }\n                bVar8 = bVar8 | bVar5 & 1;\n              }\n              *pbVar21 = bVar8;\n              number_pixels = CONCAT44(iVar23 + image->number_channels * 4,pbVar21 + 1);\n            } while (pbVar21 + 1 != pbVar20);\n          }" if (parenthesized_expression "(7 < (int)q)" ( (binary_expression "7 < (int)q" number_literal < (cast_expression "(int)q" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar20 = (byte *)(number_pixels._4_4_ + ((uint)(q + -8) >> 3) + 1);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              pbVar21 = (byte *)number_pixels;\n              bVar5 = 0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = (byte)(((int)fVar28 & 0xffU) << 7);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = bVar5 | (byte)(((int)fVar28 & 1U) << 6);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar8 = bVar5;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 5);\n                bVar8 = bVar5 | bVar1;\n                *pbVar21 = bVar5 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar8 = bVar8 | (byte)(((int)fVar28 & 1U) << 4);\n              }\n              *pbVar21 = bVar8;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar5 = bVar8;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 3);\n                bVar5 = bVar8 | bVar1;\n                *pbVar21 = bVar8 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = bVar5 | (byte)(((int)fVar28 & 1U) << 2);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar8 = bVar5;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 1);\n                bVar8 = bVar5 | bVar1;\n                *pbVar21 = bVar5 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar28 < fVar30) {\n                  bVar5 = (byte)(int)fVar28;\n                }\n                else {\n                  bVar5 = (byte)(int)(fVar28 - fVar30);\n                }\n                bVar8 = bVar8 | bVar5 & 1;\n              }\n              *pbVar21 = bVar8;\n              number_pixels = CONCAT44(iVar23 + image->number_channels * 4,pbVar21 + 1);\n            } while (pbVar21 + 1 != pbVar20);\n          }" { (expression_statement "fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);" (assignment_expression "fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" identifier = (pointer_expression "*(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" * (cast_expression "(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (binary_expression "PTR_s_t_to_left_003a88e4 + -0x51e0" identifier + number_literal) ))))) ;) (expression_statement "pbVar20 = (byte *)(number_pixels._4_4_ + ((uint)(q + -8) >> 3) + 1);" (assignment_expression "pbVar20 = (byte *)(number_pixels._4_4_ + ((uint)(q + -8) >> 3) + 1)" identifier = (cast_expression "(byte *)(number_pixels._4_4_ + ((uint)(q + -8) >> 3) + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(number_pixels._4_4_ + ((uint)(q + -8) >> 3) + 1)" ( (binary_expression "number_pixels._4_4_ + ((uint)(q + -8) >> 3) + 1" (binary_expression "number_pixels._4_4_ + ((uint)(q + -8) >> 3)" (field_expression "number_pixels._4_4_" identifier . field_identifier) + (parenthesized_expression "((uint)(q + -8) >> 3)" ( (binary_expression "(uint)(q + -8) >> 3" (call_expression "(uint)(q + -8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(q + -8)" ( (binary_expression "q + -8" identifier + number_literal) ))) >> number_literal) ))) + number_literal) )))) ;) (do_statement "do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              pbVar21 = (byte *)number_pixels;\n              bVar5 = 0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = (byte)(((int)fVar28 & 0xffU) << 7);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = bVar5 | (byte)(((int)fVar28 & 1U) << 6);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar8 = bVar5;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 5);\n                bVar8 = bVar5 | bVar1;\n                *pbVar21 = bVar5 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar8 = bVar8 | (byte)(((int)fVar28 & 1U) << 4);\n              }\n              *pbVar21 = bVar8;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar5 = bVar8;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 3);\n                bVar5 = bVar8 | bVar1;\n                *pbVar21 = bVar8 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = bVar5 | (byte)(((int)fVar28 & 1U) << 2);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar8 = bVar5;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 1);\n                bVar8 = bVar5 | bVar1;\n                *pbVar21 = bVar5 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar28 < fVar30) {\n                  bVar5 = (byte)(int)fVar28;\n                }\n                else {\n                  bVar5 = (byte)(int)(fVar28 - fVar30);\n                }\n                bVar8 = bVar8 | bVar5 & 1;\n              }\n              *pbVar21 = bVar8;\n              number_pixels = CONCAT44(iVar23 + image->number_channels * 4,pbVar21 + 1);\n            } while (pbVar21 + 1 != pbVar20);" do (compound_statement "{\n              iVar23 = (int)(number_pixels >> 0x20);\n              pbVar21 = (byte *)number_pixels;\n              bVar5 = 0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = (byte)(((int)fVar28 & 0xffU) << 7);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = bVar5 | (byte)(((int)fVar28 & 1U) << 6);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar8 = bVar5;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 5);\n                bVar8 = bVar5 | bVar1;\n                *pbVar21 = bVar5 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar8 = bVar8 | (byte)(((int)fVar28 & 1U) << 4);\n              }\n              *pbVar21 = bVar8;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar5 = bVar8;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 3);\n                bVar5 = bVar8 | bVar1;\n                *pbVar21 = bVar8 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = bVar5 | (byte)(((int)fVar28 & 1U) << 2);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              bVar8 = bVar5;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 1);\n                bVar8 = bVar5 | bVar1;\n                *pbVar21 = bVar5 | bVar1;\n              }\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar28 < fVar30) {\n                  bVar5 = (byte)(int)fVar28;\n                }\n                else {\n                  bVar5 = (byte)(int)(fVar28 - fVar30);\n                }\n                bVar8 = bVar8 | bVar5 & 1;\n              }\n              *pbVar21 = bVar8;\n              number_pixels = CONCAT44(iVar23 + image->number_channels * 4,pbVar21 + 1);\n            }" { (expression_statement "iVar23 = (int)(number_pixels >> 0x20);" (assignment_expression "iVar23 = (int)(number_pixels >> 0x20)" identifier = (cast_expression "(int)(number_pixels >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(number_pixels >> 0x20)" ( (binary_expression "number_pixels >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "pbVar21 = (byte *)number_pixels;" (assignment_expression "pbVar21 = (byte *)number_pixels" identifier = (cast_expression "(byte *)number_pixels" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "bVar5 = 0;" (assignment_expression "bVar5 = 0" identifier = number_literal) ;) (if_statement "if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = (byte)(((int)fVar28 & 0xffU) << 7);\n              }" if (parenthesized_expression "(image->channel_map[5].traits != UndefinedPixelTrait)" ( (binary_expression "image->channel_map[5].traits != UndefinedPixelTrait" (field_expression "image->channel_map[5].traits" (subscript_expression "image->channel_map[5]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) != identifier) )) (compound_statement "{\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = (byte)(((int)fVar28 & 0xffU) << 7);\n              }" { (expression_statement "fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);" (assignment_expression "fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4)" identifier = (pointer_expression "*(float *)(iVar23 + image->channel_map[5].offset * 4)" * (cast_expression "(float *)(iVar23 + image->channel_map[5].offset * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + image->channel_map[5].offset * 4)" ( (binary_expression "iVar23 + image->channel_map[5].offset * 4" identifier + (binary_expression "image->channel_map[5].offset * 4" (field_expression "image->channel_map[5].offset" (subscript_expression "image->channel_map[5]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) * number_literal)) ))))) ;) (if_statement "if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }" if (parenthesized_expression "(fVar30 <= fVar28)" ( (binary_expression "fVar30 <= fVar28" identifier <= identifier) )) (compound_statement "{\n                  fVar28 = fVar28 - fVar30;\n                }" { (expression_statement "fVar28 = fVar28 - fVar30;" (assignment_expression "fVar28 = fVar28 - fVar30" identifier = (binary_expression "fVar28 - fVar30" identifier - identifier)) ;) })) (expression_statement "bVar5 = (byte)(((int)fVar28 & 0xffU) << 7);" (assignment_expression "bVar5 = (byte)(((int)fVar28 & 0xffU) << 7)" identifier = (call_expression "(byte)(((int)fVar28 & 0xffU) << 7)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((int)fVar28 & 0xffU) << 7)" ( (binary_expression "((int)fVar28 & 0xffU) << 7" (parenthesized_expression "((int)fVar28 & 0xffU)" ( (binary_expression "(int)fVar28 & 0xffU" (cast_expression "(int)fVar28" ( (type_descriptor "int" primitive_type) ) identifier) & number_literal) )) << number_literal) )))) ;) })) (expression_statement "*pbVar21 = bVar5;" (assignment_expression "*pbVar21 = bVar5" (pointer_expression "*pbVar21" * identifier) = identifier) ;) (expression_statement "iVar23 = iVar23 + image->number_channels * 4;" (assignment_expression "iVar23 = iVar23 + image->number_channels * 4" identifier = (binary_expression "iVar23 + image->number_channels * 4" identifier + (binary_expression "image->number_channels * 4" (field_expression "image->number_channels" identifier -> field_identifier) * number_literal))) ;) (if_statement "if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = bVar5 | (byte)(((int)fVar28 & 1U) << 6);\n              }" if (parenthesized_expression "(image->channel_map[5].traits != UndefinedPixelTrait)" ( (binary_expression "image->channel_map[5].traits != UndefinedPixelTrait" (field_expression "image->channel_map[5].traits" (subscript_expression "image->channel_map[5]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) != identifier) )) (compound_statement "{\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = bVar5 | (byte)(((int)fVar28 & 1U) << 6);\n              }" { (expression_statement "fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);" (assignment_expression "fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4)" identifier = (pointer_expression "*(float *)(iVar23 + image->channel_map[5].offset * 4)" * (cast_expression "(float *)(iVar23 + image->channel_map[5].offset * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + image->channel_map[5].offset * 4)" ( (binary_expression "iVar23 + image->channel_map[5].offset * 4" identifier + (binary_expression "image->channel_map[5].offset * 4" (field_expression "image->channel_map[5].offset" (subscript_expression "image->channel_map[5]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) * number_literal)) ))))) ;) (if_statement "if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }" if (parenthesized_expression "(fVar30 <= fVar28)" ( (binary_expression "fVar30 <= fVar28" identifier <= identifier) )) (compound_statement "{\n                  fVar28 = fVar28 - fVar30;\n                }" { (expression_statement "fVar28 = fVar28 - fVar30;" (assignment_expression "fVar28 = fVar28 - fVar30" identifier = (binary_expression "fVar28 - fVar30" identifier - identifier)) ;) })) (expression_statement "bVar5 = bVar5 | (byte)(((int)fVar28 & 1U) << 6);" (assignment_expression "bVar5 = bVar5 | (byte)(((int)fVar28 & 1U) << 6)" identifier = (binary_expression "bVar5 | (byte)(((int)fVar28 & 1U) << 6)" identifier | (call_expression "(byte)(((int)fVar28 & 1U) << 6)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((int)fVar28 & 1U) << 6)" ( (binary_expression "((int)fVar28 & 1U) << 6" (parenthesized_expression "((int)fVar28 & 1U)" ( (binary_expression "(int)fVar28 & 1U" (cast_expression "(int)fVar28" ( (type_descriptor "int" primitive_type) ) identifier) & number_literal) )) << number_literal) ))))) ;) })) (expression_statement "*pbVar21 = bVar5;" (assignment_expression "*pbVar21 = bVar5" (pointer_expression "*pbVar21" * identifier) = identifier) ;) (expression_statement "iVar23 = iVar23 + image->number_channels * 4;" (assignment_expression "iVar23 = iVar23 + image->number_channels * 4" identifier = (binary_expression "iVar23 + image->number_channels * 4" identifier + (binary_expression "image->number_channels * 4" (field_expression "image->number_channels" identifier -> field_identifier) * number_literal))) ;) (expression_statement "bVar8 = bVar5;" (assignment_expression "bVar8 = bVar5" identifier = identifier) ;) (if_statement "if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 5);\n                bVar8 = bVar5 | bVar1;\n                *pbVar21 = bVar5 | bVar1;\n              }" if (parenthesized_expression "(image->channel_map[5].traits != UndefinedPixelTrait)" ( (binary_expression "image->channel_map[5].traits != UndefinedPixelTrait" (field_expression "image->channel_map[5].traits" (subscript_expression "image->channel_map[5]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) != identifier) )) (compound_statement "{\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 5);\n                bVar8 = bVar5 | bVar1;\n                *pbVar21 = bVar5 | bVar1;\n              }" { (expression_statement "fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);" (assignment_expression "fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4)" identifier = (pointer_expression "*(float *)(iVar23 + image->channel_map[5].offset * 4)" * (cast_expression "(float *)(iVar23 + image->channel_map[5].offset * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + image->channel_map[5].offset * 4)" ( (binary_expression "iVar23 + image->channel_map[5].offset * 4" identifier + (binary_expression "image->channel_map[5].offset * 4" (field_expression "image->channel_map[5].offset" (subscript_expression "image->channel_map[5]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) * number_literal)) ))))) ;) (if_statement "if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }" if (parenthesized_expression "(fVar30 <= fVar28)" ( (binary_expression "fVar30 <= fVar28" identifier <= identifier) )) (compound_statement "{\n                  fVar28 = fVar28 - fVar30;\n                }" { (expression_statement "fVar28 = fVar28 - fVar30;" (assignment_expression "fVar28 = fVar28 - fVar30" identifier = (binary_expression "fVar28 - fVar30" identifier - identifier)) ;) })) (expression_statement "bVar1 = (byte)(((int)fVar28 & 1U) << 5);" (assignment_expression "bVar1 = (byte)(((int)fVar28 & 1U) << 5)" identifier = (call_expression "(byte)(((int)fVar28 & 1U) << 5)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((int)fVar28 & 1U) << 5)" ( (binary_expression "((int)fVar28 & 1U) << 5" (parenthesized_expression "((int)fVar28 & 1U)" ( (binary_expression "(int)fVar28 & 1U" (cast_expression "(int)fVar28" ( (type_descriptor "int" primitive_type) ) identifier) & number_literal) )) << number_literal) )))) ;) (expression_statement "bVar8 = bVar5 | bVar1;" (assignment_expression "bVar8 = bVar5 | bVar1" identifier = (binary_expression "bVar5 | bVar1" identifier | identifier)) ;) (expression_statement "*pbVar21 = bVar5 | bVar1;" (assignment_expression "*pbVar21 = bVar5 | bVar1" (pointer_expression "*pbVar21" * identifier) = (binary_expression "bVar5 | bVar1" identifier | identifier)) ;) })) (expression_statement "iVar23 = iVar23 + image->number_channels * 4;" (assignment_expression "iVar23 = iVar23 + image->number_channels * 4" identifier = (binary_expression "iVar23 + image->number_channels * 4" identifier + (binary_expression "image->number_channels * 4" (field_expression "image->number_channels" identifier -> field_identifier) * number_literal))) ;) (if_statement "if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar8 = bVar8 | (byte)(((int)fVar28 & 1U) << 4);\n              }" if (parenthesized_expression "(image->channel_map[5].traits != UndefinedPixelTrait)" ( (binary_expression "image->channel_map[5].traits != UndefinedPixelTrait" (field_expression "image->channel_map[5].traits" (subscript_expression "image->channel_map[5]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) != identifier) )) (compound_statement "{\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar8 = bVar8 | (byte)(((int)fVar28 & 1U) << 4);\n              }" { (expression_statement "fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);" (assignment_expression "fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4)" identifier = (pointer_expression "*(float *)(iVar23 + image->channel_map[5].offset * 4)" * (cast_expression "(float *)(iVar23 + image->channel_map[5].offset * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + image->channel_map[5].offset * 4)" ( (binary_expression "iVar23 + image->channel_map[5].offset * 4" identifier + (binary_expression "image->channel_map[5].offset * 4" (field_expression "image->channel_map[5].offset" (subscript_expression "image->channel_map[5]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) * number_literal)) ))))) ;) (if_statement "if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }" if (parenthesized_expression "(fVar30 <= fVar28)" ( (binary_expression "fVar30 <= fVar28" identifier <= identifier) )) (compound_statement "{\n                  fVar28 = fVar28 - fVar30;\n                }" { (expression_statement "fVar28 = fVar28 - fVar30;" (assignment_expression "fVar28 = fVar28 - fVar30" identifier = (binary_expression "fVar28 - fVar30" identifier - identifier)) ;) })) (expression_statement "bVar8 = bVar8 | (byte)(((int)fVar28 & 1U) << 4);" (assignment_expression "bVar8 = bVar8 | (byte)(((int)fVar28 & 1U) << 4)" identifier = (binary_expression "bVar8 | (byte)(((int)fVar28 & 1U) << 4)" identifier | (call_expression "(byte)(((int)fVar28 & 1U) << 4)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((int)fVar28 & 1U) << 4)" ( (binary_expression "((int)fVar28 & 1U) << 4" (parenthesized_expression "((int)fVar28 & 1U)" ( (binary_expression "(int)fVar28 & 1U" (cast_expression "(int)fVar28" ( (type_descriptor "int" primitive_type) ) identifier) & number_literal) )) << number_literal) ))))) ;) })) (expression_statement "*pbVar21 = bVar8;" (assignment_expression "*pbVar21 = bVar8" (pointer_expression "*pbVar21" * identifier) = identifier) ;) (expression_statement "iVar23 = iVar23 + image->number_channels * 4;" (assignment_expression "iVar23 = iVar23 + image->number_channels * 4" identifier = (binary_expression "iVar23 + image->number_channels * 4" identifier + (binary_expression "image->number_channels * 4" (field_expression "image->number_channels" identifier -> field_identifier) * number_literal))) ;) (expression_statement "bVar5 = bVar8;" (assignment_expression "bVar5 = bVar8" identifier = identifier) ;) (if_statement "if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 3);\n                bVar5 = bVar8 | bVar1;\n                *pbVar21 = bVar8 | bVar1;\n              }" if (parenthesized_expression "(image->channel_map[5].traits != UndefinedPixelTrait)" ( (binary_expression "image->channel_map[5].traits != UndefinedPixelTrait" (field_expression "image->channel_map[5].traits" (subscript_expression "image->channel_map[5]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) != identifier) )) (compound_statement "{\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 3);\n                bVar5 = bVar8 | bVar1;\n                *pbVar21 = bVar8 | bVar1;\n              }" { (expression_statement "fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);" (assignment_expression "fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4)" identifier = (pointer_expression "*(float *)(iVar23 + image->channel_map[5].offset * 4)" * (cast_expression "(float *)(iVar23 + image->channel_map[5].offset * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + image->channel_map[5].offset * 4)" ( (binary_expression "iVar23 + image->channel_map[5].offset * 4" identifier + (binary_expression "image->channel_map[5].offset * 4" (field_expression "image->channel_map[5].offset" (subscript_expression "image->channel_map[5]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) * number_literal)) ))))) ;) (if_statement "if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }" if (parenthesized_expression "(fVar30 <= fVar28)" ( (binary_expression "fVar30 <= fVar28" identifier <= identifier) )) (compound_statement "{\n                  fVar28 = fVar28 - fVar30;\n                }" { (expression_statement "fVar28 = fVar28 - fVar30;" (assignment_expression "fVar28 = fVar28 - fVar30" identifier = (binary_expression "fVar28 - fVar30" identifier - identifier)) ;) })) (expression_statement "bVar1 = (byte)(((int)fVar28 & 1U) << 3);" (assignment_expression "bVar1 = (byte)(((int)fVar28 & 1U) << 3)" identifier = (call_expression "(byte)(((int)fVar28 & 1U) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((int)fVar28 & 1U) << 3)" ( (binary_expression "((int)fVar28 & 1U) << 3" (parenthesized_expression "((int)fVar28 & 1U)" ( (binary_expression "(int)fVar28 & 1U" (cast_expression "(int)fVar28" ( (type_descriptor "int" primitive_type) ) identifier) & number_literal) )) << number_literal) )))) ;) (expression_statement "bVar5 = bVar8 | bVar1;" (assignment_expression "bVar5 = bVar8 | bVar1" identifier = (binary_expression "bVar8 | bVar1" identifier | identifier)) ;) (expression_statement "*pbVar21 = bVar8 | bVar1;" (assignment_expression "*pbVar21 = bVar8 | bVar1" (pointer_expression "*pbVar21" * identifier) = (binary_expression "bVar8 | bVar1" identifier | identifier)) ;) })) (expression_statement "iVar23 = iVar23 + image->number_channels * 4;" (assignment_expression "iVar23 = iVar23 + image->number_channels * 4" identifier = (binary_expression "iVar23 + image->number_channels * 4" identifier + (binary_expression "image->number_channels * 4" (field_expression "image->number_channels" identifier -> field_identifier) * number_literal))) ;) (if_statement "if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = bVar5 | (byte)(((int)fVar28 & 1U) << 2);\n              }" if (parenthesized_expression "(image->channel_map[5].traits != UndefinedPixelTrait)" ( (binary_expression "image->channel_map[5].traits != UndefinedPixelTrait" (field_expression "image->channel_map[5].traits" (subscript_expression "image->channel_map[5]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) != identifier) )) (compound_statement "{\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = bVar5 | (byte)(((int)fVar28 & 1U) << 2);\n              }" { (expression_statement "fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);" (assignment_expression "fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4)" identifier = (pointer_expression "*(float *)(iVar23 + image->channel_map[5].offset * 4)" * (cast_expression "(float *)(iVar23 + image->channel_map[5].offset * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + image->channel_map[5].offset * 4)" ( (binary_expression "iVar23 + image->channel_map[5].offset * 4" identifier + (binary_expression "image->channel_map[5].offset * 4" (field_expression "image->channel_map[5].offset" (subscript_expression "image->channel_map[5]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) * number_literal)) ))))) ;) (if_statement "if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }" if (parenthesized_expression "(fVar30 <= fVar28)" ( (binary_expression "fVar30 <= fVar28" identifier <= identifier) )) (compound_statement "{\n                  fVar28 = fVar28 - fVar30;\n                }" { (expression_statement "fVar28 = fVar28 - fVar30;" (assignment_expression "fVar28 = fVar28 - fVar30" identifier = (binary_expression "fVar28 - fVar30" identifier - identifier)) ;) })) (expression_statement "bVar5 = bVar5 | (byte)(((int)fVar28 & 1U) << 2);" (assignment_expression "bVar5 = bVar5 | (byte)(((int)fVar28 & 1U) << 2)" identifier = (binary_expression "bVar5 | (byte)(((int)fVar28 & 1U) << 2)" identifier | (call_expression "(byte)(((int)fVar28 & 1U) << 2)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((int)fVar28 & 1U) << 2)" ( (binary_expression "((int)fVar28 & 1U) << 2" (parenthesized_expression "((int)fVar28 & 1U)" ( (binary_expression "(int)fVar28 & 1U" (cast_expression "(int)fVar28" ( (type_descriptor "int" primitive_type) ) identifier) & number_literal) )) << number_literal) ))))) ;) })) (expression_statement "*pbVar21 = bVar5;" (assignment_expression "*pbVar21 = bVar5" (pointer_expression "*pbVar21" * identifier) = identifier) ;) (expression_statement "iVar23 = iVar23 + image->number_channels * 4;" (assignment_expression "iVar23 = iVar23 + image->number_channels * 4" identifier = (binary_expression "iVar23 + image->number_channels * 4" identifier + (binary_expression "image->number_channels * 4" (field_expression "image->number_channels" identifier -> field_identifier) * number_literal))) ;) (expression_statement "bVar8 = bVar5;" (assignment_expression "bVar8 = bVar5" identifier = identifier) ;) (if_statement "if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 1);\n                bVar8 = bVar5 | bVar1;\n                *pbVar21 = bVar5 | bVar1;\n              }" if (parenthesized_expression "(image->channel_map[5].traits != UndefinedPixelTrait)" ( (binary_expression "image->channel_map[5].traits != UndefinedPixelTrait" (field_expression "image->channel_map[5].traits" (subscript_expression "image->channel_map[5]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) != identifier) )) (compound_statement "{\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar1 = (byte)(((int)fVar28 & 1U) << 1);\n                bVar8 = bVar5 | bVar1;\n                *pbVar21 = bVar5 | bVar1;\n              }" { (expression_statement "fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);" (assignment_expression "fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4)" identifier = (pointer_expression "*(float *)(iVar23 + image->channel_map[5].offset * 4)" * (cast_expression "(float *)(iVar23 + image->channel_map[5].offset * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + image->channel_map[5].offset * 4)" ( (binary_expression "iVar23 + image->channel_map[5].offset * 4" identifier + (binary_expression "image->channel_map[5].offset * 4" (field_expression "image->channel_map[5].offset" (subscript_expression "image->channel_map[5]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) * number_literal)) ))))) ;) (if_statement "if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }" if (parenthesized_expression "(fVar30 <= fVar28)" ( (binary_expression "fVar30 <= fVar28" identifier <= identifier) )) (compound_statement "{\n                  fVar28 = fVar28 - fVar30;\n                }" { (expression_statement "fVar28 = fVar28 - fVar30;" (assignment_expression "fVar28 = fVar28 - fVar30" identifier = (binary_expression "fVar28 - fVar30" identifier - identifier)) ;) })) (expression_statement "bVar1 = (byte)(((int)fVar28 & 1U) << 1);" (assignment_expression "bVar1 = (byte)(((int)fVar28 & 1U) << 1)" identifier = (call_expression "(byte)(((int)fVar28 & 1U) << 1)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((int)fVar28 & 1U) << 1)" ( (binary_expression "((int)fVar28 & 1U) << 1" (parenthesized_expression "((int)fVar28 & 1U)" ( (binary_expression "(int)fVar28 & 1U" (cast_expression "(int)fVar28" ( (type_descriptor "int" primitive_type) ) identifier) & number_literal) )) << number_literal) )))) ;) (expression_statement "bVar8 = bVar5 | bVar1;" (assignment_expression "bVar8 = bVar5 | bVar1" identifier = (binary_expression "bVar5 | bVar1" identifier | identifier)) ;) (expression_statement "*pbVar21 = bVar5 | bVar1;" (assignment_expression "*pbVar21 = bVar5 | bVar1" (pointer_expression "*pbVar21" * identifier) = (binary_expression "bVar5 | bVar1" identifier | identifier)) ;) })) (expression_statement "iVar23 = iVar23 + image->number_channels * 4;" (assignment_expression "iVar23 = iVar23 + image->number_channels * 4" identifier = (binary_expression "iVar23 + image->number_channels * 4" identifier + (binary_expression "image->number_channels * 4" (field_expression "image->number_channels" identifier -> field_identifier) * number_literal))) ;) (if_statement "if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar28 < fVar30) {\n                  bVar5 = (byte)(int)fVar28;\n                }\n                else {\n                  bVar5 = (byte)(int)(fVar28 - fVar30);\n                }\n                bVar8 = bVar8 | bVar5 & 1;\n              }" if (parenthesized_expression "(image->channel_map[5].traits != UndefinedPixelTrait)" ( (binary_expression "image->channel_map[5].traits != UndefinedPixelTrait" (field_expression "image->channel_map[5].traits" (subscript_expression "image->channel_map[5]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) != identifier) )) (compound_statement "{\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar28 < fVar30) {\n                  bVar5 = (byte)(int)fVar28;\n                }\n                else {\n                  bVar5 = (byte)(int)(fVar28 - fVar30);\n                }\n                bVar8 = bVar8 | bVar5 & 1;\n              }" { (expression_statement "fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);" (assignment_expression "fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4)" identifier = (pointer_expression "*(float *)(iVar23 + image->channel_map[5].offset * 4)" * (cast_expression "(float *)(iVar23 + image->channel_map[5].offset * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + image->channel_map[5].offset * 4)" ( (binary_expression "iVar23 + image->channel_map[5].offset * 4" identifier + (binary_expression "image->channel_map[5].offset * 4" (field_expression "image->channel_map[5].offset" (subscript_expression "image->channel_map[5]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) * number_literal)) ))))) ;) (if_statement "if (fVar28 < fVar30) {\n                  bVar5 = (byte)(int)fVar28;\n                }\n                else {\n                  bVar5 = (byte)(int)(fVar28 - fVar30);\n                }" if (parenthesized_expression "(fVar28 < fVar30)" ( (binary_expression "fVar28 < fVar30" identifier < identifier) )) (compound_statement "{\n                  bVar5 = (byte)(int)fVar28;\n                }" { (expression_statement "bVar5 = (byte)(int)fVar28;" (assignment_expression "bVar5 = (byte)(int)fVar28" identifier = (cast_expression "(byte)(int)fVar28" ( (type_descriptor "byte" type_identifier) ) (cast_expression "(int)fVar28" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }) (else_clause "else {\n                  bVar5 = (byte)(int)(fVar28 - fVar30);\n                }" else (compound_statement "{\n                  bVar5 = (byte)(int)(fVar28 - fVar30);\n                }" { (expression_statement "bVar5 = (byte)(int)(fVar28 - fVar30);" (assignment_expression "bVar5 = (byte)(int)(fVar28 - fVar30)" identifier = (call_expression "(byte)(int)(fVar28 - fVar30)" (call_expression "(byte)(int)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(int)" ( identifier ))) (argument_list "(fVar28 - fVar30)" ( (binary_expression "fVar28 - fVar30" identifier - identifier) )))) ;) }))) (expression_statement "bVar8 = bVar8 | bVar5 & 1;" (assignment_expression "bVar8 = bVar8 | bVar5 & 1" identifier = (binary_expression "bVar8 | bVar5 & 1" identifier | (binary_expression "bVar5 & 1" identifier & number_literal))) ;) })) (expression_statement "*pbVar21 = bVar8;" (assignment_expression "*pbVar21 = bVar8" (pointer_expression "*pbVar21" * identifier) = identifier) ;) (expression_statement "number_pixels = CONCAT44(iVar23 + image->number_channels * 4,pbVar21 + 1);" (assignment_expression "number_pixels = CONCAT44(iVar23 + image->number_channels * 4,pbVar21 + 1)" identifier = (call_expression "CONCAT44(iVar23 + image->number_channels * 4,pbVar21 + 1)" identifier (argument_list "(iVar23 + image->number_channels * 4,pbVar21 + 1)" ( (binary_expression "iVar23 + image->number_channels * 4" identifier + (binary_expression "image->number_channels * 4" (field_expression "image->number_channels" identifier -> field_identifier) * number_literal)) , (binary_expression "pbVar21 + 1" identifier + number_literal) )))) ;) }) while (parenthesized_expression "(pbVar21 + 1 != pbVar20)" ( (binary_expression "pbVar21 + 1 != pbVar20" (binary_expression "pbVar21 + 1" identifier + number_literal) != identifier) )) ;) })) (expression_statement "iVar23 = (int)(number_pixels >> 0x20);" (assignment_expression "iVar23 = (int)(number_pixels >> 0x20)" identifier = (cast_expression "(int)(number_pixels >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(number_pixels >> 0x20)" ( (binary_expression "number_pixels >> 0x20" identifier >> number_literal) )))) ;) (if_statement "if (((uint)q & 7) == 0) {\n            return;\n          }" if (parenthesized_expression "(((uint)q & 7) == 0)" ( (binary_expression "((uint)q & 7) == 0" (parenthesized_expression "((uint)q & 7)" ( (binary_expression "(uint)q & 7" (cast_expression "(uint)q" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) (expression_statement "*(undefined1 *)number_pixels = 0;" (assignment_expression "*(undefined1 *)number_pixels = 0" (pointer_expression "*(undefined1 *)number_pixels" * (cast_expression "(undefined1 *)number_pixels" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (if_statement "if (((uint)q & 7) == 0) {\n            return;\n          }" if (parenthesized_expression "(((uint)q & 7) == 0)" ( (binary_expression "((uint)q & 7) == 0" (parenthesized_expression "((uint)q & 7)" ( (binary_expression "(uint)q & 7" (cast_expression "(uint)q" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (expression_statement "uVar25 = 7;" (assignment_expression "uVar25 = 7" identifier = number_literal) ;) (expression_statement "fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);" (assignment_expression "fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" identifier = (pointer_expression "*(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" * (cast_expression "(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (binary_expression "PTR_s_t_to_left_003a88e4 + -0x51e0" identifier + number_literal) ))))) ;) (do_statement "do {\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar30 <= fVar28) {\n                fVar28 = fVar28 - fVar30;\n              }\n              uVar10 = ((int)fVar28 & 1U) << (uVar25 & 0x1f) & 0xff | uVar10;\n            }\n            *(undefined1 *)number_pixels = (char)uVar10;\n            uVar25 = uVar25 - 1;\n            iVar23 = iVar23 + image->number_channels * 4;\n          } while (uVar25 != (~(uint)q & 7));" do (compound_statement "{\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar30 <= fVar28) {\n                fVar28 = fVar28 - fVar30;\n              }\n              uVar10 = ((int)fVar28 & 1U) << (uVar25 & 0x1f) & 0xff | uVar10;\n            }\n            *(undefined1 *)number_pixels = (char)uVar10;\n            uVar25 = uVar25 - 1;\n            iVar23 = iVar23 + image->number_channels * 4;\n          }" { (if_statement "if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar30 <= fVar28) {\n                fVar28 = fVar28 - fVar30;\n              }\n              uVar10 = ((int)fVar28 & 1U) << (uVar25 & 0x1f) & 0xff | uVar10;\n            }" if (parenthesized_expression "(image->channel_map[5].traits != UndefinedPixelTrait)" ( (binary_expression "image->channel_map[5].traits != UndefinedPixelTrait" (field_expression "image->channel_map[5].traits" (subscript_expression "image->channel_map[5]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) != identifier) )) (compound_statement "{\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar30 <= fVar28) {\n                fVar28 = fVar28 - fVar30;\n              }\n              uVar10 = ((int)fVar28 & 1U) << (uVar25 & 0x1f) & 0xff | uVar10;\n            }" { (expression_statement "fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);" (assignment_expression "fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4)" identifier = (pointer_expression "*(float *)(iVar23 + image->channel_map[5].offset * 4)" * (cast_expression "(float *)(iVar23 + image->channel_map[5].offset * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + image->channel_map[5].offset * 4)" ( (binary_expression "iVar23 + image->channel_map[5].offset * 4" identifier + (binary_expression "image->channel_map[5].offset * 4" (field_expression "image->channel_map[5].offset" (subscript_expression "image->channel_map[5]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) * number_literal)) ))))) ;) (if_statement "if (fVar30 <= fVar28) {\n                fVar28 = fVar28 - fVar30;\n              }" if (parenthesized_expression "(fVar30 <= fVar28)" ( (binary_expression "fVar30 <= fVar28" identifier <= identifier) )) (compound_statement "{\n                fVar28 = fVar28 - fVar30;\n              }" { (expression_statement "fVar28 = fVar28 - fVar30;" (assignment_expression "fVar28 = fVar28 - fVar30" identifier = (binary_expression "fVar28 - fVar30" identifier - identifier)) ;) })) (expression_statement "uVar10 = ((int)fVar28 & 1U) << (uVar25 & 0x1f) & 0xff | uVar10;" (assignment_expression "uVar10 = ((int)fVar28 & 1U) << (uVar25 & 0x1f) & 0xff | uVar10" identifier = (binary_expression "((int)fVar28 & 1U) << (uVar25 & 0x1f) & 0xff | uVar10" (binary_expression "((int)fVar28 & 1U) << (uVar25 & 0x1f) & 0xff" (binary_expression "((int)fVar28 & 1U) << (uVar25 & 0x1f)" (parenthesized_expression "((int)fVar28 & 1U)" ( (binary_expression "(int)fVar28 & 1U" (cast_expression "(int)fVar28" ( (type_descriptor "int" primitive_type) ) identifier) & number_literal) )) << (parenthesized_expression "(uVar25 & 0x1f)" ( (binary_expression "uVar25 & 0x1f" identifier & number_literal) ))) & number_literal) | identifier)) ;) })) (expression_statement "*(undefined1 *)number_pixels = (char)uVar10;" (assignment_expression "*(undefined1 *)number_pixels = (char)uVar10" (pointer_expression "*(undefined1 *)number_pixels" * (cast_expression "(undefined1 *)number_pixels" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (cast_expression "(char)uVar10" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar25 = uVar25 - 1;" (assignment_expression "uVar25 = uVar25 - 1" identifier = (binary_expression "uVar25 - 1" identifier - number_literal)) ;) (expression_statement "iVar23 = iVar23 + image->number_channels * 4;" (assignment_expression "iVar23 = iVar23 + image->number_channels * 4" identifier = (binary_expression "iVar23 + image->number_channels * 4" identifier + (binary_expression "image->number_channels * 4" (field_expression "image->number_channels" identifier -> field_identifier) * number_literal))) ;) }) while (parenthesized_expression "(uVar25 != (~(uint)q & 7))" ( (binary_expression "uVar25 != (~(uint)q & 7)" identifier != (parenthesized_expression "(~(uint)q & 7)" ( (binary_expression "~(uint)q & 7" (unary_expression "~(uint)q" ~ (cast_expression "(uint)q" ( (type_descriptor "uint" type_identifier) ) identifier)) & number_literal) ))) )) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar25 == 4) {\n          if (0 < (int)(q + -1)) {\n            fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar20 = (byte *)(number_pixels._4_4_ + ((uint)(q + -2) >> 1) + 1);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              pbVar21 = (byte *)number_pixels;\n              if (image->channel_map[5].traits == UndefinedPixelTrait) {\n                bVar5 = 0;\n              }\n              else {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = (byte)(((int)fVar28 & 0xffU) << 4);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar28 < fVar30) {\n                  bVar8 = (byte)(int)fVar28;\n                }\n                else {\n                  bVar8 = (byte)(int)(fVar28 - fVar30);\n                }\n                bVar5 = bVar5 | bVar8 & 0xf;\n              }\n              *pbVar21 = bVar5;\n              number_pixels = CONCAT44(iVar23 + image->number_channels * 4,pbVar21 + 1);\n            } while (pbVar21 + 1 != pbVar20);\n          }\n          if (((uint)q & 1) == 0) {\n            return;\n          }\n          if (image->channel_map[5].traits != UndefinedPixelTrait) {\n            fVar30 = *(float *)((int)(number_pixels >> 0x20) + image->channel_map[5].offset * 4);\n            if (fVar30 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              uVar4 = (undefined1)(((int)fVar30 & 0xfU) << 4);\n            }\n            else {\n              uVar4 = (undefined1)\n                      (((int)(fVar30 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU) << 4)\n              ;\n            }\n            *(undefined1 *)number_pixels = uVar4;\n            return;\n          }\n          *(undefined1 *)number_pixels = 0;\n          return;\n        }" if (parenthesized_expression "(uVar25 == 4)" ( (binary_expression "uVar25 == 4" identifier == number_literal) )) (compound_statement "{\n          if (0 < (int)(q + -1)) {\n            fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar20 = (byte *)(number_pixels._4_4_ + ((uint)(q + -2) >> 1) + 1);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              pbVar21 = (byte *)number_pixels;\n              if (image->channel_map[5].traits == UndefinedPixelTrait) {\n                bVar5 = 0;\n              }\n              else {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = (byte)(((int)fVar28 & 0xffU) << 4);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar28 < fVar30) {\n                  bVar8 = (byte)(int)fVar28;\n                }\n                else {\n                  bVar8 = (byte)(int)(fVar28 - fVar30);\n                }\n                bVar5 = bVar5 | bVar8 & 0xf;\n              }\n              *pbVar21 = bVar5;\n              number_pixels = CONCAT44(iVar23 + image->number_channels * 4,pbVar21 + 1);\n            } while (pbVar21 + 1 != pbVar20);\n          }\n          if (((uint)q & 1) == 0) {\n            return;\n          }\n          if (image->channel_map[5].traits != UndefinedPixelTrait) {\n            fVar30 = *(float *)((int)(number_pixels >> 0x20) + image->channel_map[5].offset * 4);\n            if (fVar30 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              uVar4 = (undefined1)(((int)fVar30 & 0xfU) << 4);\n            }\n            else {\n              uVar4 = (undefined1)\n                      (((int)(fVar30 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU) << 4)\n              ;\n            }\n            *(undefined1 *)number_pixels = uVar4;\n            return;\n          }\n          *(undefined1 *)number_pixels = 0;\n          return;\n        }" { (if_statement "if (0 < (int)(q + -1)) {\n            fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar20 = (byte *)(number_pixels._4_4_ + ((uint)(q + -2) >> 1) + 1);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              pbVar21 = (byte *)number_pixels;\n              if (image->channel_map[5].traits == UndefinedPixelTrait) {\n                bVar5 = 0;\n              }\n              else {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = (byte)(((int)fVar28 & 0xffU) << 4);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar28 < fVar30) {\n                  bVar8 = (byte)(int)fVar28;\n                }\n                else {\n                  bVar8 = (byte)(int)(fVar28 - fVar30);\n                }\n                bVar5 = bVar5 | bVar8 & 0xf;\n              }\n              *pbVar21 = bVar5;\n              number_pixels = CONCAT44(iVar23 + image->number_channels * 4,pbVar21 + 1);\n            } while (pbVar21 + 1 != pbVar20);\n          }" if (parenthesized_expression "(0 < (int)(q + -1))" ( (binary_expression "0 < (int)(q + -1)" number_literal < (cast_expression "(int)(q + -1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(q + -1)" ( (binary_expression "q + -1" identifier + number_literal) )))) )) (compound_statement "{\n            fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar20 = (byte *)(number_pixels._4_4_ + ((uint)(q + -2) >> 1) + 1);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              pbVar21 = (byte *)number_pixels;\n              if (image->channel_map[5].traits == UndefinedPixelTrait) {\n                bVar5 = 0;\n              }\n              else {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = (byte)(((int)fVar28 & 0xffU) << 4);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar28 < fVar30) {\n                  bVar8 = (byte)(int)fVar28;\n                }\n                else {\n                  bVar8 = (byte)(int)(fVar28 - fVar30);\n                }\n                bVar5 = bVar5 | bVar8 & 0xf;\n              }\n              *pbVar21 = bVar5;\n              number_pixels = CONCAT44(iVar23 + image->number_channels * 4,pbVar21 + 1);\n            } while (pbVar21 + 1 != pbVar20);\n          }" { (expression_statement "fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);" (assignment_expression "fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" identifier = (pointer_expression "*(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" * (cast_expression "(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (binary_expression "PTR_s_t_to_left_003a88e4 + -0x51e0" identifier + number_literal) ))))) ;) (expression_statement "pbVar20 = (byte *)(number_pixels._4_4_ + ((uint)(q + -2) >> 1) + 1);" (assignment_expression "pbVar20 = (byte *)(number_pixels._4_4_ + ((uint)(q + -2) >> 1) + 1)" identifier = (cast_expression "(byte *)(number_pixels._4_4_ + ((uint)(q + -2) >> 1) + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(number_pixels._4_4_ + ((uint)(q + -2) >> 1) + 1)" ( (binary_expression "number_pixels._4_4_ + ((uint)(q + -2) >> 1) + 1" (binary_expression "number_pixels._4_4_ + ((uint)(q + -2) >> 1)" (field_expression "number_pixels._4_4_" identifier . field_identifier) + (parenthesized_expression "((uint)(q + -2) >> 1)" ( (binary_expression "(uint)(q + -2) >> 1" (call_expression "(uint)(q + -2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(q + -2)" ( (binary_expression "q + -2" identifier + number_literal) ))) >> number_literal) ))) + number_literal) )))) ;) (do_statement "do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              pbVar21 = (byte *)number_pixels;\n              if (image->channel_map[5].traits == UndefinedPixelTrait) {\n                bVar5 = 0;\n              }\n              else {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = (byte)(((int)fVar28 & 0xffU) << 4);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar28 < fVar30) {\n                  bVar8 = (byte)(int)fVar28;\n                }\n                else {\n                  bVar8 = (byte)(int)(fVar28 - fVar30);\n                }\n                bVar5 = bVar5 | bVar8 & 0xf;\n              }\n              *pbVar21 = bVar5;\n              number_pixels = CONCAT44(iVar23 + image->number_channels * 4,pbVar21 + 1);\n            } while (pbVar21 + 1 != pbVar20);" do (compound_statement "{\n              iVar23 = (int)(number_pixels >> 0x20);\n              pbVar21 = (byte *)number_pixels;\n              if (image->channel_map[5].traits == UndefinedPixelTrait) {\n                bVar5 = 0;\n              }\n              else {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = (byte)(((int)fVar28 & 0xffU) << 4);\n              }\n              *pbVar21 = bVar5;\n              iVar23 = iVar23 + image->number_channels * 4;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar28 < fVar30) {\n                  bVar8 = (byte)(int)fVar28;\n                }\n                else {\n                  bVar8 = (byte)(int)(fVar28 - fVar30);\n                }\n                bVar5 = bVar5 | bVar8 & 0xf;\n              }\n              *pbVar21 = bVar5;\n              number_pixels = CONCAT44(iVar23 + image->number_channels * 4,pbVar21 + 1);\n            }" { (expression_statement "iVar23 = (int)(number_pixels >> 0x20);" (assignment_expression "iVar23 = (int)(number_pixels >> 0x20)" identifier = (cast_expression "(int)(number_pixels >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(number_pixels >> 0x20)" ( (binary_expression "number_pixels >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "pbVar21 = (byte *)number_pixels;" (assignment_expression "pbVar21 = (byte *)number_pixels" identifier = (cast_expression "(byte *)number_pixels" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (image->channel_map[5].traits == UndefinedPixelTrait) {\n                bVar5 = 0;\n              }\n              else {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = (byte)(((int)fVar28 & 0xffU) << 4);\n              }" if (parenthesized_expression "(image->channel_map[5].traits == UndefinedPixelTrait)" ( (binary_expression "image->channel_map[5].traits == UndefinedPixelTrait" (field_expression "image->channel_map[5].traits" (subscript_expression "image->channel_map[5]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) == identifier) )) (compound_statement "{\n                bVar5 = 0;\n              }" { (expression_statement "bVar5 = 0;" (assignment_expression "bVar5 = 0" identifier = number_literal) ;) }) (else_clause "else {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = (byte)(((int)fVar28 & 0xffU) << 4);\n              }" else (compound_statement "{\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }\n                bVar5 = (byte)(((int)fVar28 & 0xffU) << 4);\n              }" { (expression_statement "fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);" (assignment_expression "fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4)" identifier = (pointer_expression "*(float *)(iVar23 + image->channel_map[5].offset * 4)" * (cast_expression "(float *)(iVar23 + image->channel_map[5].offset * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + image->channel_map[5].offset * 4)" ( (binary_expression "iVar23 + image->channel_map[5].offset * 4" identifier + (binary_expression "image->channel_map[5].offset * 4" (field_expression "image->channel_map[5].offset" (subscript_expression "image->channel_map[5]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) * number_literal)) ))))) ;) (if_statement "if (fVar30 <= fVar28) {\n                  fVar28 = fVar28 - fVar30;\n                }" if (parenthesized_expression "(fVar30 <= fVar28)" ( (binary_expression "fVar30 <= fVar28" identifier <= identifier) )) (compound_statement "{\n                  fVar28 = fVar28 - fVar30;\n                }" { (expression_statement "fVar28 = fVar28 - fVar30;" (assignment_expression "fVar28 = fVar28 - fVar30" identifier = (binary_expression "fVar28 - fVar30" identifier - identifier)) ;) })) (expression_statement "bVar5 = (byte)(((int)fVar28 & 0xffU) << 4);" (assignment_expression "bVar5 = (byte)(((int)fVar28 & 0xffU) << 4)" identifier = (call_expression "(byte)(((int)fVar28 & 0xffU) << 4)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((int)fVar28 & 0xffU) << 4)" ( (binary_expression "((int)fVar28 & 0xffU) << 4" (parenthesized_expression "((int)fVar28 & 0xffU)" ( (binary_expression "(int)fVar28 & 0xffU" (cast_expression "(int)fVar28" ( (type_descriptor "int" primitive_type) ) identifier) & number_literal) )) << number_literal) )))) ;) }))) (expression_statement "*pbVar21 = bVar5;" (assignment_expression "*pbVar21 = bVar5" (pointer_expression "*pbVar21" * identifier) = identifier) ;) (expression_statement "iVar23 = iVar23 + image->number_channels * 4;" (assignment_expression "iVar23 = iVar23 + image->number_channels * 4" identifier = (binary_expression "iVar23 + image->number_channels * 4" identifier + (binary_expression "image->number_channels * 4" (field_expression "image->number_channels" identifier -> field_identifier) * number_literal))) ;) (if_statement "if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar28 < fVar30) {\n                  bVar8 = (byte)(int)fVar28;\n                }\n                else {\n                  bVar8 = (byte)(int)(fVar28 - fVar30);\n                }\n                bVar5 = bVar5 | bVar8 & 0xf;\n              }" if (parenthesized_expression "(image->channel_map[5].traits != UndefinedPixelTrait)" ( (binary_expression "image->channel_map[5].traits != UndefinedPixelTrait" (field_expression "image->channel_map[5].traits" (subscript_expression "image->channel_map[5]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) != identifier) )) (compound_statement "{\n                fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n                if (fVar28 < fVar30) {\n                  bVar8 = (byte)(int)fVar28;\n                }\n                else {\n                  bVar8 = (byte)(int)(fVar28 - fVar30);\n                }\n                bVar5 = bVar5 | bVar8 & 0xf;\n              }" { (expression_statement "fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);" (assignment_expression "fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4)" identifier = (pointer_expression "*(float *)(iVar23 + image->channel_map[5].offset * 4)" * (cast_expression "(float *)(iVar23 + image->channel_map[5].offset * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + image->channel_map[5].offset * 4)" ( (binary_expression "iVar23 + image->channel_map[5].offset * 4" identifier + (binary_expression "image->channel_map[5].offset * 4" (field_expression "image->channel_map[5].offset" (subscript_expression "image->channel_map[5]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) * number_literal)) ))))) ;) (if_statement "if (fVar28 < fVar30) {\n                  bVar8 = (byte)(int)fVar28;\n                }\n                else {\n                  bVar8 = (byte)(int)(fVar28 - fVar30);\n                }" if (parenthesized_expression "(fVar28 < fVar30)" ( (binary_expression "fVar28 < fVar30" identifier < identifier) )) (compound_statement "{\n                  bVar8 = (byte)(int)fVar28;\n                }" { (expression_statement "bVar8 = (byte)(int)fVar28;" (assignment_expression "bVar8 = (byte)(int)fVar28" identifier = (cast_expression "(byte)(int)fVar28" ( (type_descriptor "byte" type_identifier) ) (cast_expression "(int)fVar28" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }) (else_clause "else {\n                  bVar8 = (byte)(int)(fVar28 - fVar30);\n                }" else (compound_statement "{\n                  bVar8 = (byte)(int)(fVar28 - fVar30);\n                }" { (expression_statement "bVar8 = (byte)(int)(fVar28 - fVar30);" (assignment_expression "bVar8 = (byte)(int)(fVar28 - fVar30)" identifier = (call_expression "(byte)(int)(fVar28 - fVar30)" (call_expression "(byte)(int)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(int)" ( identifier ))) (argument_list "(fVar28 - fVar30)" ( (binary_expression "fVar28 - fVar30" identifier - identifier) )))) ;) }))) (expression_statement "bVar5 = bVar5 | bVar8 & 0xf;" (assignment_expression "bVar5 = bVar5 | bVar8 & 0xf" identifier = (binary_expression "bVar5 | bVar8 & 0xf" identifier | (binary_expression "bVar8 & 0xf" identifier & number_literal))) ;) })) (expression_statement "*pbVar21 = bVar5;" (assignment_expression "*pbVar21 = bVar5" (pointer_expression "*pbVar21" * identifier) = identifier) ;) (expression_statement "number_pixels = CONCAT44(iVar23 + image->number_channels * 4,pbVar21 + 1);" (assignment_expression "number_pixels = CONCAT44(iVar23 + image->number_channels * 4,pbVar21 + 1)" identifier = (call_expression "CONCAT44(iVar23 + image->number_channels * 4,pbVar21 + 1)" identifier (argument_list "(iVar23 + image->number_channels * 4,pbVar21 + 1)" ( (binary_expression "iVar23 + image->number_channels * 4" identifier + (binary_expression "image->number_channels * 4" (field_expression "image->number_channels" identifier -> field_identifier) * number_literal)) , (binary_expression "pbVar21 + 1" identifier + number_literal) )))) ;) }) while (parenthesized_expression "(pbVar21 + 1 != pbVar20)" ( (binary_expression "pbVar21 + 1 != pbVar20" (binary_expression "pbVar21 + 1" identifier + number_literal) != identifier) )) ;) })) (if_statement "if (((uint)q & 1) == 0) {\n            return;\n          }" if (parenthesized_expression "(((uint)q & 1) == 0)" ( (binary_expression "((uint)q & 1) == 0" (parenthesized_expression "((uint)q & 1)" ( (binary_expression "(uint)q & 1" (cast_expression "(uint)q" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) (if_statement "if (image->channel_map[5].traits != UndefinedPixelTrait) {\n            fVar30 = *(float *)((int)(number_pixels >> 0x20) + image->channel_map[5].offset * 4);\n            if (fVar30 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              uVar4 = (undefined1)(((int)fVar30 & 0xfU) << 4);\n            }\n            else {\n              uVar4 = (undefined1)\n                      (((int)(fVar30 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU) << 4)\n              ;\n            }\n            *(undefined1 *)number_pixels = uVar4;\n            return;\n          }" if (parenthesized_expression "(image->channel_map[5].traits != UndefinedPixelTrait)" ( (binary_expression "image->channel_map[5].traits != UndefinedPixelTrait" (field_expression "image->channel_map[5].traits" (subscript_expression "image->channel_map[5]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) != identifier) )) (compound_statement "{\n            fVar30 = *(float *)((int)(number_pixels >> 0x20) + image->channel_map[5].offset * 4);\n            if (fVar30 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              uVar4 = (undefined1)(((int)fVar30 & 0xfU) << 4);\n            }\n            else {\n              uVar4 = (undefined1)\n                      (((int)(fVar30 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU) << 4)\n              ;\n            }\n            *(undefined1 *)number_pixels = uVar4;\n            return;\n          }" { (expression_statement "fVar30 = *(float *)((int)(number_pixels >> 0x20) + image->channel_map[5].offset * 4);" (assignment_expression "fVar30 = *(float *)((int)(number_pixels >> 0x20) + image->channel_map[5].offset * 4)" identifier = (pointer_expression "*(float *)((int)(number_pixels >> 0x20) + image->channel_map[5].offset * 4)" * (cast_expression "(float *)((int)(number_pixels >> 0x20) + image->channel_map[5].offset * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)(number_pixels >> 0x20) + image->channel_map[5].offset * 4)" ( (binary_expression "(int)(number_pixels >> 0x20) + image->channel_map[5].offset * 4" (cast_expression "(int)(number_pixels >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(number_pixels >> 0x20)" ( (binary_expression "number_pixels >> 0x20" identifier >> number_literal) ))) + (binary_expression "image->channel_map[5].offset * 4" (field_expression "image->channel_map[5].offset" (subscript_expression "image->channel_map[5]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) * number_literal)) ))))) ;) (if_statement "if (fVar30 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              uVar4 = (undefined1)(((int)fVar30 & 0xfU) << 4);\n            }\n            else {\n              uVar4 = (undefined1)\n                      (((int)(fVar30 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU) << 4)\n              ;\n            }" if (parenthesized_expression "(fVar30 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0))" ( (binary_expression "fVar30 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" identifier < (pointer_expression "*(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" * (cast_expression "(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (binary_expression "PTR_s_t_to_left_003a88e4 + -0x51e0" identifier + number_literal) ))))) )) (compound_statement "{\n              uVar4 = (undefined1)(((int)fVar30 & 0xfU) << 4);\n            }" { (expression_statement "uVar4 = (undefined1)(((int)fVar30 & 0xfU) << 4);" (assignment_expression "uVar4 = (undefined1)(((int)fVar30 & 0xfU) << 4)" identifier = (call_expression "(undefined1)(((int)fVar30 & 0xfU) << 4)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "(((int)fVar30 & 0xfU) << 4)" ( (binary_expression "((int)fVar30 & 0xfU) << 4" (parenthesized_expression "((int)fVar30 & 0xfU)" ( (binary_expression "(int)fVar30 & 0xfU" (cast_expression "(int)fVar30" ( (type_descriptor "int" primitive_type) ) identifier) & number_literal) )) << number_literal) )))) ;) }) (else_clause "else {\n              uVar4 = (undefined1)\n                      (((int)(fVar30 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU) << 4)\n              ;\n            }" else (compound_statement "{\n              uVar4 = (undefined1)\n                      (((int)(fVar30 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU) << 4)\n              ;\n            }" { (expression_statement "uVar4 = (undefined1)\n                      (((int)(fVar30 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU) << 4)\n              ;" (assignment_expression "uVar4 = (undefined1)\n                      (((int)(fVar30 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU) << 4)" identifier = (call_expression "(undefined1)\n                      (((int)(fVar30 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU) << 4)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "(((int)(fVar30 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU) << 4)" ( (binary_expression "((int)(fVar30 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU) << 4" (parenthesized_expression "((int)(fVar30 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)" ( (binary_expression "(int)(fVar30 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU" (cast_expression "(int)(fVar30 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(fVar30 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0))" ( (binary_expression "fVar30 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" identifier - (pointer_expression "*(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" * (cast_expression "(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (binary_expression "PTR_s_t_to_left_003a88e4 + -0x51e0" identifier + number_literal) ))))) ))) & number_literal) )) << number_literal) )))) ;) }))) (expression_statement "*(undefined1 *)number_pixels = uVar4;" (assignment_expression "*(undefined1 *)number_pixels = uVar4" (pointer_expression "*(undefined1 *)number_pixels" * (cast_expression "(undefined1 *)number_pixels" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (return_statement "return;" return ;) })) (expression_statement "*(undefined1 *)number_pixels = 0;" (assignment_expression "*(undefined1 *)number_pixels = 0" (pointer_expression "*(undefined1 *)number_pixels" * (cast_expression "(undefined1 *)number_pixels" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (return_statement "return;" return ;) })) }) (else_clause "else {\n        if (uVar25 == 0x20) {\n          if (quantum_info->format == FloatingPointQuantumFormat) {\n            puVar24 = (uchar *)0x0;\n            if ((int)q < 1) {\n              return;\n            }\n            dVar31 = (quantum_info->state).inverse_scale;\n            EVar13 = quantum_info->endian;\n            dVar27 = quantum_info->minimum;\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              dVar26 = 0.0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                dVar26 = (double)*(float *)(iVar23 + image->channel_map[5].offset * 4);\n              }\n              fVar30 = (float)(dVar31 * dVar26 + dVar27);\n              uVar7 = (undefined1)((uint)fVar30 >> 8);\n              uVar6 = (undefined1)((uint)fVar30 >> 0x10);\n              uVar4 = (undefined1)((uint)fVar30 >> 0x18);\n              if (EVar13 == LSBEndian) {\n                puVar22[1] = uVar6;\n                *puVar22 = uVar4;\n                puVar22[2] = uVar7;\n                puVar22[3] = SUB41(fVar30,0);\n              }\n              else {\n                *puVar22 = SUB41(fVar30,0);\n                puVar22[1] = uVar7;\n                puVar22[2] = uVar6;\n                puVar22[3] = uVar4;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 4);\n            } while (puVar24 != q);\n            return;\n          }\n          if ((int)q < 1) {\n            return;\n          }\n          puVar24 = (uchar *)0x0;\n          fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            iVar23 = (int)(number_pixels >> 0x20);\n            puVar22 = (undefined1 *)number_pixels;\n            uVar7 = 0;\n            uVar6 = 0;\n            uVar4 = 0;\n            uVar11 = 0;\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar30 <= fVar28) {\n                uVar25 = (int)(fVar28 - fVar30) | 0x80000000;\n              }\n              else {\n                uVar25 = (uint)fVar28;\n              }\n              uVar11 = (undefined1)(uVar25 >> 0x18);\n              uVar4 = (undefined1)(uVar25 >> 0x10);\n              uVar6 = (undefined1)(uVar25 >> 8);\n              uVar7 = (undefined1)uVar25;\n            }\n            if (quantum_info->endian == LSBEndian) {\n              *puVar22 = uVar7;\n              puVar22[1] = uVar6;\n              puVar22[2] = uVar4;\n              puVar22[3] = uVar11;\n            }\n            else {\n              *puVar22 = uVar11;\n              puVar22[1] = uVar4;\n              puVar22[2] = uVar6;\n              puVar22[3] = uVar7;\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 4);\n          } while (puVar24 != q);\n          return;\n        }\n        if (uVar25 == 0x40) {\n          if (quantum_info->format == FloatingPointQuantumFormat) {\n            puVar24 = (uchar *)0x0;\n            if ((int)q < 1) {\n              return;\n            }\n            dVar31 = (quantum_info->state).inverse_scale;\n            EVar13 = quantum_info->endian;\n            dVar27 = quantum_info->minimum;\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              dVar26 = 0.0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                dVar26 = (double)*(float *)(iVar23 + image->channel_map[5].offset * 4);\n              }\n              dVar26 = dVar31 * dVar26 + dVar27;\n              uVar4 = (undefined1)((ulonglong)dVar26 >> 0x20);\n              uVar19 = (undefined1)((ulonglong)dVar26 >> 8);\n              uVar17 = (undefined1)((ulonglong)dVar26 >> 0x10);\n              uVar7 = (undefined1)((ulonglong)dVar26 >> 0x18);\n              uVar14 = (undefined1)((ulonglong)dVar26 >> 0x28);\n              uVar11 = (undefined1)((ulonglong)dVar26 >> 0x30);\n              uVar6 = (undefined1)((ulonglong)dVar26 >> 0x38);\n              if (EVar13 == LSBEndian) {\n                puVar22[1] = uVar11;\n                *puVar22 = uVar6;\n                puVar22[2] = uVar14;\n                puVar22[3] = uVar4;\n                puVar22[4] = uVar7;\n                puVar22[5] = uVar17;\n                puVar22[6] = uVar19;\n                puVar22[7] = SUB81(dVar26,0);\n              }\n              else {\n                *puVar22 = SUB81(dVar26,0);\n                puVar22[1] = uVar19;\n                puVar22[2] = uVar17;\n                puVar22[3] = uVar7;\n                puVar22[4] = uVar4;\n                puVar22[5] = uVar14;\n                puVar22[6] = uVar11;\n                puVar22[7] = uVar6;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 8);\n            } while (puVar24 != q);\n            return;\n          }\n        }\n        else if (uVar25 == 0x10) {\n          if (quantum_info->format == FloatingPointQuantumFormat) {\n            if ((int)q < 1) {\n              return;\n            }\n            puVar24 = (uchar *)0x0;\n            EVar13 = LSBEndian;\n            dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              fVar30 = 0.0;\n              EVar16 = quantum_info->endian;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar30 = (float)((double)*(float *)(iVar23 + image->channel_map[5].offset * 4) *\n                                dVar27);\n              }\n              uVar3 = SinglePrecisionToHalf(fVar30);\n              uVar4 = (undefined1)(uVar3 >> 8);\n              if (EVar16 == EVar13) {\n                *puVar22 = (char)uVar3;\n                puVar22[1] = uVar4;\n              }\n              else {\n                *puVar22 = uVar4;\n                puVar22[1] = (char)uVar3;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2);\n            } while (puVar24 != q);\n            return;\n          }\n          if ((int)q < 1) {\n            return;\n          }\n          puVar24 = (uchar *)0x0;\n          fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            iVar23 = (int)(number_pixels >> 0x20);\n            puVar22 = (undefined1 *)number_pixels;\n            uVar6 = 0;\n            uVar4 = 0;\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar28 < fVar30) {\n                uVar29 = (undefined2)(int)fVar28;\n              }\n              else {\n                uVar29 = (undefined2)(int)(fVar28 - fVar30);\n              }\n              uVar4 = (undefined1)((ushort)uVar29 >> 8);\n              uVar6 = (undefined1)uVar29;\n            }\n            if (quantum_info->endian == LSBEndian) {\n              *puVar22 = uVar6;\n              puVar22[1] = uVar4;\n            }\n            else {\n              *puVar22 = uVar4;\n              puVar22[1] = uVar6;\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2);\n          } while (puVar24 != q);\n          return;\n        }\n      }" else (compound_statement "{\n        if (uVar25 == 0x20) {\n          if (quantum_info->format == FloatingPointQuantumFormat) {\n            puVar24 = (uchar *)0x0;\n            if ((int)q < 1) {\n              return;\n            }\n            dVar31 = (quantum_info->state).inverse_scale;\n            EVar13 = quantum_info->endian;\n            dVar27 = quantum_info->minimum;\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              dVar26 = 0.0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                dVar26 = (double)*(float *)(iVar23 + image->channel_map[5].offset * 4);\n              }\n              fVar30 = (float)(dVar31 * dVar26 + dVar27);\n              uVar7 = (undefined1)((uint)fVar30 >> 8);\n              uVar6 = (undefined1)((uint)fVar30 >> 0x10);\n              uVar4 = (undefined1)((uint)fVar30 >> 0x18);\n              if (EVar13 == LSBEndian) {\n                puVar22[1] = uVar6;\n                *puVar22 = uVar4;\n                puVar22[2] = uVar7;\n                puVar22[3] = SUB41(fVar30,0);\n              }\n              else {\n                *puVar22 = SUB41(fVar30,0);\n                puVar22[1] = uVar7;\n                puVar22[2] = uVar6;\n                puVar22[3] = uVar4;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 4);\n            } while (puVar24 != q);\n            return;\n          }\n          if ((int)q < 1) {\n            return;\n          }\n          puVar24 = (uchar *)0x0;\n          fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            iVar23 = (int)(number_pixels >> 0x20);\n            puVar22 = (undefined1 *)number_pixels;\n            uVar7 = 0;\n            uVar6 = 0;\n            uVar4 = 0;\n            uVar11 = 0;\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar30 <= fVar28) {\n                uVar25 = (int)(fVar28 - fVar30) | 0x80000000;\n              }\n              else {\n                uVar25 = (uint)fVar28;\n              }\n              uVar11 = (undefined1)(uVar25 >> 0x18);\n              uVar4 = (undefined1)(uVar25 >> 0x10);\n              uVar6 = (undefined1)(uVar25 >> 8);\n              uVar7 = (undefined1)uVar25;\n            }\n            if (quantum_info->endian == LSBEndian) {\n              *puVar22 = uVar7;\n              puVar22[1] = uVar6;\n              puVar22[2] = uVar4;\n              puVar22[3] = uVar11;\n            }\n            else {\n              *puVar22 = uVar11;\n              puVar22[1] = uVar4;\n              puVar22[2] = uVar6;\n              puVar22[3] = uVar7;\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 4);\n          } while (puVar24 != q);\n          return;\n        }\n        if (uVar25 == 0x40) {\n          if (quantum_info->format == FloatingPointQuantumFormat) {\n            puVar24 = (uchar *)0x0;\n            if ((int)q < 1) {\n              return;\n            }\n            dVar31 = (quantum_info->state).inverse_scale;\n            EVar13 = quantum_info->endian;\n            dVar27 = quantum_info->minimum;\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              dVar26 = 0.0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                dVar26 = (double)*(float *)(iVar23 + image->channel_map[5].offset * 4);\n              }\n              dVar26 = dVar31 * dVar26 + dVar27;\n              uVar4 = (undefined1)((ulonglong)dVar26 >> 0x20);\n              uVar19 = (undefined1)((ulonglong)dVar26 >> 8);\n              uVar17 = (undefined1)((ulonglong)dVar26 >> 0x10);\n              uVar7 = (undefined1)((ulonglong)dVar26 >> 0x18);\n              uVar14 = (undefined1)((ulonglong)dVar26 >> 0x28);\n              uVar11 = (undefined1)((ulonglong)dVar26 >> 0x30);\n              uVar6 = (undefined1)((ulonglong)dVar26 >> 0x38);\n              if (EVar13 == LSBEndian) {\n                puVar22[1] = uVar11;\n                *puVar22 = uVar6;\n                puVar22[2] = uVar14;\n                puVar22[3] = uVar4;\n                puVar22[4] = uVar7;\n                puVar22[5] = uVar17;\n                puVar22[6] = uVar19;\n                puVar22[7] = SUB81(dVar26,0);\n              }\n              else {\n                *puVar22 = SUB81(dVar26,0);\n                puVar22[1] = uVar19;\n                puVar22[2] = uVar17;\n                puVar22[3] = uVar7;\n                puVar22[4] = uVar4;\n                puVar22[5] = uVar14;\n                puVar22[6] = uVar11;\n                puVar22[7] = uVar6;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 8);\n            } while (puVar24 != q);\n            return;\n          }\n        }\n        else if (uVar25 == 0x10) {\n          if (quantum_info->format == FloatingPointQuantumFormat) {\n            if ((int)q < 1) {\n              return;\n            }\n            puVar24 = (uchar *)0x0;\n            EVar13 = LSBEndian;\n            dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              fVar30 = 0.0;\n              EVar16 = quantum_info->endian;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar30 = (float)((double)*(float *)(iVar23 + image->channel_map[5].offset * 4) *\n                                dVar27);\n              }\n              uVar3 = SinglePrecisionToHalf(fVar30);\n              uVar4 = (undefined1)(uVar3 >> 8);\n              if (EVar16 == EVar13) {\n                *puVar22 = (char)uVar3;\n                puVar22[1] = uVar4;\n              }\n              else {\n                *puVar22 = uVar4;\n                puVar22[1] = (char)uVar3;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2);\n            } while (puVar24 != q);\n            return;\n          }\n          if ((int)q < 1) {\n            return;\n          }\n          puVar24 = (uchar *)0x0;\n          fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            iVar23 = (int)(number_pixels >> 0x20);\n            puVar22 = (undefined1 *)number_pixels;\n            uVar6 = 0;\n            uVar4 = 0;\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar28 < fVar30) {\n                uVar29 = (undefined2)(int)fVar28;\n              }\n              else {\n                uVar29 = (undefined2)(int)(fVar28 - fVar30);\n              }\n              uVar4 = (undefined1)((ushort)uVar29 >> 8);\n              uVar6 = (undefined1)uVar29;\n            }\n            if (quantum_info->endian == LSBEndian) {\n              *puVar22 = uVar6;\n              puVar22[1] = uVar4;\n            }\n            else {\n              *puVar22 = uVar4;\n              puVar22[1] = uVar6;\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2);\n          } while (puVar24 != q);\n          return;\n        }\n      }" { (if_statement "if (uVar25 == 0x20) {\n          if (quantum_info->format == FloatingPointQuantumFormat) {\n            puVar24 = (uchar *)0x0;\n            if ((int)q < 1) {\n              return;\n            }\n            dVar31 = (quantum_info->state).inverse_scale;\n            EVar13 = quantum_info->endian;\n            dVar27 = quantum_info->minimum;\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              dVar26 = 0.0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                dVar26 = (double)*(float *)(iVar23 + image->channel_map[5].offset * 4);\n              }\n              fVar30 = (float)(dVar31 * dVar26 + dVar27);\n              uVar7 = (undefined1)((uint)fVar30 >> 8);\n              uVar6 = (undefined1)((uint)fVar30 >> 0x10);\n              uVar4 = (undefined1)((uint)fVar30 >> 0x18);\n              if (EVar13 == LSBEndian) {\n                puVar22[1] = uVar6;\n                *puVar22 = uVar4;\n                puVar22[2] = uVar7;\n                puVar22[3] = SUB41(fVar30,0);\n              }\n              else {\n                *puVar22 = SUB41(fVar30,0);\n                puVar22[1] = uVar7;\n                puVar22[2] = uVar6;\n                puVar22[3] = uVar4;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 4);\n            } while (puVar24 != q);\n            return;\n          }\n          if ((int)q < 1) {\n            return;\n          }\n          puVar24 = (uchar *)0x0;\n          fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            iVar23 = (int)(number_pixels >> 0x20);\n            puVar22 = (undefined1 *)number_pixels;\n            uVar7 = 0;\n            uVar6 = 0;\n            uVar4 = 0;\n            uVar11 = 0;\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar30 <= fVar28) {\n                uVar25 = (int)(fVar28 - fVar30) | 0x80000000;\n              }\n              else {\n                uVar25 = (uint)fVar28;\n              }\n              uVar11 = (undefined1)(uVar25 >> 0x18);\n              uVar4 = (undefined1)(uVar25 >> 0x10);\n              uVar6 = (undefined1)(uVar25 >> 8);\n              uVar7 = (undefined1)uVar25;\n            }\n            if (quantum_info->endian == LSBEndian) {\n              *puVar22 = uVar7;\n              puVar22[1] = uVar6;\n              puVar22[2] = uVar4;\n              puVar22[3] = uVar11;\n            }\n            else {\n              *puVar22 = uVar11;\n              puVar22[1] = uVar4;\n              puVar22[2] = uVar6;\n              puVar22[3] = uVar7;\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 4);\n          } while (puVar24 != q);\n          return;\n        }" if (parenthesized_expression "(uVar25 == 0x20)" ( (binary_expression "uVar25 == 0x20" identifier == number_literal) )) (compound_statement "{\n          if (quantum_info->format == FloatingPointQuantumFormat) {\n            puVar24 = (uchar *)0x0;\n            if ((int)q < 1) {\n              return;\n            }\n            dVar31 = (quantum_info->state).inverse_scale;\n            EVar13 = quantum_info->endian;\n            dVar27 = quantum_info->minimum;\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              dVar26 = 0.0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                dVar26 = (double)*(float *)(iVar23 + image->channel_map[5].offset * 4);\n              }\n              fVar30 = (float)(dVar31 * dVar26 + dVar27);\n              uVar7 = (undefined1)((uint)fVar30 >> 8);\n              uVar6 = (undefined1)((uint)fVar30 >> 0x10);\n              uVar4 = (undefined1)((uint)fVar30 >> 0x18);\n              if (EVar13 == LSBEndian) {\n                puVar22[1] = uVar6;\n                *puVar22 = uVar4;\n                puVar22[2] = uVar7;\n                puVar22[3] = SUB41(fVar30,0);\n              }\n              else {\n                *puVar22 = SUB41(fVar30,0);\n                puVar22[1] = uVar7;\n                puVar22[2] = uVar6;\n                puVar22[3] = uVar4;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 4);\n            } while (puVar24 != q);\n            return;\n          }\n          if ((int)q < 1) {\n            return;\n          }\n          puVar24 = (uchar *)0x0;\n          fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            iVar23 = (int)(number_pixels >> 0x20);\n            puVar22 = (undefined1 *)number_pixels;\n            uVar7 = 0;\n            uVar6 = 0;\n            uVar4 = 0;\n            uVar11 = 0;\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar30 <= fVar28) {\n                uVar25 = (int)(fVar28 - fVar30) | 0x80000000;\n              }\n              else {\n                uVar25 = (uint)fVar28;\n              }\n              uVar11 = (undefined1)(uVar25 >> 0x18);\n              uVar4 = (undefined1)(uVar25 >> 0x10);\n              uVar6 = (undefined1)(uVar25 >> 8);\n              uVar7 = (undefined1)uVar25;\n            }\n            if (quantum_info->endian == LSBEndian) {\n              *puVar22 = uVar7;\n              puVar22[1] = uVar6;\n              puVar22[2] = uVar4;\n              puVar22[3] = uVar11;\n            }\n            else {\n              *puVar22 = uVar11;\n              puVar22[1] = uVar4;\n              puVar22[2] = uVar6;\n              puVar22[3] = uVar7;\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 4);\n          } while (puVar24 != q);\n          return;\n        }" { (if_statement "if (quantum_info->format == FloatingPointQuantumFormat) {\n            puVar24 = (uchar *)0x0;\n            if ((int)q < 1) {\n              return;\n            }\n            dVar31 = (quantum_info->state).inverse_scale;\n            EVar13 = quantum_info->endian;\n            dVar27 = quantum_info->minimum;\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              dVar26 = 0.0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                dVar26 = (double)*(float *)(iVar23 + image->channel_map[5].offset * 4);\n              }\n              fVar30 = (float)(dVar31 * dVar26 + dVar27);\n              uVar7 = (undefined1)((uint)fVar30 >> 8);\n              uVar6 = (undefined1)((uint)fVar30 >> 0x10);\n              uVar4 = (undefined1)((uint)fVar30 >> 0x18);\n              if (EVar13 == LSBEndian) {\n                puVar22[1] = uVar6;\n                *puVar22 = uVar4;\n                puVar22[2] = uVar7;\n                puVar22[3] = SUB41(fVar30,0);\n              }\n              else {\n                *puVar22 = SUB41(fVar30,0);\n                puVar22[1] = uVar7;\n                puVar22[2] = uVar6;\n                puVar22[3] = uVar4;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 4);\n            } while (puVar24 != q);\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            puVar24 = (uchar *)0x0;\n            if ((int)q < 1) {\n              return;\n            }\n            dVar31 = (quantum_info->state).inverse_scale;\n            EVar13 = quantum_info->endian;\n            dVar27 = quantum_info->minimum;\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              dVar26 = 0.0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                dVar26 = (double)*(float *)(iVar23 + image->channel_map[5].offset * 4);\n              }\n              fVar30 = (float)(dVar31 * dVar26 + dVar27);\n              uVar7 = (undefined1)((uint)fVar30 >> 8);\n              uVar6 = (undefined1)((uint)fVar30 >> 0x10);\n              uVar4 = (undefined1)((uint)fVar30 >> 0x18);\n              if (EVar13 == LSBEndian) {\n                puVar22[1] = uVar6;\n                *puVar22 = uVar4;\n                puVar22[2] = uVar7;\n                puVar22[3] = SUB41(fVar30,0);\n              }\n              else {\n                *puVar22 = SUB41(fVar30,0);\n                puVar22[1] = uVar7;\n                puVar22[2] = uVar6;\n                puVar22[3] = uVar4;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 4);\n            } while (puVar24 != q);\n            return;\n          }" { (expression_statement "puVar24 = (uchar *)0x0;" (assignment_expression "puVar24 = (uchar *)0x0" identifier = (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((int)q < 1) {\n              return;\n            }" if (parenthesized_expression "((int)q < 1)" ( (binary_expression "(int)q < 1" (cast_expression "(int)q" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n              return;\n            }" { (return_statement "return;" return ;) })) (expression_statement "dVar31 = (quantum_info->state).inverse_scale;" (assignment_expression "dVar31 = (quantum_info->state).inverse_scale" identifier = (field_expression "(quantum_info->state).inverse_scale" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "EVar13 = quantum_info->endian;" (assignment_expression "EVar13 = quantum_info->endian" identifier = (field_expression "quantum_info->endian" identifier -> field_identifier)) ;) (expression_statement "dVar27 = quantum_info->minimum;" (assignment_expression "dVar27 = quantum_info->minimum" identifier = (field_expression "quantum_info->minimum" identifier -> field_identifier)) ;) (do_statement "do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              dVar26 = 0.0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                dVar26 = (double)*(float *)(iVar23 + image->channel_map[5].offset * 4);\n              }\n              fVar30 = (float)(dVar31 * dVar26 + dVar27);\n              uVar7 = (undefined1)((uint)fVar30 >> 8);\n              uVar6 = (undefined1)((uint)fVar30 >> 0x10);\n              uVar4 = (undefined1)((uint)fVar30 >> 0x18);\n              if (EVar13 == LSBEndian) {\n                puVar22[1] = uVar6;\n                *puVar22 = uVar4;\n                puVar22[2] = uVar7;\n                puVar22[3] = SUB41(fVar30,0);\n              }\n              else {\n                *puVar22 = SUB41(fVar30,0);\n                puVar22[1] = uVar7;\n                puVar22[2] = uVar6;\n                puVar22[3] = uVar4;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 4);\n            } while (puVar24 != q);" do (compound_statement "{\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              dVar26 = 0.0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                dVar26 = (double)*(float *)(iVar23 + image->channel_map[5].offset * 4);\n              }\n              fVar30 = (float)(dVar31 * dVar26 + dVar27);\n              uVar7 = (undefined1)((uint)fVar30 >> 8);\n              uVar6 = (undefined1)((uint)fVar30 >> 0x10);\n              uVar4 = (undefined1)((uint)fVar30 >> 0x18);\n              if (EVar13 == LSBEndian) {\n                puVar22[1] = uVar6;\n                *puVar22 = uVar4;\n                puVar22[2] = uVar7;\n                puVar22[3] = SUB41(fVar30,0);\n              }\n              else {\n                *puVar22 = SUB41(fVar30,0);\n                puVar22[1] = uVar7;\n                puVar22[2] = uVar6;\n                puVar22[3] = uVar4;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 4);\n            }" { (expression_statement "iVar23 = (int)(number_pixels >> 0x20);" (assignment_expression "iVar23 = (int)(number_pixels >> 0x20)" identifier = (cast_expression "(int)(number_pixels >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(number_pixels >> 0x20)" ( (binary_expression "number_pixels >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "puVar22 = (undefined1 *)number_pixels;" (assignment_expression "puVar22 = (undefined1 *)number_pixels" identifier = (cast_expression "(undefined1 *)number_pixels" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "dVar26 = 0.0;" (assignment_expression "dVar26 = 0.0" identifier = number_literal) ;) (if_statement "if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                dVar26 = (double)*(float *)(iVar23 + image->channel_map[5].offset * 4);\n              }" if (parenthesized_expression "(image->channel_map[5].traits != UndefinedPixelTrait)" ( (binary_expression "image->channel_map[5].traits != UndefinedPixelTrait" (field_expression "image->channel_map[5].traits" (subscript_expression "image->channel_map[5]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) != identifier) )) (compound_statement "{\n                dVar26 = (double)*(float *)(iVar23 + image->channel_map[5].offset * 4);\n              }" { (expression_statement "dVar26 = (double)*(float *)(iVar23 + image->channel_map[5].offset * 4);" (assignment_expression "dVar26 = (double)*(float *)(iVar23 + image->channel_map[5].offset * 4)" identifier = (cast_expression "(double)*(float *)(iVar23 + image->channel_map[5].offset * 4)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(iVar23 + image->channel_map[5].offset * 4)" * (cast_expression "(float *)(iVar23 + image->channel_map[5].offset * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + image->channel_map[5].offset * 4)" ( (binary_expression "iVar23 + image->channel_map[5].offset * 4" identifier + (binary_expression "image->channel_map[5].offset * 4" (field_expression "image->channel_map[5].offset" (subscript_expression "image->channel_map[5]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) * number_literal)) )))))) ;) })) (expression_statement "fVar30 = (float)(dVar31 * dVar26 + dVar27);" (assignment_expression "fVar30 = (float)(dVar31 * dVar26 + dVar27)" identifier = (cast_expression "(float)(dVar31 * dVar26 + dVar27)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(dVar31 * dVar26 + dVar27)" ( (binary_expression "dVar31 * dVar26 + dVar27" (binary_expression "dVar31 * dVar26" identifier * identifier) + identifier) )))) ;) (expression_statement "uVar7 = (undefined1)((uint)fVar30 >> 8);" (assignment_expression "uVar7 = (undefined1)((uint)fVar30 >> 8)" identifier = (call_expression "(undefined1)((uint)fVar30 >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((uint)fVar30 >> 8)" ( (binary_expression "(uint)fVar30 >> 8" (cast_expression "(uint)fVar30" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar6 = (undefined1)((uint)fVar30 >> 0x10);" (assignment_expression "uVar6 = (undefined1)((uint)fVar30 >> 0x10)" identifier = (call_expression "(undefined1)((uint)fVar30 >> 0x10)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((uint)fVar30 >> 0x10)" ( (binary_expression "(uint)fVar30 >> 0x10" (cast_expression "(uint)fVar30" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar4 = (undefined1)((uint)fVar30 >> 0x18);" (assignment_expression "uVar4 = (undefined1)((uint)fVar30 >> 0x18)" identifier = (call_expression "(undefined1)((uint)fVar30 >> 0x18)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((uint)fVar30 >> 0x18)" ( (binary_expression "(uint)fVar30 >> 0x18" (cast_expression "(uint)fVar30" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (EVar13 == LSBEndian) {\n                puVar22[1] = uVar6;\n                *puVar22 = uVar4;\n                puVar22[2] = uVar7;\n                puVar22[3] = SUB41(fVar30,0);\n              }\n              else {\n                *puVar22 = SUB41(fVar30,0);\n                puVar22[1] = uVar7;\n                puVar22[2] = uVar6;\n                puVar22[3] = uVar4;\n              }" if (parenthesized_expression "(EVar13 == LSBEndian)" ( (binary_expression "EVar13 == LSBEndian" identifier == identifier) )) (compound_statement "{\n                puVar22[1] = uVar6;\n                *puVar22 = uVar4;\n                puVar22[2] = uVar7;\n                puVar22[3] = SUB41(fVar30,0);\n              }" { (expression_statement "puVar22[1] = uVar6;" (assignment_expression "puVar22[1] = uVar6" (subscript_expression "puVar22[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar22 = uVar4;" (assignment_expression "*puVar22 = uVar4" (pointer_expression "*puVar22" * identifier) = identifier) ;) (expression_statement "puVar22[2] = uVar7;" (assignment_expression "puVar22[2] = uVar7" (subscript_expression "puVar22[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar22[3] = SUB41(fVar30,0);" (assignment_expression "puVar22[3] = SUB41(fVar30,0)" (subscript_expression "puVar22[3]" identifier [ number_literal ]) = (call_expression "SUB41(fVar30,0)" identifier (argument_list "(fVar30,0)" ( identifier , number_literal )))) ;) }) (else_clause "else {\n                *puVar22 = SUB41(fVar30,0);\n                puVar22[1] = uVar7;\n                puVar22[2] = uVar6;\n                puVar22[3] = uVar4;\n              }" else (compound_statement "{\n                *puVar22 = SUB41(fVar30,0);\n                puVar22[1] = uVar7;\n                puVar22[2] = uVar6;\n                puVar22[3] = uVar4;\n              }" { (expression_statement "*puVar22 = SUB41(fVar30,0);" (assignment_expression "*puVar22 = SUB41(fVar30,0)" (pointer_expression "*puVar22" * identifier) = (call_expression "SUB41(fVar30,0)" identifier (argument_list "(fVar30,0)" ( identifier , number_literal )))) ;) (expression_statement "puVar22[1] = uVar7;" (assignment_expression "puVar22[1] = uVar7" (subscript_expression "puVar22[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar22[2] = uVar6;" (assignment_expression "puVar22[2] = uVar6" (subscript_expression "puVar22[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar22[3] = uVar4;" (assignment_expression "puVar22[3] = uVar4" (subscript_expression "puVar22[3]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "puVar24 = puVar24 + 1;" (assignment_expression "puVar24 = puVar24 + 1" identifier = (binary_expression "puVar24 + 1" identifier + number_literal)) ;) (expression_statement "number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 4);" (assignment_expression "number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 4)" identifier = (call_expression "CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 4)" identifier (argument_list "(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 4)" ( (binary_expression "iVar23 + image->number_channels * 4" identifier + (binary_expression "image->number_channels * 4" (field_expression "image->number_channels" identifier -> field_identifier) * number_literal)) , (binary_expression "puVar22 + quantum_info->pad + 4" (binary_expression "puVar22 + quantum_info->pad" identifier + (field_expression "quantum_info->pad" identifier -> field_identifier)) + number_literal) )))) ;) }) while (parenthesized_expression "(puVar24 != q)" ( (binary_expression "puVar24 != q" identifier != identifier) )) ;) (return_statement "return;" return ;) })) (if_statement "if ((int)q < 1) {\n            return;\n          }" if (parenthesized_expression "((int)q < 1)" ( (binary_expression "(int)q < 1" (cast_expression "(int)q" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) (expression_statement "puVar24 = (uchar *)0x0;" (assignment_expression "puVar24 = (uchar *)0x0" identifier = (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);" (assignment_expression "fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" identifier = (pointer_expression "*(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" * (cast_expression "(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (binary_expression "PTR_s_t_to_left_003a88e4 + -0x51e0" identifier + number_literal) ))))) ;) (do_statement "do {\n            iVar23 = (int)(number_pixels >> 0x20);\n            puVar22 = (undefined1 *)number_pixels;\n            uVar7 = 0;\n            uVar6 = 0;\n            uVar4 = 0;\n            uVar11 = 0;\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar30 <= fVar28) {\n                uVar25 = (int)(fVar28 - fVar30) | 0x80000000;\n              }\n              else {\n                uVar25 = (uint)fVar28;\n              }\n              uVar11 = (undefined1)(uVar25 >> 0x18);\n              uVar4 = (undefined1)(uVar25 >> 0x10);\n              uVar6 = (undefined1)(uVar25 >> 8);\n              uVar7 = (undefined1)uVar25;\n            }\n            if (quantum_info->endian == LSBEndian) {\n              *puVar22 = uVar7;\n              puVar22[1] = uVar6;\n              puVar22[2] = uVar4;\n              puVar22[3] = uVar11;\n            }\n            else {\n              *puVar22 = uVar11;\n              puVar22[1] = uVar4;\n              puVar22[2] = uVar6;\n              puVar22[3] = uVar7;\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 4);\n          } while (puVar24 != q);" do (compound_statement "{\n            iVar23 = (int)(number_pixels >> 0x20);\n            puVar22 = (undefined1 *)number_pixels;\n            uVar7 = 0;\n            uVar6 = 0;\n            uVar4 = 0;\n            uVar11 = 0;\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar30 <= fVar28) {\n                uVar25 = (int)(fVar28 - fVar30) | 0x80000000;\n              }\n              else {\n                uVar25 = (uint)fVar28;\n              }\n              uVar11 = (undefined1)(uVar25 >> 0x18);\n              uVar4 = (undefined1)(uVar25 >> 0x10);\n              uVar6 = (undefined1)(uVar25 >> 8);\n              uVar7 = (undefined1)uVar25;\n            }\n            if (quantum_info->endian == LSBEndian) {\n              *puVar22 = uVar7;\n              puVar22[1] = uVar6;\n              puVar22[2] = uVar4;\n              puVar22[3] = uVar11;\n            }\n            else {\n              *puVar22 = uVar11;\n              puVar22[1] = uVar4;\n              puVar22[2] = uVar6;\n              puVar22[3] = uVar7;\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 4);\n          }" { (expression_statement "iVar23 = (int)(number_pixels >> 0x20);" (assignment_expression "iVar23 = (int)(number_pixels >> 0x20)" identifier = (cast_expression "(int)(number_pixels >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(number_pixels >> 0x20)" ( (binary_expression "number_pixels >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "puVar22 = (undefined1 *)number_pixels;" (assignment_expression "puVar22 = (undefined1 *)number_pixels" identifier = (cast_expression "(undefined1 *)number_pixels" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (if_statement "if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar30 <= fVar28) {\n                uVar25 = (int)(fVar28 - fVar30) | 0x80000000;\n              }\n              else {\n                uVar25 = (uint)fVar28;\n              }\n              uVar11 = (undefined1)(uVar25 >> 0x18);\n              uVar4 = (undefined1)(uVar25 >> 0x10);\n              uVar6 = (undefined1)(uVar25 >> 8);\n              uVar7 = (undefined1)uVar25;\n            }" if (parenthesized_expression "(image->channel_map[5].traits != UndefinedPixelTrait)" ( (binary_expression "image->channel_map[5].traits != UndefinedPixelTrait" (field_expression "image->channel_map[5].traits" (subscript_expression "image->channel_map[5]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) != identifier) )) (compound_statement "{\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar30 <= fVar28) {\n                uVar25 = (int)(fVar28 - fVar30) | 0x80000000;\n              }\n              else {\n                uVar25 = (uint)fVar28;\n              }\n              uVar11 = (undefined1)(uVar25 >> 0x18);\n              uVar4 = (undefined1)(uVar25 >> 0x10);\n              uVar6 = (undefined1)(uVar25 >> 8);\n              uVar7 = (undefined1)uVar25;\n            }" { (expression_statement "fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);" (assignment_expression "fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4)" identifier = (pointer_expression "*(float *)(iVar23 + image->channel_map[5].offset * 4)" * (cast_expression "(float *)(iVar23 + image->channel_map[5].offset * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + image->channel_map[5].offset * 4)" ( (binary_expression "iVar23 + image->channel_map[5].offset * 4" identifier + (binary_expression "image->channel_map[5].offset * 4" (field_expression "image->channel_map[5].offset" (subscript_expression "image->channel_map[5]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) * number_literal)) ))))) ;) (if_statement "if (fVar30 <= fVar28) {\n                uVar25 = (int)(fVar28 - fVar30) | 0x80000000;\n              }\n              else {\n                uVar25 = (uint)fVar28;\n              }" if (parenthesized_expression "(fVar30 <= fVar28)" ( (binary_expression "fVar30 <= fVar28" identifier <= identifier) )) (compound_statement "{\n                uVar25 = (int)(fVar28 - fVar30) | 0x80000000;\n              }" { (expression_statement "uVar25 = (int)(fVar28 - fVar30) | 0x80000000;" (assignment_expression "uVar25 = (int)(fVar28 - fVar30) | 0x80000000" identifier = (binary_expression "(int)(fVar28 - fVar30) | 0x80000000" (cast_expression "(int)(fVar28 - fVar30)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(fVar28 - fVar30)" ( (binary_expression "fVar28 - fVar30" identifier - identifier) ))) | number_literal)) ;) }) (else_clause "else {\n                uVar25 = (uint)fVar28;\n              }" else (compound_statement "{\n                uVar25 = (uint)fVar28;\n              }" { (expression_statement "uVar25 = (uint)fVar28;" (assignment_expression "uVar25 = (uint)fVar28" identifier = (cast_expression "(uint)fVar28" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }))) (expression_statement "uVar11 = (undefined1)(uVar25 >> 0x18);" (assignment_expression "uVar11 = (undefined1)(uVar25 >> 0x18)" identifier = (call_expression "(undefined1)(uVar25 >> 0x18)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "(uVar25 >> 0x18)" ( (binary_expression "uVar25 >> 0x18" identifier >> number_literal) )))) ;) (expression_statement "uVar4 = (undefined1)(uVar25 >> 0x10);" (assignment_expression "uVar4 = (undefined1)(uVar25 >> 0x10)" identifier = (call_expression "(undefined1)(uVar25 >> 0x10)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "(uVar25 >> 0x10)" ( (binary_expression "uVar25 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "uVar6 = (undefined1)(uVar25 >> 8);" (assignment_expression "uVar6 = (undefined1)(uVar25 >> 8)" identifier = (call_expression "(undefined1)(uVar25 >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "(uVar25 >> 8)" ( (binary_expression "uVar25 >> 8" identifier >> number_literal) )))) ;) (expression_statement "uVar7 = (undefined1)uVar25;" (assignment_expression "uVar7 = (undefined1)uVar25" identifier = (cast_expression "(undefined1)uVar25" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) })) (if_statement "if (quantum_info->endian == LSBEndian) {\n              *puVar22 = uVar7;\n              puVar22[1] = uVar6;\n              puVar22[2] = uVar4;\n              puVar22[3] = uVar11;\n            }\n            else {\n              *puVar22 = uVar11;\n              puVar22[1] = uVar4;\n              puVar22[2] = uVar6;\n              puVar22[3] = uVar7;\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              *puVar22 = uVar7;\n              puVar22[1] = uVar6;\n              puVar22[2] = uVar4;\n              puVar22[3] = uVar11;\n            }" { (expression_statement "*puVar22 = uVar7;" (assignment_expression "*puVar22 = uVar7" (pointer_expression "*puVar22" * identifier) = identifier) ;) (expression_statement "puVar22[1] = uVar6;" (assignment_expression "puVar22[1] = uVar6" (subscript_expression "puVar22[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar22[2] = uVar4;" (assignment_expression "puVar22[2] = uVar4" (subscript_expression "puVar22[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar22[3] = uVar11;" (assignment_expression "puVar22[3] = uVar11" (subscript_expression "puVar22[3]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n              *puVar22 = uVar11;\n              puVar22[1] = uVar4;\n              puVar22[2] = uVar6;\n              puVar22[3] = uVar7;\n            }" else (compound_statement "{\n              *puVar22 = uVar11;\n              puVar22[1] = uVar4;\n              puVar22[2] = uVar6;\n              puVar22[3] = uVar7;\n            }" { (expression_statement "*puVar22 = uVar11;" (assignment_expression "*puVar22 = uVar11" (pointer_expression "*puVar22" * identifier) = identifier) ;) (expression_statement "puVar22[1] = uVar4;" (assignment_expression "puVar22[1] = uVar4" (subscript_expression "puVar22[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar22[2] = uVar6;" (assignment_expression "puVar22[2] = uVar6" (subscript_expression "puVar22[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar22[3] = uVar7;" (assignment_expression "puVar22[3] = uVar7" (subscript_expression "puVar22[3]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "puVar24 = puVar24 + 1;" (assignment_expression "puVar24 = puVar24 + 1" identifier = (binary_expression "puVar24 + 1" identifier + number_literal)) ;) (expression_statement "number_pixels =\n                 CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 4);" (assignment_expression "number_pixels =\n                 CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 4)" identifier = (call_expression "CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 4)" identifier (argument_list "(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 4)" ( (binary_expression "iVar23 + image->number_channels * 4" identifier + (binary_expression "image->number_channels * 4" (field_expression "image->number_channels" identifier -> field_identifier) * number_literal)) , (binary_expression "puVar22 + quantum_info->pad + 4" (binary_expression "puVar22 + quantum_info->pad" identifier + (field_expression "quantum_info->pad" identifier -> field_identifier)) + number_literal) )))) ;) }) while (parenthesized_expression "(puVar24 != q)" ( (binary_expression "puVar24 != q" identifier != identifier) )) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar25 == 0x40) {\n          if (quantum_info->format == FloatingPointQuantumFormat) {\n            puVar24 = (uchar *)0x0;\n            if ((int)q < 1) {\n              return;\n            }\n            dVar31 = (quantum_info->state).inverse_scale;\n            EVar13 = quantum_info->endian;\n            dVar27 = quantum_info->minimum;\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              dVar26 = 0.0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                dVar26 = (double)*(float *)(iVar23 + image->channel_map[5].offset * 4);\n              }\n              dVar26 = dVar31 * dVar26 + dVar27;\n              uVar4 = (undefined1)((ulonglong)dVar26 >> 0x20);\n              uVar19 = (undefined1)((ulonglong)dVar26 >> 8);\n              uVar17 = (undefined1)((ulonglong)dVar26 >> 0x10);\n              uVar7 = (undefined1)((ulonglong)dVar26 >> 0x18);\n              uVar14 = (undefined1)((ulonglong)dVar26 >> 0x28);\n              uVar11 = (undefined1)((ulonglong)dVar26 >> 0x30);\n              uVar6 = (undefined1)((ulonglong)dVar26 >> 0x38);\n              if (EVar13 == LSBEndian) {\n                puVar22[1] = uVar11;\n                *puVar22 = uVar6;\n                puVar22[2] = uVar14;\n                puVar22[3] = uVar4;\n                puVar22[4] = uVar7;\n                puVar22[5] = uVar17;\n                puVar22[6] = uVar19;\n                puVar22[7] = SUB81(dVar26,0);\n              }\n              else {\n                *puVar22 = SUB81(dVar26,0);\n                puVar22[1] = uVar19;\n                puVar22[2] = uVar17;\n                puVar22[3] = uVar7;\n                puVar22[4] = uVar4;\n                puVar22[5] = uVar14;\n                puVar22[6] = uVar11;\n                puVar22[7] = uVar6;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 8);\n            } while (puVar24 != q);\n            return;\n          }\n        }\n        else if (uVar25 == 0x10) {\n          if (quantum_info->format == FloatingPointQuantumFormat) {\n            if ((int)q < 1) {\n              return;\n            }\n            puVar24 = (uchar *)0x0;\n            EVar13 = LSBEndian;\n            dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              fVar30 = 0.0;\n              EVar16 = quantum_info->endian;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar30 = (float)((double)*(float *)(iVar23 + image->channel_map[5].offset * 4) *\n                                dVar27);\n              }\n              uVar3 = SinglePrecisionToHalf(fVar30);\n              uVar4 = (undefined1)(uVar3 >> 8);\n              if (EVar16 == EVar13) {\n                *puVar22 = (char)uVar3;\n                puVar22[1] = uVar4;\n              }\n              else {\n                *puVar22 = uVar4;\n                puVar22[1] = (char)uVar3;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2);\n            } while (puVar24 != q);\n            return;\n          }\n          if ((int)q < 1) {\n            return;\n          }\n          puVar24 = (uchar *)0x0;\n          fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            iVar23 = (int)(number_pixels >> 0x20);\n            puVar22 = (undefined1 *)number_pixels;\n            uVar6 = 0;\n            uVar4 = 0;\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar28 < fVar30) {\n                uVar29 = (undefined2)(int)fVar28;\n              }\n              else {\n                uVar29 = (undefined2)(int)(fVar28 - fVar30);\n              }\n              uVar4 = (undefined1)((ushort)uVar29 >> 8);\n              uVar6 = (undefined1)uVar29;\n            }\n            if (quantum_info->endian == LSBEndian) {\n              *puVar22 = uVar6;\n              puVar22[1] = uVar4;\n            }\n            else {\n              *puVar22 = uVar4;\n              puVar22[1] = uVar6;\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2);\n          } while (puVar24 != q);\n          return;\n        }" if (parenthesized_expression "(uVar25 == 0x40)" ( (binary_expression "uVar25 == 0x40" identifier == number_literal) )) (compound_statement "{\n          if (quantum_info->format == FloatingPointQuantumFormat) {\n            puVar24 = (uchar *)0x0;\n            if ((int)q < 1) {\n              return;\n            }\n            dVar31 = (quantum_info->state).inverse_scale;\n            EVar13 = quantum_info->endian;\n            dVar27 = quantum_info->minimum;\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              dVar26 = 0.0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                dVar26 = (double)*(float *)(iVar23 + image->channel_map[5].offset * 4);\n              }\n              dVar26 = dVar31 * dVar26 + dVar27;\n              uVar4 = (undefined1)((ulonglong)dVar26 >> 0x20);\n              uVar19 = (undefined1)((ulonglong)dVar26 >> 8);\n              uVar17 = (undefined1)((ulonglong)dVar26 >> 0x10);\n              uVar7 = (undefined1)((ulonglong)dVar26 >> 0x18);\n              uVar14 = (undefined1)((ulonglong)dVar26 >> 0x28);\n              uVar11 = (undefined1)((ulonglong)dVar26 >> 0x30);\n              uVar6 = (undefined1)((ulonglong)dVar26 >> 0x38);\n              if (EVar13 == LSBEndian) {\n                puVar22[1] = uVar11;\n                *puVar22 = uVar6;\n                puVar22[2] = uVar14;\n                puVar22[3] = uVar4;\n                puVar22[4] = uVar7;\n                puVar22[5] = uVar17;\n                puVar22[6] = uVar19;\n                puVar22[7] = SUB81(dVar26,0);\n              }\n              else {\n                *puVar22 = SUB81(dVar26,0);\n                puVar22[1] = uVar19;\n                puVar22[2] = uVar17;\n                puVar22[3] = uVar7;\n                puVar22[4] = uVar4;\n                puVar22[5] = uVar14;\n                puVar22[6] = uVar11;\n                puVar22[7] = uVar6;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 8);\n            } while (puVar24 != q);\n            return;\n          }\n        }" { (if_statement "if (quantum_info->format == FloatingPointQuantumFormat) {\n            puVar24 = (uchar *)0x0;\n            if ((int)q < 1) {\n              return;\n            }\n            dVar31 = (quantum_info->state).inverse_scale;\n            EVar13 = quantum_info->endian;\n            dVar27 = quantum_info->minimum;\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              dVar26 = 0.0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                dVar26 = (double)*(float *)(iVar23 + image->channel_map[5].offset * 4);\n              }\n              dVar26 = dVar31 * dVar26 + dVar27;\n              uVar4 = (undefined1)((ulonglong)dVar26 >> 0x20);\n              uVar19 = (undefined1)((ulonglong)dVar26 >> 8);\n              uVar17 = (undefined1)((ulonglong)dVar26 >> 0x10);\n              uVar7 = (undefined1)((ulonglong)dVar26 >> 0x18);\n              uVar14 = (undefined1)((ulonglong)dVar26 >> 0x28);\n              uVar11 = (undefined1)((ulonglong)dVar26 >> 0x30);\n              uVar6 = (undefined1)((ulonglong)dVar26 >> 0x38);\n              if (EVar13 == LSBEndian) {\n                puVar22[1] = uVar11;\n                *puVar22 = uVar6;\n                puVar22[2] = uVar14;\n                puVar22[3] = uVar4;\n                puVar22[4] = uVar7;\n                puVar22[5] = uVar17;\n                puVar22[6] = uVar19;\n                puVar22[7] = SUB81(dVar26,0);\n              }\n              else {\n                *puVar22 = SUB81(dVar26,0);\n                puVar22[1] = uVar19;\n                puVar22[2] = uVar17;\n                puVar22[3] = uVar7;\n                puVar22[4] = uVar4;\n                puVar22[5] = uVar14;\n                puVar22[6] = uVar11;\n                puVar22[7] = uVar6;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 8);\n            } while (puVar24 != q);\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            puVar24 = (uchar *)0x0;\n            if ((int)q < 1) {\n              return;\n            }\n            dVar31 = (quantum_info->state).inverse_scale;\n            EVar13 = quantum_info->endian;\n            dVar27 = quantum_info->minimum;\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              dVar26 = 0.0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                dVar26 = (double)*(float *)(iVar23 + image->channel_map[5].offset * 4);\n              }\n              dVar26 = dVar31 * dVar26 + dVar27;\n              uVar4 = (undefined1)((ulonglong)dVar26 >> 0x20);\n              uVar19 = (undefined1)((ulonglong)dVar26 >> 8);\n              uVar17 = (undefined1)((ulonglong)dVar26 >> 0x10);\n              uVar7 = (undefined1)((ulonglong)dVar26 >> 0x18);\n              uVar14 = (undefined1)((ulonglong)dVar26 >> 0x28);\n              uVar11 = (undefined1)((ulonglong)dVar26 >> 0x30);\n              uVar6 = (undefined1)((ulonglong)dVar26 >> 0x38);\n              if (EVar13 == LSBEndian) {\n                puVar22[1] = uVar11;\n                *puVar22 = uVar6;\n                puVar22[2] = uVar14;\n                puVar22[3] = uVar4;\n                puVar22[4] = uVar7;\n                puVar22[5] = uVar17;\n                puVar22[6] = uVar19;\n                puVar22[7] = SUB81(dVar26,0);\n              }\n              else {\n                *puVar22 = SUB81(dVar26,0);\n                puVar22[1] = uVar19;\n                puVar22[2] = uVar17;\n                puVar22[3] = uVar7;\n                puVar22[4] = uVar4;\n                puVar22[5] = uVar14;\n                puVar22[6] = uVar11;\n                puVar22[7] = uVar6;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 8);\n            } while (puVar24 != q);\n            return;\n          }" { (expression_statement "puVar24 = (uchar *)0x0;" (assignment_expression "puVar24 = (uchar *)0x0" identifier = (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((int)q < 1) {\n              return;\n            }" if (parenthesized_expression "((int)q < 1)" ( (binary_expression "(int)q < 1" (cast_expression "(int)q" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n              return;\n            }" { (return_statement "return;" return ;) })) (expression_statement "dVar31 = (quantum_info->state).inverse_scale;" (assignment_expression "dVar31 = (quantum_info->state).inverse_scale" identifier = (field_expression "(quantum_info->state).inverse_scale" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "EVar13 = quantum_info->endian;" (assignment_expression "EVar13 = quantum_info->endian" identifier = (field_expression "quantum_info->endian" identifier -> field_identifier)) ;) (expression_statement "dVar27 = quantum_info->minimum;" (assignment_expression "dVar27 = quantum_info->minimum" identifier = (field_expression "quantum_info->minimum" identifier -> field_identifier)) ;) (do_statement "do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              dVar26 = 0.0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                dVar26 = (double)*(float *)(iVar23 + image->channel_map[5].offset * 4);\n              }\n              dVar26 = dVar31 * dVar26 + dVar27;\n              uVar4 = (undefined1)((ulonglong)dVar26 >> 0x20);\n              uVar19 = (undefined1)((ulonglong)dVar26 >> 8);\n              uVar17 = (undefined1)((ulonglong)dVar26 >> 0x10);\n              uVar7 = (undefined1)((ulonglong)dVar26 >> 0x18);\n              uVar14 = (undefined1)((ulonglong)dVar26 >> 0x28);\n              uVar11 = (undefined1)((ulonglong)dVar26 >> 0x30);\n              uVar6 = (undefined1)((ulonglong)dVar26 >> 0x38);\n              if (EVar13 == LSBEndian) {\n                puVar22[1] = uVar11;\n                *puVar22 = uVar6;\n                puVar22[2] = uVar14;\n                puVar22[3] = uVar4;\n                puVar22[4] = uVar7;\n                puVar22[5] = uVar17;\n                puVar22[6] = uVar19;\n                puVar22[7] = SUB81(dVar26,0);\n              }\n              else {\n                *puVar22 = SUB81(dVar26,0);\n                puVar22[1] = uVar19;\n                puVar22[2] = uVar17;\n                puVar22[3] = uVar7;\n                puVar22[4] = uVar4;\n                puVar22[5] = uVar14;\n                puVar22[6] = uVar11;\n                puVar22[7] = uVar6;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 8);\n            } while (puVar24 != q);" do (compound_statement "{\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              dVar26 = 0.0;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                dVar26 = (double)*(float *)(iVar23 + image->channel_map[5].offset * 4);\n              }\n              dVar26 = dVar31 * dVar26 + dVar27;\n              uVar4 = (undefined1)((ulonglong)dVar26 >> 0x20);\n              uVar19 = (undefined1)((ulonglong)dVar26 >> 8);\n              uVar17 = (undefined1)((ulonglong)dVar26 >> 0x10);\n              uVar7 = (undefined1)((ulonglong)dVar26 >> 0x18);\n              uVar14 = (undefined1)((ulonglong)dVar26 >> 0x28);\n              uVar11 = (undefined1)((ulonglong)dVar26 >> 0x30);\n              uVar6 = (undefined1)((ulonglong)dVar26 >> 0x38);\n              if (EVar13 == LSBEndian) {\n                puVar22[1] = uVar11;\n                *puVar22 = uVar6;\n                puVar22[2] = uVar14;\n                puVar22[3] = uVar4;\n                puVar22[4] = uVar7;\n                puVar22[5] = uVar17;\n                puVar22[6] = uVar19;\n                puVar22[7] = SUB81(dVar26,0);\n              }\n              else {\n                *puVar22 = SUB81(dVar26,0);\n                puVar22[1] = uVar19;\n                puVar22[2] = uVar17;\n                puVar22[3] = uVar7;\n                puVar22[4] = uVar4;\n                puVar22[5] = uVar14;\n                puVar22[6] = uVar11;\n                puVar22[7] = uVar6;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 8);\n            }" { (expression_statement "iVar23 = (int)(number_pixels >> 0x20);" (assignment_expression "iVar23 = (int)(number_pixels >> 0x20)" identifier = (cast_expression "(int)(number_pixels >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(number_pixels >> 0x20)" ( (binary_expression "number_pixels >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "puVar22 = (undefined1 *)number_pixels;" (assignment_expression "puVar22 = (undefined1 *)number_pixels" identifier = (cast_expression "(undefined1 *)number_pixels" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "dVar26 = 0.0;" (assignment_expression "dVar26 = 0.0" identifier = number_literal) ;) (if_statement "if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                dVar26 = (double)*(float *)(iVar23 + image->channel_map[5].offset * 4);\n              }" if (parenthesized_expression "(image->channel_map[5].traits != UndefinedPixelTrait)" ( (binary_expression "image->channel_map[5].traits != UndefinedPixelTrait" (field_expression "image->channel_map[5].traits" (subscript_expression "image->channel_map[5]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) != identifier) )) (compound_statement "{\n                dVar26 = (double)*(float *)(iVar23 + image->channel_map[5].offset * 4);\n              }" { (expression_statement "dVar26 = (double)*(float *)(iVar23 + image->channel_map[5].offset * 4);" (assignment_expression "dVar26 = (double)*(float *)(iVar23 + image->channel_map[5].offset * 4)" identifier = (cast_expression "(double)*(float *)(iVar23 + image->channel_map[5].offset * 4)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(iVar23 + image->channel_map[5].offset * 4)" * (cast_expression "(float *)(iVar23 + image->channel_map[5].offset * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + image->channel_map[5].offset * 4)" ( (binary_expression "iVar23 + image->channel_map[5].offset * 4" identifier + (binary_expression "image->channel_map[5].offset * 4" (field_expression "image->channel_map[5].offset" (subscript_expression "image->channel_map[5]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) * number_literal)) )))))) ;) })) (expression_statement "dVar26 = dVar31 * dVar26 + dVar27;" (assignment_expression "dVar26 = dVar31 * dVar26 + dVar27" identifier = (binary_expression "dVar31 * dVar26 + dVar27" (binary_expression "dVar31 * dVar26" identifier * identifier) + identifier)) ;) (expression_statement "uVar4 = (undefined1)((ulonglong)dVar26 >> 0x20);" (assignment_expression "uVar4 = (undefined1)((ulonglong)dVar26 >> 0x20)" identifier = (call_expression "(undefined1)((ulonglong)dVar26 >> 0x20)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((ulonglong)dVar26 >> 0x20)" ( (binary_expression "(ulonglong)dVar26 >> 0x20" (cast_expression "(ulonglong)dVar26" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar19 = (undefined1)((ulonglong)dVar26 >> 8);" (assignment_expression "uVar19 = (undefined1)((ulonglong)dVar26 >> 8)" identifier = (call_expression "(undefined1)((ulonglong)dVar26 >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((ulonglong)dVar26 >> 8)" ( (binary_expression "(ulonglong)dVar26 >> 8" (cast_expression "(ulonglong)dVar26" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar17 = (undefined1)((ulonglong)dVar26 >> 0x10);" (assignment_expression "uVar17 = (undefined1)((ulonglong)dVar26 >> 0x10)" identifier = (call_expression "(undefined1)((ulonglong)dVar26 >> 0x10)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((ulonglong)dVar26 >> 0x10)" ( (binary_expression "(ulonglong)dVar26 >> 0x10" (cast_expression "(ulonglong)dVar26" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar7 = (undefined1)((ulonglong)dVar26 >> 0x18);" (assignment_expression "uVar7 = (undefined1)((ulonglong)dVar26 >> 0x18)" identifier = (call_expression "(undefined1)((ulonglong)dVar26 >> 0x18)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((ulonglong)dVar26 >> 0x18)" ( (binary_expression "(ulonglong)dVar26 >> 0x18" (cast_expression "(ulonglong)dVar26" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar14 = (undefined1)((ulonglong)dVar26 >> 0x28);" (assignment_expression "uVar14 = (undefined1)((ulonglong)dVar26 >> 0x28)" identifier = (call_expression "(undefined1)((ulonglong)dVar26 >> 0x28)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((ulonglong)dVar26 >> 0x28)" ( (binary_expression "(ulonglong)dVar26 >> 0x28" (cast_expression "(ulonglong)dVar26" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar11 = (undefined1)((ulonglong)dVar26 >> 0x30);" (assignment_expression "uVar11 = (undefined1)((ulonglong)dVar26 >> 0x30)" identifier = (call_expression "(undefined1)((ulonglong)dVar26 >> 0x30)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((ulonglong)dVar26 >> 0x30)" ( (binary_expression "(ulonglong)dVar26 >> 0x30" (cast_expression "(ulonglong)dVar26" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar6 = (undefined1)((ulonglong)dVar26 >> 0x38);" (assignment_expression "uVar6 = (undefined1)((ulonglong)dVar26 >> 0x38)" identifier = (call_expression "(undefined1)((ulonglong)dVar26 >> 0x38)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((ulonglong)dVar26 >> 0x38)" ( (binary_expression "(ulonglong)dVar26 >> 0x38" (cast_expression "(ulonglong)dVar26" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (EVar13 == LSBEndian) {\n                puVar22[1] = uVar11;\n                *puVar22 = uVar6;\n                puVar22[2] = uVar14;\n                puVar22[3] = uVar4;\n                puVar22[4] = uVar7;\n                puVar22[5] = uVar17;\n                puVar22[6] = uVar19;\n                puVar22[7] = SUB81(dVar26,0);\n              }\n              else {\n                *puVar22 = SUB81(dVar26,0);\n                puVar22[1] = uVar19;\n                puVar22[2] = uVar17;\n                puVar22[3] = uVar7;\n                puVar22[4] = uVar4;\n                puVar22[5] = uVar14;\n                puVar22[6] = uVar11;\n                puVar22[7] = uVar6;\n              }" if (parenthesized_expression "(EVar13 == LSBEndian)" ( (binary_expression "EVar13 == LSBEndian" identifier == identifier) )) (compound_statement "{\n                puVar22[1] = uVar11;\n                *puVar22 = uVar6;\n                puVar22[2] = uVar14;\n                puVar22[3] = uVar4;\n                puVar22[4] = uVar7;\n                puVar22[5] = uVar17;\n                puVar22[6] = uVar19;\n                puVar22[7] = SUB81(dVar26,0);\n              }" { (expression_statement "puVar22[1] = uVar11;" (assignment_expression "puVar22[1] = uVar11" (subscript_expression "puVar22[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar22 = uVar6;" (assignment_expression "*puVar22 = uVar6" (pointer_expression "*puVar22" * identifier) = identifier) ;) (expression_statement "puVar22[2] = uVar14;" (assignment_expression "puVar22[2] = uVar14" (subscript_expression "puVar22[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar22[3] = uVar4;" (assignment_expression "puVar22[3] = uVar4" (subscript_expression "puVar22[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar22[4] = uVar7;" (assignment_expression "puVar22[4] = uVar7" (subscript_expression "puVar22[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar22[5] = uVar17;" (assignment_expression "puVar22[5] = uVar17" (subscript_expression "puVar22[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar22[6] = uVar19;" (assignment_expression "puVar22[6] = uVar19" (subscript_expression "puVar22[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar22[7] = SUB81(dVar26,0);" (assignment_expression "puVar22[7] = SUB81(dVar26,0)" (subscript_expression "puVar22[7]" identifier [ number_literal ]) = (call_expression "SUB81(dVar26,0)" identifier (argument_list "(dVar26,0)" ( identifier , number_literal )))) ;) }) (else_clause "else {\n                *puVar22 = SUB81(dVar26,0);\n                puVar22[1] = uVar19;\n                puVar22[2] = uVar17;\n                puVar22[3] = uVar7;\n                puVar22[4] = uVar4;\n                puVar22[5] = uVar14;\n                puVar22[6] = uVar11;\n                puVar22[7] = uVar6;\n              }" else (compound_statement "{\n                *puVar22 = SUB81(dVar26,0);\n                puVar22[1] = uVar19;\n                puVar22[2] = uVar17;\n                puVar22[3] = uVar7;\n                puVar22[4] = uVar4;\n                puVar22[5] = uVar14;\n                puVar22[6] = uVar11;\n                puVar22[7] = uVar6;\n              }" { (expression_statement "*puVar22 = SUB81(dVar26,0);" (assignment_expression "*puVar22 = SUB81(dVar26,0)" (pointer_expression "*puVar22" * identifier) = (call_expression "SUB81(dVar26,0)" identifier (argument_list "(dVar26,0)" ( identifier , number_literal )))) ;) (expression_statement "puVar22[1] = uVar19;" (assignment_expression "puVar22[1] = uVar19" (subscript_expression "puVar22[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar22[2] = uVar17;" (assignment_expression "puVar22[2] = uVar17" (subscript_expression "puVar22[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar22[3] = uVar7;" (assignment_expression "puVar22[3] = uVar7" (subscript_expression "puVar22[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar22[4] = uVar4;" (assignment_expression "puVar22[4] = uVar4" (subscript_expression "puVar22[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar22[5] = uVar14;" (assignment_expression "puVar22[5] = uVar14" (subscript_expression "puVar22[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar22[6] = uVar11;" (assignment_expression "puVar22[6] = uVar11" (subscript_expression "puVar22[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar22[7] = uVar6;" (assignment_expression "puVar22[7] = uVar6" (subscript_expression "puVar22[7]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "puVar24 = puVar24 + 1;" (assignment_expression "puVar24 = puVar24 + 1" identifier = (binary_expression "puVar24 + 1" identifier + number_literal)) ;) (expression_statement "number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 8);" (assignment_expression "number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 8)" identifier = (call_expression "CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 8)" identifier (argument_list "(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 8)" ( (binary_expression "iVar23 + image->number_channels * 4" identifier + (binary_expression "image->number_channels * 4" (field_expression "image->number_channels" identifier -> field_identifier) * number_literal)) , (binary_expression "puVar22 + quantum_info->pad + 8" (binary_expression "puVar22 + quantum_info->pad" identifier + (field_expression "quantum_info->pad" identifier -> field_identifier)) + number_literal) )))) ;) }) while (parenthesized_expression "(puVar24 != q)" ( (binary_expression "puVar24 != q" identifier != identifier) )) ;) (return_statement "return;" return ;) })) }) (else_clause "else if (uVar25 == 0x10) {\n          if (quantum_info->format == FloatingPointQuantumFormat) {\n            if ((int)q < 1) {\n              return;\n            }\n            puVar24 = (uchar *)0x0;\n            EVar13 = LSBEndian;\n            dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              fVar30 = 0.0;\n              EVar16 = quantum_info->endian;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar30 = (float)((double)*(float *)(iVar23 + image->channel_map[5].offset * 4) *\n                                dVar27);\n              }\n              uVar3 = SinglePrecisionToHalf(fVar30);\n              uVar4 = (undefined1)(uVar3 >> 8);\n              if (EVar16 == EVar13) {\n                *puVar22 = (char)uVar3;\n                puVar22[1] = uVar4;\n              }\n              else {\n                *puVar22 = uVar4;\n                puVar22[1] = (char)uVar3;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2);\n            } while (puVar24 != q);\n            return;\n          }\n          if ((int)q < 1) {\n            return;\n          }\n          puVar24 = (uchar *)0x0;\n          fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            iVar23 = (int)(number_pixels >> 0x20);\n            puVar22 = (undefined1 *)number_pixels;\n            uVar6 = 0;\n            uVar4 = 0;\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar28 < fVar30) {\n                uVar29 = (undefined2)(int)fVar28;\n              }\n              else {\n                uVar29 = (undefined2)(int)(fVar28 - fVar30);\n              }\n              uVar4 = (undefined1)((ushort)uVar29 >> 8);\n              uVar6 = (undefined1)uVar29;\n            }\n            if (quantum_info->endian == LSBEndian) {\n              *puVar22 = uVar6;\n              puVar22[1] = uVar4;\n            }\n            else {\n              *puVar22 = uVar4;\n              puVar22[1] = uVar6;\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2);\n          } while (puVar24 != q);\n          return;\n        }" else (if_statement "if (uVar25 == 0x10) {\n          if (quantum_info->format == FloatingPointQuantumFormat) {\n            if ((int)q < 1) {\n              return;\n            }\n            puVar24 = (uchar *)0x0;\n            EVar13 = LSBEndian;\n            dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              fVar30 = 0.0;\n              EVar16 = quantum_info->endian;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar30 = (float)((double)*(float *)(iVar23 + image->channel_map[5].offset * 4) *\n                                dVar27);\n              }\n              uVar3 = SinglePrecisionToHalf(fVar30);\n              uVar4 = (undefined1)(uVar3 >> 8);\n              if (EVar16 == EVar13) {\n                *puVar22 = (char)uVar3;\n                puVar22[1] = uVar4;\n              }\n              else {\n                *puVar22 = uVar4;\n                puVar22[1] = (char)uVar3;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2);\n            } while (puVar24 != q);\n            return;\n          }\n          if ((int)q < 1) {\n            return;\n          }\n          puVar24 = (uchar *)0x0;\n          fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            iVar23 = (int)(number_pixels >> 0x20);\n            puVar22 = (undefined1 *)number_pixels;\n            uVar6 = 0;\n            uVar4 = 0;\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar28 < fVar30) {\n                uVar29 = (undefined2)(int)fVar28;\n              }\n              else {\n                uVar29 = (undefined2)(int)(fVar28 - fVar30);\n              }\n              uVar4 = (undefined1)((ushort)uVar29 >> 8);\n              uVar6 = (undefined1)uVar29;\n            }\n            if (quantum_info->endian == LSBEndian) {\n              *puVar22 = uVar6;\n              puVar22[1] = uVar4;\n            }\n            else {\n              *puVar22 = uVar4;\n              puVar22[1] = uVar6;\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2);\n          } while (puVar24 != q);\n          return;\n        }" if (parenthesized_expression "(uVar25 == 0x10)" ( (binary_expression "uVar25 == 0x10" identifier == number_literal) )) (compound_statement "{\n          if (quantum_info->format == FloatingPointQuantumFormat) {\n            if ((int)q < 1) {\n              return;\n            }\n            puVar24 = (uchar *)0x0;\n            EVar13 = LSBEndian;\n            dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              fVar30 = 0.0;\n              EVar16 = quantum_info->endian;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar30 = (float)((double)*(float *)(iVar23 + image->channel_map[5].offset * 4) *\n                                dVar27);\n              }\n              uVar3 = SinglePrecisionToHalf(fVar30);\n              uVar4 = (undefined1)(uVar3 >> 8);\n              if (EVar16 == EVar13) {\n                *puVar22 = (char)uVar3;\n                puVar22[1] = uVar4;\n              }\n              else {\n                *puVar22 = uVar4;\n                puVar22[1] = (char)uVar3;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2);\n            } while (puVar24 != q);\n            return;\n          }\n          if ((int)q < 1) {\n            return;\n          }\n          puVar24 = (uchar *)0x0;\n          fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            iVar23 = (int)(number_pixels >> 0x20);\n            puVar22 = (undefined1 *)number_pixels;\n            uVar6 = 0;\n            uVar4 = 0;\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar28 < fVar30) {\n                uVar29 = (undefined2)(int)fVar28;\n              }\n              else {\n                uVar29 = (undefined2)(int)(fVar28 - fVar30);\n              }\n              uVar4 = (undefined1)((ushort)uVar29 >> 8);\n              uVar6 = (undefined1)uVar29;\n            }\n            if (quantum_info->endian == LSBEndian) {\n              *puVar22 = uVar6;\n              puVar22[1] = uVar4;\n            }\n            else {\n              *puVar22 = uVar4;\n              puVar22[1] = uVar6;\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2);\n          } while (puVar24 != q);\n          return;\n        }" { (if_statement "if (quantum_info->format == FloatingPointQuantumFormat) {\n            if ((int)q < 1) {\n              return;\n            }\n            puVar24 = (uchar *)0x0;\n            EVar13 = LSBEndian;\n            dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              fVar30 = 0.0;\n              EVar16 = quantum_info->endian;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar30 = (float)((double)*(float *)(iVar23 + image->channel_map[5].offset * 4) *\n                                dVar27);\n              }\n              uVar3 = SinglePrecisionToHalf(fVar30);\n              uVar4 = (undefined1)(uVar3 >> 8);\n              if (EVar16 == EVar13) {\n                *puVar22 = (char)uVar3;\n                puVar22[1] = uVar4;\n              }\n              else {\n                *puVar22 = uVar4;\n                puVar22[1] = (char)uVar3;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2);\n            } while (puVar24 != q);\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 ((int)q < 1) {\n              return;\n            }\n            puVar24 = (uchar *)0x0;\n            EVar13 = LSBEndian;\n            dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              fVar30 = 0.0;\n              EVar16 = quantum_info->endian;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar30 = (float)((double)*(float *)(iVar23 + image->channel_map[5].offset * 4) *\n                                dVar27);\n              }\n              uVar3 = SinglePrecisionToHalf(fVar30);\n              uVar4 = (undefined1)(uVar3 >> 8);\n              if (EVar16 == EVar13) {\n                *puVar22 = (char)uVar3;\n                puVar22[1] = uVar4;\n              }\n              else {\n                *puVar22 = uVar4;\n                puVar22[1] = (char)uVar3;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2);\n            } while (puVar24 != q);\n            return;\n          }" { (if_statement "if ((int)q < 1) {\n              return;\n            }" if (parenthesized_expression "((int)q < 1)" ( (binary_expression "(int)q < 1" (cast_expression "(int)q" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n              return;\n            }" { (return_statement "return;" return ;) })) (expression_statement "puVar24 = (uchar *)0x0;" (assignment_expression "puVar24 = (uchar *)0x0" identifier = (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "EVar13 = LSBEndian;" (assignment_expression "EVar13 = LSBEndian" identifier = identifier) ;) (expression_statement "dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1440);" (assignment_expression "dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1440)" identifier = (pointer_expression "*(double *)(PTR_LAB_003a88e0 + 0x1440)" * (cast_expression "(double *)(PTR_LAB_003a88e0 + 0x1440)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_003a88e0 + 0x1440)" ( (binary_expression "PTR_LAB_003a88e0 + 0x1440" identifier + number_literal) ))))) ;) (do_statement "do {\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              fVar30 = 0.0;\n              EVar16 = quantum_info->endian;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar30 = (float)((double)*(float *)(iVar23 + image->channel_map[5].offset * 4) *\n                                dVar27);\n              }\n              uVar3 = SinglePrecisionToHalf(fVar30);\n              uVar4 = (undefined1)(uVar3 >> 8);\n              if (EVar16 == EVar13) {\n                *puVar22 = (char)uVar3;\n                puVar22[1] = uVar4;\n              }\n              else {\n                *puVar22 = uVar4;\n                puVar22[1] = (char)uVar3;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2);\n            } while (puVar24 != q);" do (compound_statement "{\n              iVar23 = (int)(number_pixels >> 0x20);\n              puVar22 = (undefined1 *)number_pixels;\n              fVar30 = 0.0;\n              EVar16 = quantum_info->endian;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar30 = (float)((double)*(float *)(iVar23 + image->channel_map[5].offset * 4) *\n                                dVar27);\n              }\n              uVar3 = SinglePrecisionToHalf(fVar30);\n              uVar4 = (undefined1)(uVar3 >> 8);\n              if (EVar16 == EVar13) {\n                *puVar22 = (char)uVar3;\n                puVar22[1] = uVar4;\n              }\n              else {\n                *puVar22 = uVar4;\n                puVar22[1] = (char)uVar3;\n              }\n              puVar24 = puVar24 + 1;\n              number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2);\n            }" { (expression_statement "iVar23 = (int)(number_pixels >> 0x20);" (assignment_expression "iVar23 = (int)(number_pixels >> 0x20)" identifier = (cast_expression "(int)(number_pixels >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(number_pixels >> 0x20)" ( (binary_expression "number_pixels >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "puVar22 = (undefined1 *)number_pixels;" (assignment_expression "puVar22 = (undefined1 *)number_pixels" identifier = (cast_expression "(undefined1 *)number_pixels" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "fVar30 = 0.0;" (assignment_expression "fVar30 = 0.0" identifier = number_literal) ;) (expression_statement "EVar16 = quantum_info->endian;" (assignment_expression "EVar16 = quantum_info->endian" identifier = (field_expression "quantum_info->endian" identifier -> field_identifier)) ;) (if_statement "if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                fVar30 = (float)((double)*(float *)(iVar23 + image->channel_map[5].offset * 4) *\n                                dVar27);\n              }" if (parenthesized_expression "(image->channel_map[5].traits != UndefinedPixelTrait)" ( (binary_expression "image->channel_map[5].traits != UndefinedPixelTrait" (field_expression "image->channel_map[5].traits" (subscript_expression "image->channel_map[5]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) != identifier) )) (compound_statement "{\n                fVar30 = (float)((double)*(float *)(iVar23 + image->channel_map[5].offset * 4) *\n                                dVar27);\n              }" { (expression_statement "fVar30 = (float)((double)*(float *)(iVar23 + image->channel_map[5].offset * 4) *\n                                dVar27);" (assignment_expression "fVar30 = (float)((double)*(float *)(iVar23 + image->channel_map[5].offset * 4) *\n                                dVar27)" identifier = (cast_expression "(float)((double)*(float *)(iVar23 + image->channel_map[5].offset * 4) *\n                                dVar27)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((double)*(float *)(iVar23 + image->channel_map[5].offset * 4) *\n                                dVar27)" ( (binary_expression "(double)*(float *)(iVar23 + image->channel_map[5].offset * 4) *\n                                dVar27" (cast_expression "(double)*(float *)(iVar23 + image->channel_map[5].offset * 4)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(iVar23 + image->channel_map[5].offset * 4)" * (cast_expression "(float *)(iVar23 + image->channel_map[5].offset * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + image->channel_map[5].offset * 4)" ( (binary_expression "iVar23 + image->channel_map[5].offset * 4" identifier + (binary_expression "image->channel_map[5].offset * 4" (field_expression "image->channel_map[5].offset" (subscript_expression "image->channel_map[5]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) * number_literal)) ))))) * identifier) )))) ;) })) (expression_statement "uVar3 = SinglePrecisionToHalf(fVar30);" (assignment_expression "uVar3 = SinglePrecisionToHalf(fVar30)" identifier = (call_expression "SinglePrecisionToHalf(fVar30)" identifier (argument_list "(fVar30)" ( identifier )))) ;) (expression_statement "uVar4 = (undefined1)(uVar3 >> 8);" (assignment_expression "uVar4 = (undefined1)(uVar3 >> 8)" identifier = (call_expression "(undefined1)(uVar3 >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "(uVar3 >> 8)" ( (binary_expression "uVar3 >> 8" identifier >> number_literal) )))) ;) (if_statement "if (EVar16 == EVar13) {\n                *puVar22 = (char)uVar3;\n                puVar22[1] = uVar4;\n              }\n              else {\n                *puVar22 = uVar4;\n                puVar22[1] = (char)uVar3;\n              }" if (parenthesized_expression "(EVar16 == EVar13)" ( (binary_expression "EVar16 == EVar13" identifier == identifier) )) (compound_statement "{\n                *puVar22 = (char)uVar3;\n                puVar22[1] = uVar4;\n              }" { (expression_statement "*puVar22 = (char)uVar3;" (assignment_expression "*puVar22 = (char)uVar3" (pointer_expression "*puVar22" * identifier) = (cast_expression "(char)uVar3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "puVar22[1] = uVar4;" (assignment_expression "puVar22[1] = uVar4" (subscript_expression "puVar22[1]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n                *puVar22 = uVar4;\n                puVar22[1] = (char)uVar3;\n              }" else (compound_statement "{\n                *puVar22 = uVar4;\n                puVar22[1] = (char)uVar3;\n              }" { (expression_statement "*puVar22 = uVar4;" (assignment_expression "*puVar22 = uVar4" (pointer_expression "*puVar22" * identifier) = identifier) ;) (expression_statement "puVar22[1] = (char)uVar3;" (assignment_expression "puVar22[1] = (char)uVar3" (subscript_expression "puVar22[1]" identifier [ number_literal ]) = (cast_expression "(char)uVar3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) }))) (expression_statement "puVar24 = puVar24 + 1;" (assignment_expression "puVar24 = puVar24 + 1" identifier = (binary_expression "puVar24 + 1" identifier + number_literal)) ;) (expression_statement "number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2);" (assignment_expression "number_pixels =\n                   CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2)" identifier = (call_expression "CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2)" identifier (argument_list "(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2)" ( (binary_expression "iVar23 + image->number_channels * 4" identifier + (binary_expression "image->number_channels * 4" (field_expression "image->number_channels" identifier -> field_identifier) * number_literal)) , (binary_expression "puVar22 + quantum_info->pad + 2" (binary_expression "puVar22 + quantum_info->pad" identifier + (field_expression "quantum_info->pad" identifier -> field_identifier)) + number_literal) )))) ;) }) while (parenthesized_expression "(puVar24 != q)" ( (binary_expression "puVar24 != q" identifier != identifier) )) ;) (return_statement "return;" return ;) })) (if_statement "if ((int)q < 1) {\n            return;\n          }" if (parenthesized_expression "((int)q < 1)" ( (binary_expression "(int)q < 1" (cast_expression "(int)q" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) (expression_statement "puVar24 = (uchar *)0x0;" (assignment_expression "puVar24 = (uchar *)0x0" identifier = (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);" (assignment_expression "fVar30 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" identifier = (pointer_expression "*(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" * (cast_expression "(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (binary_expression "PTR_s_t_to_left_003a88e4 + -0x51e0" identifier + number_literal) ))))) ;) (do_statement "do {\n            iVar23 = (int)(number_pixels >> 0x20);\n            puVar22 = (undefined1 *)number_pixels;\n            uVar6 = 0;\n            uVar4 = 0;\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar28 < fVar30) {\n                uVar29 = (undefined2)(int)fVar28;\n              }\n              else {\n                uVar29 = (undefined2)(int)(fVar28 - fVar30);\n              }\n              uVar4 = (undefined1)((ushort)uVar29 >> 8);\n              uVar6 = (undefined1)uVar29;\n            }\n            if (quantum_info->endian == LSBEndian) {\n              *puVar22 = uVar6;\n              puVar22[1] = uVar4;\n            }\n            else {\n              *puVar22 = uVar4;\n              puVar22[1] = uVar6;\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2);\n          } while (puVar24 != q);" do (compound_statement "{\n            iVar23 = (int)(number_pixels >> 0x20);\n            puVar22 = (undefined1 *)number_pixels;\n            uVar6 = 0;\n            uVar4 = 0;\n            if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar28 < fVar30) {\n                uVar29 = (undefined2)(int)fVar28;\n              }\n              else {\n                uVar29 = (undefined2)(int)(fVar28 - fVar30);\n              }\n              uVar4 = (undefined1)((ushort)uVar29 >> 8);\n              uVar6 = (undefined1)uVar29;\n            }\n            if (quantum_info->endian == LSBEndian) {\n              *puVar22 = uVar6;\n              puVar22[1] = uVar4;\n            }\n            else {\n              *puVar22 = uVar4;\n              puVar22[1] = uVar6;\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2);\n          }" { (expression_statement "iVar23 = (int)(number_pixels >> 0x20);" (assignment_expression "iVar23 = (int)(number_pixels >> 0x20)" identifier = (cast_expression "(int)(number_pixels >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(number_pixels >> 0x20)" ( (binary_expression "number_pixels >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "puVar22 = (undefined1 *)number_pixels;" (assignment_expression "puVar22 = (undefined1 *)number_pixels" identifier = (cast_expression "(undefined1 *)number_pixels" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if (image->channel_map[5].traits != UndefinedPixelTrait) {\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar28 < fVar30) {\n                uVar29 = (undefined2)(int)fVar28;\n              }\n              else {\n                uVar29 = (undefined2)(int)(fVar28 - fVar30);\n              }\n              uVar4 = (undefined1)((ushort)uVar29 >> 8);\n              uVar6 = (undefined1)uVar29;\n            }" if (parenthesized_expression "(image->channel_map[5].traits != UndefinedPixelTrait)" ( (binary_expression "image->channel_map[5].traits != UndefinedPixelTrait" (field_expression "image->channel_map[5].traits" (subscript_expression "image->channel_map[5]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) != identifier) )) (compound_statement "{\n              fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);\n              if (fVar28 < fVar30) {\n                uVar29 = (undefined2)(int)fVar28;\n              }\n              else {\n                uVar29 = (undefined2)(int)(fVar28 - fVar30);\n              }\n              uVar4 = (undefined1)((ushort)uVar29 >> 8);\n              uVar6 = (undefined1)uVar29;\n            }" { (expression_statement "fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4);" (assignment_expression "fVar28 = *(float *)(iVar23 + image->channel_map[5].offset * 4)" identifier = (pointer_expression "*(float *)(iVar23 + image->channel_map[5].offset * 4)" * (cast_expression "(float *)(iVar23 + image->channel_map[5].offset * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + image->channel_map[5].offset * 4)" ( (binary_expression "iVar23 + image->channel_map[5].offset * 4" identifier + (binary_expression "image->channel_map[5].offset * 4" (field_expression "image->channel_map[5].offset" (subscript_expression "image->channel_map[5]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) * number_literal)) ))))) ;) (if_statement "if (fVar28 < fVar30) {\n                uVar29 = (undefined2)(int)fVar28;\n              }\n              else {\n                uVar29 = (undefined2)(int)(fVar28 - fVar30);\n              }" if (parenthesized_expression "(fVar28 < fVar30)" ( (binary_expression "fVar28 < fVar30" identifier < identifier) )) (compound_statement "{\n                uVar29 = (undefined2)(int)fVar28;\n              }" { (expression_statement "uVar29 = (undefined2)(int)fVar28;" (assignment_expression "uVar29 = (undefined2)(int)fVar28" identifier = (cast_expression "(undefined2)(int)fVar28" ( (type_descriptor "undefined2" type_identifier) ) (cast_expression "(int)fVar28" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }) (else_clause "else {\n                uVar29 = (undefined2)(int)(fVar28 - fVar30);\n              }" else (compound_statement "{\n                uVar29 = (undefined2)(int)(fVar28 - fVar30);\n              }" { (expression_statement "uVar29 = (undefined2)(int)(fVar28 - fVar30);" (assignment_expression "uVar29 = (undefined2)(int)(fVar28 - fVar30)" identifier = (call_expression "(undefined2)(int)(fVar28 - fVar30)" (call_expression "(undefined2)(int)" (parenthesized_expression "(undefined2)" ( identifier )) (argument_list "(int)" ( identifier ))) (argument_list "(fVar28 - fVar30)" ( (binary_expression "fVar28 - fVar30" identifier - identifier) )))) ;) }))) (expression_statement "uVar4 = (undefined1)((ushort)uVar29 >> 8);" (assignment_expression "uVar4 = (undefined1)((ushort)uVar29 >> 8)" identifier = (call_expression "(undefined1)((ushort)uVar29 >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((ushort)uVar29 >> 8)" ( (binary_expression "(ushort)uVar29 >> 8" (cast_expression "(ushort)uVar29" ( (type_descriptor "ushort" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar6 = (undefined1)uVar29;" (assignment_expression "uVar6 = (undefined1)uVar29" identifier = (cast_expression "(undefined1)uVar29" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) })) (if_statement "if (quantum_info->endian == LSBEndian) {\n              *puVar22 = uVar6;\n              puVar22[1] = uVar4;\n            }\n            else {\n              *puVar22 = uVar4;\n              puVar22[1] = uVar6;\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              *puVar22 = uVar6;\n              puVar22[1] = uVar4;\n            }" { (expression_statement "*puVar22 = uVar6;" (assignment_expression "*puVar22 = uVar6" (pointer_expression "*puVar22" * identifier) = identifier) ;) (expression_statement "puVar22[1] = uVar4;" (assignment_expression "puVar22[1] = uVar4" (subscript_expression "puVar22[1]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n              *puVar22 = uVar4;\n              puVar22[1] = uVar6;\n            }" else (compound_statement "{\n              *puVar22 = uVar4;\n              puVar22[1] = uVar6;\n            }" { (expression_statement "*puVar22 = uVar4;" (assignment_expression "*puVar22 = uVar4" (pointer_expression "*puVar22" * identifier) = identifier) ;) (expression_statement "puVar22[1] = uVar6;" (assignment_expression "puVar22[1] = uVar6" (subscript_expression "puVar22[1]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "puVar24 = puVar24 + 1;" (assignment_expression "puVar24 = puVar24 + 1" identifier = (binary_expression "puVar24 + 1" identifier + number_literal)) ;) (expression_statement "number_pixels =\n                 CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2);" (assignment_expression "number_pixels =\n                 CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2)" identifier = (call_expression "CONCAT44(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2)" identifier (argument_list "(iVar23 + image->number_channels * 4,puVar22 + quantum_info->pad + 2)" ( (binary_expression "iVar23 + image->number_channels * 4" identifier + (binary_expression "image->number_channels * 4" (field_expression "image->number_channels" identifier -> field_identifier) * number_literal)) , (binary_expression "puVar22 + quantum_info->pad + 2" (binary_expression "puVar22 + quantum_info->pad" identifier + (field_expression "quantum_info->pad" identifier -> field_identifier)) + number_literal) )))) ;) }) while (parenthesized_expression "(puVar24 != q)" ( (binary_expression "puVar24 != q" identifier != identifier) )) ;) (return_statement "return;" return ;) })))) }))) (expression_statement "puVar24 = (uchar *)0x0;" (assignment_expression "puVar24 = (uchar *)0x0" identifier = (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (0 < (int)q) {\n        pPVar2 = image->channel_map;\n        if (pPVar2[5].traits == UndefinedPixelTrait) goto LAB_001574b0;\n        do {\n          uVar32 = (*(code *)PTR___fixunssfdi_003a8a80)\n                             (*(undefined4 *)((int)(number_pixels >> 0x20) + pPVar2[5].offset * 4));\n          while( true ) {\n            uVar10 = (uint)((ulonglong)uVar32 >> 0x20);\n            pbVar20 = (byte *)number_pixels;\n            if ((quantum_info->state).bits == 0) {\n              (quantum_info->state).bits = 8;\n            }\n            if (0 < (int)uVar25) {\n              do {\n                uVar15 = (quantum_info->state).bits;\n                uVar9 = uVar15;\n                if (uVar25 <= uVar15) {\n                  uVar9 = uVar25;\n                }\n                uVar12 = uVar25 - uVar9;\n                uVar18 = uVar15 - uVar9;\n                uVar25 = uVar12;\n                if ((int)uVar12 < 0) {\n                  uVar25 = 0;\n                }\n                if (uVar15 == 8) {\n                  *pbVar20 = 0;\n                }\n                (quantum_info->state).bits = uVar18;\n                uVar15 = (uVar10 << 1) << (~uVar25 & 0x1f) | (uint)uVar32 >> (uVar25 & 0x1f);\n                if ((uVar25 & 0x20) != 0) {\n                  uVar15 = uVar10 >> (uVar25 & 0x1f);\n                }\n                bVar5 = (byte)((~(-1 << (uVar9 & 0x1f)) & uVar15) << (uVar18 & 0x1f));\n                if ((uVar18 & 0x20) != 0) {\n                  bVar5 = 0;\n                }\n                *pbVar20 = bVar5 | *pbVar20;\n                if (uVar18 == 0) {\n                  pbVar20 = pbVar20 + 1;\n                  (quantum_info->state).bits = 8;\n                }\n              } while (0 < (int)uVar12);\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44((int)(number_pixels >> 0x20) + image->number_channels * 4,\n                          pbVar20 + quantum_info->pad);\n            if (puVar24 == q) {\n              return;\n            }\n            pPVar2 = image->channel_map;\n            uVar25 = quantum_info->depth;\n            if (pPVar2[5].traits != UndefinedPixelTrait) break;\nLAB_001574b0:\n            uVar32 = 0;\n          }\n        } while( true );\n      }" if (parenthesized_expression "(0 < (int)q)" ( (binary_expression "0 < (int)q" number_literal < (cast_expression "(int)q" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        pPVar2 = image->channel_map;\n        if (pPVar2[5].traits == UndefinedPixelTrait) goto LAB_001574b0;\n        do {\n          uVar32 = (*(code *)PTR___fixunssfdi_003a8a80)\n                             (*(undefined4 *)((int)(number_pixels >> 0x20) + pPVar2[5].offset * 4));\n          while( true ) {\n            uVar10 = (uint)((ulonglong)uVar32 >> 0x20);\n            pbVar20 = (byte *)number_pixels;\n            if ((quantum_info->state).bits == 0) {\n              (quantum_info->state).bits = 8;\n            }\n            if (0 < (int)uVar25) {\n              do {\n                uVar15 = (quantum_info->state).bits;\n                uVar9 = uVar15;\n                if (uVar25 <= uVar15) {\n                  uVar9 = uVar25;\n                }\n                uVar12 = uVar25 - uVar9;\n                uVar18 = uVar15 - uVar9;\n                uVar25 = uVar12;\n                if ((int)uVar12 < 0) {\n                  uVar25 = 0;\n                }\n                if (uVar15 == 8) {\n                  *pbVar20 = 0;\n                }\n                (quantum_info->state).bits = uVar18;\n                uVar15 = (uVar10 << 1) << (~uVar25 & 0x1f) | (uint)uVar32 >> (uVar25 & 0x1f);\n                if ((uVar25 & 0x20) != 0) {\n                  uVar15 = uVar10 >> (uVar25 & 0x1f);\n                }\n                bVar5 = (byte)((~(-1 << (uVar9 & 0x1f)) & uVar15) << (uVar18 & 0x1f));\n                if ((uVar18 & 0x20) != 0) {\n                  bVar5 = 0;\n                }\n                *pbVar20 = bVar5 | *pbVar20;\n                if (uVar18 == 0) {\n                  pbVar20 = pbVar20 + 1;\n                  (quantum_info->state).bits = 8;\n                }\n              } while (0 < (int)uVar12);\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44((int)(number_pixels >> 0x20) + image->number_channels * 4,\n                          pbVar20 + quantum_info->pad);\n            if (puVar24 == q) {\n              return;\n            }\n            pPVar2 = image->channel_map;\n            uVar25 = quantum_info->depth;\n            if (pPVar2[5].traits != UndefinedPixelTrait) break;\nLAB_001574b0:\n            uVar32 = 0;\n          }\n        } while( true );\n      }" { (expression_statement "pPVar2 = image->channel_map;" (assignment_expression "pPVar2 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) (if_statement "if (pPVar2[5].traits == UndefinedPixelTrait) goto LAB_001574b0;" if (parenthesized_expression "(pPVar2[5].traits == UndefinedPixelTrait)" ( (binary_expression "pPVar2[5].traits == UndefinedPixelTrait" (field_expression "pPVar2[5].traits" (subscript_expression "pPVar2[5]" identifier [ number_literal ]) . field_identifier) == identifier) )) (goto_statement "goto LAB_001574b0;" goto statement_identifier ;)) (do_statement "do {\n          uVar32 = (*(code *)PTR___fixunssfdi_003a8a80)\n                             (*(undefined4 *)((int)(number_pixels >> 0x20) + pPVar2[5].offset * 4));\n          while( true ) {\n            uVar10 = (uint)((ulonglong)uVar32 >> 0x20);\n            pbVar20 = (byte *)number_pixels;\n            if ((quantum_info->state).bits == 0) {\n              (quantum_info->state).bits = 8;\n            }\n            if (0 < (int)uVar25) {\n              do {\n                uVar15 = (quantum_info->state).bits;\n                uVar9 = uVar15;\n                if (uVar25 <= uVar15) {\n                  uVar9 = uVar25;\n                }\n                uVar12 = uVar25 - uVar9;\n                uVar18 = uVar15 - uVar9;\n                uVar25 = uVar12;\n                if ((int)uVar12 < 0) {\n                  uVar25 = 0;\n                }\n                if (uVar15 == 8) {\n                  *pbVar20 = 0;\n                }\n                (quantum_info->state).bits = uVar18;\n                uVar15 = (uVar10 << 1) << (~uVar25 & 0x1f) | (uint)uVar32 >> (uVar25 & 0x1f);\n                if ((uVar25 & 0x20) != 0) {\n                  uVar15 = uVar10 >> (uVar25 & 0x1f);\n                }\n                bVar5 = (byte)((~(-1 << (uVar9 & 0x1f)) & uVar15) << (uVar18 & 0x1f));\n                if ((uVar18 & 0x20) != 0) {\n                  bVar5 = 0;\n                }\n                *pbVar20 = bVar5 | *pbVar20;\n                if (uVar18 == 0) {\n                  pbVar20 = pbVar20 + 1;\n                  (quantum_info->state).bits = 8;\n                }\n              } while (0 < (int)uVar12);\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44((int)(number_pixels >> 0x20) + image->number_channels * 4,\n                          pbVar20 + quantum_info->pad);\n            if (puVar24 == q) {\n              return;\n            }\n            pPVar2 = image->channel_map;\n            uVar25 = quantum_info->depth;\n            if (pPVar2[5].traits != UndefinedPixelTrait) break;\nLAB_001574b0:\n            uVar32 = 0;\n          }\n        } while( true );" do (compound_statement "{\n          uVar32 = (*(code *)PTR___fixunssfdi_003a8a80)\n                             (*(undefined4 *)((int)(number_pixels >> 0x20) + pPVar2[5].offset * 4));\n          while( true ) {\n            uVar10 = (uint)((ulonglong)uVar32 >> 0x20);\n            pbVar20 = (byte *)number_pixels;\n            if ((quantum_info->state).bits == 0) {\n              (quantum_info->state).bits = 8;\n            }\n            if (0 < (int)uVar25) {\n              do {\n                uVar15 = (quantum_info->state).bits;\n                uVar9 = uVar15;\n                if (uVar25 <= uVar15) {\n                  uVar9 = uVar25;\n                }\n                uVar12 = uVar25 - uVar9;\n                uVar18 = uVar15 - uVar9;\n                uVar25 = uVar12;\n                if ((int)uVar12 < 0) {\n                  uVar25 = 0;\n                }\n                if (uVar15 == 8) {\n                  *pbVar20 = 0;\n                }\n                (quantum_info->state).bits = uVar18;\n                uVar15 = (uVar10 << 1) << (~uVar25 & 0x1f) | (uint)uVar32 >> (uVar25 & 0x1f);\n                if ((uVar25 & 0x20) != 0) {\n                  uVar15 = uVar10 >> (uVar25 & 0x1f);\n                }\n                bVar5 = (byte)((~(-1 << (uVar9 & 0x1f)) & uVar15) << (uVar18 & 0x1f));\n                if ((uVar18 & 0x20) != 0) {\n                  bVar5 = 0;\n                }\n                *pbVar20 = bVar5 | *pbVar20;\n                if (uVar18 == 0) {\n                  pbVar20 = pbVar20 + 1;\n                  (quantum_info->state).bits = 8;\n                }\n              } while (0 < (int)uVar12);\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44((int)(number_pixels >> 0x20) + image->number_channels * 4,\n                          pbVar20 + quantum_info->pad);\n            if (puVar24 == q) {\n              return;\n            }\n            pPVar2 = image->channel_map;\n            uVar25 = quantum_info->depth;\n            if (pPVar2[5].traits != UndefinedPixelTrait) break;\nLAB_001574b0:\n            uVar32 = 0;\n          }\n        }" { (expression_statement "uVar32 = (*(code *)PTR___fixunssfdi_003a8a80)\n                             (*(undefined4 *)((int)(number_pixels >> 0x20) + pPVar2[5].offset * 4));" (assignment_expression "uVar32 = (*(code *)PTR___fixunssfdi_003a8a80)\n                             (*(undefined4 *)((int)(number_pixels >> 0x20) + pPVar2[5].offset * 4))" identifier = (call_expression "(*(code *)PTR___fixunssfdi_003a8a80)\n                             (*(undefined4 *)((int)(number_pixels >> 0x20) + pPVar2[5].offset * 4))" (parenthesized_expression "(*(code *)PTR___fixunssfdi_003a8a80)" ( (pointer_expression "*(code *)PTR___fixunssfdi_003a8a80" * (cast_expression "(code *)PTR___fixunssfdi_003a8a80" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)((int)(number_pixels >> 0x20) + pPVar2[5].offset * 4))" ( (pointer_expression "*(undefined4 *)((int)(number_pixels >> 0x20) + pPVar2[5].offset * 4)" * (cast_expression "(undefined4 *)((int)(number_pixels >> 0x20) + pPVar2[5].offset * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)(number_pixels >> 0x20) + pPVar2[5].offset * 4)" ( (binary_expression "(int)(number_pixels >> 0x20) + pPVar2[5].offset * 4" (cast_expression "(int)(number_pixels >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(number_pixels >> 0x20)" ( (binary_expression "number_pixels >> 0x20" identifier >> number_literal) ))) + (binary_expression "pPVar2[5].offset * 4" (field_expression "pPVar2[5].offset" (subscript_expression "pPVar2[5]" identifier [ number_literal ]) . field_identifier) * number_literal)) )))) )))) ;) (while_statement "while( true ) {\n            uVar10 = (uint)((ulonglong)uVar32 >> 0x20);\n            pbVar20 = (byte *)number_pixels;\n            if ((quantum_info->state).bits == 0) {\n              (quantum_info->state).bits = 8;\n            }\n            if (0 < (int)uVar25) {\n              do {\n                uVar15 = (quantum_info->state).bits;\n                uVar9 = uVar15;\n                if (uVar25 <= uVar15) {\n                  uVar9 = uVar25;\n                }\n                uVar12 = uVar25 - uVar9;\n                uVar18 = uVar15 - uVar9;\n                uVar25 = uVar12;\n                if ((int)uVar12 < 0) {\n                  uVar25 = 0;\n                }\n                if (uVar15 == 8) {\n                  *pbVar20 = 0;\n                }\n                (quantum_info->state).bits = uVar18;\n                uVar15 = (uVar10 << 1) << (~uVar25 & 0x1f) | (uint)uVar32 >> (uVar25 & 0x1f);\n                if ((uVar25 & 0x20) != 0) {\n                  uVar15 = uVar10 >> (uVar25 & 0x1f);\n                }\n                bVar5 = (byte)((~(-1 << (uVar9 & 0x1f)) & uVar15) << (uVar18 & 0x1f));\n                if ((uVar18 & 0x20) != 0) {\n                  bVar5 = 0;\n                }\n                *pbVar20 = bVar5 | *pbVar20;\n                if (uVar18 == 0) {\n                  pbVar20 = pbVar20 + 1;\n                  (quantum_info->state).bits = 8;\n                }\n              } while (0 < (int)uVar12);\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44((int)(number_pixels >> 0x20) + image->number_channels * 4,\n                          pbVar20 + quantum_info->pad);\n            if (puVar24 == q) {\n              return;\n            }\n            pPVar2 = image->channel_map;\n            uVar25 = quantum_info->depth;\n            if (pPVar2[5].traits != UndefinedPixelTrait) break;\nLAB_001574b0:\n            uVar32 = 0;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            uVar10 = (uint)((ulonglong)uVar32 >> 0x20);\n            pbVar20 = (byte *)number_pixels;\n            if ((quantum_info->state).bits == 0) {\n              (quantum_info->state).bits = 8;\n            }\n            if (0 < (int)uVar25) {\n              do {\n                uVar15 = (quantum_info->state).bits;\n                uVar9 = uVar15;\n                if (uVar25 <= uVar15) {\n                  uVar9 = uVar25;\n                }\n                uVar12 = uVar25 - uVar9;\n                uVar18 = uVar15 - uVar9;\n                uVar25 = uVar12;\n                if ((int)uVar12 < 0) {\n                  uVar25 = 0;\n                }\n                if (uVar15 == 8) {\n                  *pbVar20 = 0;\n                }\n                (quantum_info->state).bits = uVar18;\n                uVar15 = (uVar10 << 1) << (~uVar25 & 0x1f) | (uint)uVar32 >> (uVar25 & 0x1f);\n                if ((uVar25 & 0x20) != 0) {\n                  uVar15 = uVar10 >> (uVar25 & 0x1f);\n                }\n                bVar5 = (byte)((~(-1 << (uVar9 & 0x1f)) & uVar15) << (uVar18 & 0x1f));\n                if ((uVar18 & 0x20) != 0) {\n                  bVar5 = 0;\n                }\n                *pbVar20 = bVar5 | *pbVar20;\n                if (uVar18 == 0) {\n                  pbVar20 = pbVar20 + 1;\n                  (quantum_info->state).bits = 8;\n                }\n              } while (0 < (int)uVar12);\n            }\n            puVar24 = puVar24 + 1;\n            number_pixels =\n                 CONCAT44((int)(number_pixels >> 0x20) + image->number_channels * 4,\n                          pbVar20 + quantum_info->pad);\n            if (puVar24 == q) {\n              return;\n            }\n            pPVar2 = image->channel_map;\n            uVar25 = quantum_info->depth;\n            if (pPVar2[5].traits != UndefinedPixelTrait) break;\nLAB_001574b0:\n            uVar32 = 0;\n          }" { (expression_statement "uVar10 = (uint)((ulonglong)uVar32 >> 0x20);" (assignment_expression "uVar10 = (uint)((ulonglong)uVar32 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)uVar32 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)uVar32 >> 0x20)" ( (binary_expression "(ulonglong)uVar32 >> 0x20" (cast_expression "(ulonglong)uVar32" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "pbVar20 = (byte *)number_pixels;" (assignment_expression "pbVar20 = (byte *)number_pixels" identifier = (cast_expression "(byte *)number_pixels" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) 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) ;) })) (if_statement "if (0 < (int)uVar25) {\n              do {\n                uVar15 = (quantum_info->state).bits;\n                uVar9 = uVar15;\n                if (uVar25 <= uVar15) {\n                  uVar9 = uVar25;\n                }\n                uVar12 = uVar25 - uVar9;\n                uVar18 = uVar15 - uVar9;\n                uVar25 = uVar12;\n                if ((int)uVar12 < 0) {\n                  uVar25 = 0;\n                }\n                if (uVar15 == 8) {\n                  *pbVar20 = 0;\n                }\n                (quantum_info->state).bits = uVar18;\n                uVar15 = (uVar10 << 1) << (~uVar25 & 0x1f) | (uint)uVar32 >> (uVar25 & 0x1f);\n                if ((uVar25 & 0x20) != 0) {\n                  uVar15 = uVar10 >> (uVar25 & 0x1f);\n                }\n                bVar5 = (byte)((~(-1 << (uVar9 & 0x1f)) & uVar15) << (uVar18 & 0x1f));\n                if ((uVar18 & 0x20) != 0) {\n                  bVar5 = 0;\n                }\n                *pbVar20 = bVar5 | *pbVar20;\n                if (uVar18 == 0) {\n                  pbVar20 = pbVar20 + 1;\n                  (quantum_info->state).bits = 8;\n                }\n              } while (0 < (int)uVar12);\n            }" if (parenthesized_expression "(0 < (int)uVar25)" ( (binary_expression "0 < (int)uVar25" number_literal < (cast_expression "(int)uVar25" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n              do {\n                uVar15 = (quantum_info->state).bits;\n                uVar9 = uVar15;\n                if (uVar25 <= uVar15) {\n                  uVar9 = uVar25;\n                }\n                uVar12 = uVar25 - uVar9;\n                uVar18 = uVar15 - uVar9;\n                uVar25 = uVar12;\n                if ((int)uVar12 < 0) {\n                  uVar25 = 0;\n                }\n                if (uVar15 == 8) {\n                  *pbVar20 = 0;\n                }\n                (quantum_info->state).bits = uVar18;\n                uVar15 = (uVar10 << 1) << (~uVar25 & 0x1f) | (uint)uVar32 >> (uVar25 & 0x1f);\n                if ((uVar25 & 0x20) != 0) {\n                  uVar15 = uVar10 >> (uVar25 & 0x1f);\n                }\n                bVar5 = (byte)((~(-1 << (uVar9 & 0x1f)) & uVar15) << (uVar18 & 0x1f));\n                if ((uVar18 & 0x20) != 0) {\n                  bVar5 = 0;\n                }\n                *pbVar20 = bVar5 | *pbVar20;\n                if (uVar18 == 0) {\n                  pbVar20 = pbVar20 + 1;\n                  (quantum_info->state).bits = 8;\n                }\n              } while (0 < (int)uVar12);\n            }" { (do_statement "do {\n                uVar15 = (quantum_info->state).bits;\n                uVar9 = uVar15;\n                if (uVar25 <= uVar15) {\n                  uVar9 = uVar25;\n                }\n                uVar12 = uVar25 - uVar9;\n                uVar18 = uVar15 - uVar9;\n                uVar25 = uVar12;\n                if ((int)uVar12 < 0) {\n                  uVar25 = 0;\n                }\n                if (uVar15 == 8) {\n                  *pbVar20 = 0;\n                }\n                (quantum_info->state).bits = uVar18;\n                uVar15 = (uVar10 << 1) << (~uVar25 & 0x1f) | (uint)uVar32 >> (uVar25 & 0x1f);\n                if ((uVar25 & 0x20) != 0) {\n                  uVar15 = uVar10 >> (uVar25 & 0x1f);\n                }\n                bVar5 = (byte)((~(-1 << (uVar9 & 0x1f)) & uVar15) << (uVar18 & 0x1f));\n                if ((uVar18 & 0x20) != 0) {\n                  bVar5 = 0;\n                }\n                *pbVar20 = bVar5 | *pbVar20;\n                if (uVar18 == 0) {\n                  pbVar20 = pbVar20 + 1;\n                  (quantum_info->state).bits = 8;\n                }\n              } while (0 < (int)uVar12);" do (compound_statement "{\n                uVar15 = (quantum_info->state).bits;\n                uVar9 = uVar15;\n                if (uVar25 <= uVar15) {\n                  uVar9 = uVar25;\n                }\n                uVar12 = uVar25 - uVar9;\n                uVar18 = uVar15 - uVar9;\n                uVar25 = uVar12;\n                if ((int)uVar12 < 0) {\n                  uVar25 = 0;\n                }\n                if (uVar15 == 8) {\n                  *pbVar20 = 0;\n                }\n                (quantum_info->state).bits = uVar18;\n                uVar15 = (uVar10 << 1) << (~uVar25 & 0x1f) | (uint)uVar32 >> (uVar25 & 0x1f);\n                if ((uVar25 & 0x20) != 0) {\n                  uVar15 = uVar10 >> (uVar25 & 0x1f);\n                }\n                bVar5 = (byte)((~(-1 << (uVar9 & 0x1f)) & uVar15) << (uVar18 & 0x1f));\n                if ((uVar18 & 0x20) != 0) {\n                  bVar5 = 0;\n                }\n                *pbVar20 = bVar5 | *pbVar20;\n                if (uVar18 == 0) {\n                  pbVar20 = pbVar20 + 1;\n                  (quantum_info->state).bits = 8;\n                }\n              }" { (expression_statement "uVar15 = (quantum_info->state).bits;" (assignment_expression "uVar15 = (quantum_info->state).bits" identifier = (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "uVar9 = uVar15;" (assignment_expression "uVar9 = uVar15" identifier = identifier) ;) (if_statement "if (uVar25 <= uVar15) {\n                  uVar9 = uVar25;\n                }" if (parenthesized_expression "(uVar25 <= uVar15)" ( (binary_expression "uVar25 <= uVar15" identifier <= identifier) )) (compound_statement "{\n                  uVar9 = uVar25;\n                }" { (expression_statement "uVar9 = uVar25;" (assignment_expression "uVar9 = uVar25" identifier = identifier) ;) })) (expression_statement "uVar12 = uVar25 - uVar9;" (assignment_expression "uVar12 = uVar25 - uVar9" identifier = (binary_expression "uVar25 - uVar9" identifier - identifier)) ;) (expression_statement "uVar18 = uVar15 - uVar9;" (assignment_expression "uVar18 = uVar15 - uVar9" identifier = (binary_expression "uVar15 - uVar9" identifier - identifier)) ;) (expression_statement "uVar25 = uVar12;" (assignment_expression "uVar25 = uVar12" identifier = identifier) ;) (if_statement "if ((int)uVar12 < 0) {\n                  uVar25 = 0;\n                }" if (parenthesized_expression "((int)uVar12 < 0)" ( (binary_expression "(int)uVar12 < 0" (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                  uVar25 = 0;\n                }" { (expression_statement "uVar25 = 0;" (assignment_expression "uVar25 = 0" identifier = number_literal) ;) })) (if_statement "if (uVar15 == 8) {\n                  *pbVar20 = 0;\n                }" if (parenthesized_expression "(uVar15 == 8)" ( (binary_expression "uVar15 == 8" identifier == number_literal) )) (compound_statement "{\n                  *pbVar20 = 0;\n                }" { (expression_statement "*pbVar20 = 0;" (assignment_expression "*pbVar20 = 0" (pointer_expression "*pbVar20" * identifier) = number_literal) ;) })) (expression_statement "(quantum_info->state).bits = uVar18;" (assignment_expression "(quantum_info->state).bits = uVar18" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "uVar15 = (uVar10 << 1) << (~uVar25 & 0x1f) | (uint)uVar32 >> (uVar25 & 0x1f);" (assignment_expression "uVar15 = (uVar10 << 1) << (~uVar25 & 0x1f) | (uint)uVar32 >> (uVar25 & 0x1f)" identifier = (binary_expression "(uVar10 << 1) << (~uVar25 & 0x1f) | (uint)uVar32 >> (uVar25 & 0x1f)" (binary_expression "(uVar10 << 1) << (~uVar25 & 0x1f)" (parenthesized_expression "(uVar10 << 1)" ( (binary_expression "uVar10 << 1" identifier << number_literal) )) << (parenthesized_expression "(~uVar25 & 0x1f)" ( (binary_expression "~uVar25 & 0x1f" (unary_expression "~uVar25" ~ identifier) & number_literal) ))) | (binary_expression "(uint)uVar32 >> (uVar25 & 0x1f)" (cast_expression "(uint)uVar32" ( (type_descriptor "uint" type_identifier) ) identifier) >> (parenthesized_expression "(uVar25 & 0x1f)" ( (binary_expression "uVar25 & 0x1f" identifier & number_literal) ))))) ;) (if_statement "if ((uVar25 & 0x20) != 0) {\n                  uVar15 = uVar10 >> (uVar25 & 0x1f);\n                }" if (parenthesized_expression "((uVar25 & 0x20) != 0)" ( (binary_expression "(uVar25 & 0x20) != 0" (parenthesized_expression "(uVar25 & 0x20)" ( (binary_expression "uVar25 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                  uVar15 = uVar10 >> (uVar25 & 0x1f);\n                }" { (expression_statement "uVar15 = uVar10 >> (uVar25 & 0x1f);" (assignment_expression "uVar15 = uVar10 >> (uVar25 & 0x1f)" identifier = (binary_expression "uVar10 >> (uVar25 & 0x1f)" identifier >> (parenthesized_expression "(uVar25 & 0x1f)" ( (binary_expression "uVar25 & 0x1f" identifier & number_literal) )))) ;) })) (expression_statement "bVar5 = (byte)((~(-1 << (uVar9 & 0x1f)) & uVar15) << (uVar18 & 0x1f));" (assignment_expression "bVar5 = (byte)((~(-1 << (uVar9 & 0x1f)) & uVar15) << (uVar18 & 0x1f))" identifier = (call_expression "(byte)((~(-1 << (uVar9 & 0x1f)) & uVar15) << (uVar18 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((~(-1 << (uVar9 & 0x1f)) & uVar15) << (uVar18 & 0x1f))" ( (binary_expression "(~(-1 << (uVar9 & 0x1f)) & uVar15) << (uVar18 & 0x1f)" (parenthesized_expression "(~(-1 << (uVar9 & 0x1f)) & uVar15)" ( (binary_expression "~(-1 << (uVar9 & 0x1f)) & uVar15" (unary_expression "~(-1 << (uVar9 & 0x1f))" ~ (parenthesized_expression "(-1 << (uVar9 & 0x1f))" ( (binary_expression "-1 << (uVar9 & 0x1f)" number_literal << (parenthesized_expression "(uVar9 & 0x1f)" ( (binary_expression "uVar9 & 0x1f" identifier & number_literal) ))) ))) & identifier) )) << (parenthesized_expression "(uVar18 & 0x1f)" ( (binary_expression "uVar18 & 0x1f" identifier & number_literal) ))) )))) ;) (if_statement "if ((uVar18 & 0x20) != 0) {\n                  bVar5 = 0;\n                }" if (parenthesized_expression "((uVar18 & 0x20) != 0)" ( (binary_expression "(uVar18 & 0x20) != 0" (parenthesized_expression "(uVar18 & 0x20)" ( (binary_expression "uVar18 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                  bVar5 = 0;\n                }" { (expression_statement "bVar5 = 0;" (assignment_expression "bVar5 = 0" identifier = number_literal) ;) })) (expression_statement "*pbVar20 = bVar5 | *pbVar20;" (assignment_expression "*pbVar20 = bVar5 | *pbVar20" (pointer_expression "*pbVar20" * identifier) = (binary_expression "bVar5 | *pbVar20" identifier | (pointer_expression "*pbVar20" * identifier))) ;) (if_statement "if (uVar18 == 0) {\n                  pbVar20 = pbVar20 + 1;\n                  (quantum_info->state).bits = 8;\n                }" if (parenthesized_expression "(uVar18 == 0)" ( (binary_expression "uVar18 == 0" identifier == number_literal) )) (compound_statement "{\n                  pbVar20 = pbVar20 + 1;\n                  (quantum_info->state).bits = 8;\n                }" { (expression_statement "pbVar20 = pbVar20 + 1;" (assignment_expression "pbVar20 = pbVar20 + 1" identifier = (binary_expression "pbVar20 + 1" identifier + number_literal)) ;) (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) ;) })) }) while (parenthesized_expression "(0 < (int)uVar12)" ( (binary_expression "0 < (int)uVar12" number_literal < (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })) (expression_statement "puVar24 = puVar24 + 1;" (assignment_expression "puVar24 = puVar24 + 1" identifier = (binary_expression "puVar24 + 1" identifier + number_literal)) ;) (expression_statement "number_pixels =\n                 CONCAT44((int)(number_pixels >> 0x20) + image->number_channels * 4,\n                          pbVar20 + quantum_info->pad);" (assignment_expression "number_pixels =\n                 CONCAT44((int)(number_pixels >> 0x20) + image->number_channels * 4,\n                          pbVar20 + quantum_info->pad)" identifier = (call_expression "CONCAT44((int)(number_pixels >> 0x20) + image->number_channels * 4,\n                          pbVar20 + quantum_info->pad)" identifier (argument_list "((int)(number_pixels >> 0x20) + image->number_channels * 4,\n                          pbVar20 + quantum_info->pad)" ( (binary_expression "(int)(number_pixels >> 0x20) + image->number_channels * 4" (cast_expression "(int)(number_pixels >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(number_pixels >> 0x20)" ( (binary_expression "number_pixels >> 0x20" identifier >> number_literal) ))) + (binary_expression "image->number_channels * 4" (field_expression "image->number_channels" identifier -> field_identifier) * number_literal)) , (binary_expression "pbVar20 + quantum_info->pad" identifier + (field_expression "quantum_info->pad" identifier -> field_identifier)) )))) ;) (if_statement "if (puVar24 == q) {\n              return;\n            }" if (parenthesized_expression "(puVar24 == q)" ( (binary_expression "puVar24 == q" identifier == identifier) )) (compound_statement "{\n              return;\n            }" { (return_statement "return;" return ;) })) (expression_statement "pPVar2 = image->channel_map;" (assignment_expression "pPVar2 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) (expression_statement "uVar25 = quantum_info->depth;" (assignment_expression "uVar25 = quantum_info->depth" identifier = (field_expression "quantum_info->depth" identifier -> field_identifier)) ;) (if_statement "if (pPVar2[5].traits != UndefinedPixelTrait) break;" if (parenthesized_expression "(pPVar2[5].traits != UndefinedPixelTrait)" ( (binary_expression "pPVar2[5].traits != UndefinedPixelTrait" (field_expression "pPVar2[5].traits" (subscript_expression "pPVar2[5]" identifier [ number_literal ]) . field_identifier) != identifier) )) (break_statement "break;" break ;)) (labeled_statement "LAB_001574b0:\n            uVar32 = 0;" statement_identifier : (expression_statement "uVar32 = 0;" (assignment_expression "uVar32 = 0" identifier = number_literal) ;)) })) }) while (parenthesized_expression "( true )" ( true )) ;) })) }))) }) (else_clause "else {\n    (*(code *)PTR_ThrowMagickException_003a8f20)\n              (exception,PTR_s_courses_003a88ec + -0x7af0,PTR_s_courses_003a88ec + -0x768c,0x9d8,\n               0x1d1,PTR_s_courses_003a88ec + -0x7ad4,PTR_LAB_003a88e0 + 0x3e28,image->filename);\n  }" else (compound_statement "{\n    (*(code *)PTR_ThrowMagickException_003a8f20)\n              (exception,PTR_s_courses_003a88ec + -0x7af0,PTR_s_courses_003a88ec + -0x768c,0x9d8,\n               0x1d1,PTR_s_courses_003a88ec + -0x7ad4,PTR_LAB_003a88e0 + 0x3e28,image->filename);\n  }" { (expression_statement "(*(code *)PTR_ThrowMagickException_003a8f20)\n              (exception,PTR_s_courses_003a88ec + -0x7af0,PTR_s_courses_003a88ec + -0x768c,0x9d8,\n               0x1d1,PTR_s_courses_003a88ec + -0x7ad4,PTR_LAB_003a88e0 + 0x3e28,image->filename);" (call_expression "(*(code *)PTR_ThrowMagickException_003a8f20)\n              (exception,PTR_s_courses_003a88ec + -0x7af0,PTR_s_courses_003a88ec + -0x768c,0x9d8,\n               0x1d1,PTR_s_courses_003a88ec + -0x7ad4,PTR_LAB_003a88e0 + 0x3e28,image->filename)" (parenthesized_expression "(*(code *)PTR_ThrowMagickException_003a8f20)" ( (pointer_expression "*(code *)PTR_ThrowMagickException_003a8f20" * (cast_expression "(code *)PTR_ThrowMagickException_003a8f20" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(exception,PTR_s_courses_003a88ec + -0x7af0,PTR_s_courses_003a88ec + -0x768c,0x9d8,\n               0x1d1,PTR_s_courses_003a88ec + -0x7ad4,PTR_LAB_003a88e0 + 0x3e28,image->filename)" ( identifier , (binary_expression "PTR_s_courses_003a88ec + -0x7af0" identifier + number_literal) , (binary_expression "PTR_s_courses_003a88ec + -0x768c" identifier + number_literal) , number_literal , number_literal , (binary_expression "PTR_s_courses_003a88ec + -0x7ad4" identifier + number_literal) , (binary_expression "PTR_LAB_003a88e0 + 0x3e28" identifier + number_literal) , (field_expression "image->filename" identifier -> field_identifier) ))) ;) }))) (return_statement "return;" return ;) })))
(translation_unit "void FUN_0015731c(ulonglong param_1,int *param_2,uint *param_3,undefined4 param_4,uint param_5,\n                 int param_6,byte *param_7,undefined4 param_8)\n\n{\n  int iVar1;\n  byte bVar3;\n  undefined2 uVar2;\n  byte bVar4;\n  byte *pbVar5;\n  byte bVar6;\n  uint uVar7;\n  byte bVar8;\n  uint uVar9;\n  byte bVar10;\n  uint uVar11;\n  uint uVar12;\n  byte bVar13;\n  uint uVar14;\n  byte bVar15;\n  uint uVar16;\n  uint uVar17;\n  float fVar20;\n  double dVar18;\n  double dVar19;\n  double extraout_f0_1;\n  float fVar21;\n  double dVar22;\n  undefined8 uVar23;\n  \n  if (*param_2 == 2) {\n    uVar17 = *param_3;\n    if (uVar17 == 8) {\n      if (0 < (int)param_5) {\n        uVar17 = 0;\n        fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n        do {\n          bVar3 = 0;\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar20 < fVar21) {\n              bVar3 = (byte)(int)fVar20;\n            }\n            else {\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }\n          }\n          *param_7 = bVar3;\n          uVar17 = uVar17 + 1;\n          param_6 = param_6 + param_2[0xb0] * 4;\n          param_7 = param_7 + param_3[10] + 1;\n        } while (uVar17 != param_5);\n      }\n    }\n    else {\n      if (uVar17 < 9) {\n        if (uVar17 == 1) {\n          if (7 < (int)param_5) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;\n            do {\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          *param_7 = 0;\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          uVar16 = 0;\n          uVar17 = 7;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }\n            *param_7 = (byte)uVar16;\n            uVar17 = uVar17 - 1;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != (~param_5 & 7));\n          return;\n        }\n        if (uVar17 == 4) {\n          if (0 < (int)(param_5 - 1)) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;\n            do {\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 1) == 0) {\n            return;\n          }\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }\n            else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }\n            *param_7 = bVar3;\n            return;\n          }\n          *param_7 = 0;\n          return;\n        }\n      }\n      else {\n        if (uVar17 == 0x20) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar4 = 0;\n            bVar6 = 0;\n            bVar3 = 0;\n            bVar8 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 4;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n        if (uVar17 == 0x40) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n        }\n        else if (uVar17 == 0x10) {\n          if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n      }\n      uVar16 = 0;\n      if (0 < (int)param_5) {\n        iVar1 = param_2[0xb4];\n        if (*(int *)(iVar1 + 0x40) == 0) goto LAB_001574b0;\n        do {\n          uVar23 = (*(code *)PTR_FUN_003a8a80)\n                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4));\n          while( true ) {\n            uVar12 = (uint)((ulonglong)uVar23 >> 0x20);\n            if (param_3[0x15] == 0) {\n              param_3[0x15] = 8;\n            }\n            if (0 < (int)uVar17) {\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }\n            uVar16 = uVar16 + 1;\n            param_7 = param_7 + param_3[10];\n            param_6 = param_6 + param_2[0xb0] * 4;\n            if (uVar16 == param_5) {\n              return;\n            }\n            iVar1 = param_2[0xb4];\n            uVar17 = *param_3;\n            if (*(int *)(iVar1 + 0x40) != 0) break;\nLAB_001574b0:\n            uVar23 = 0;\n          }\n        } while( true );\n      }\n    }\n  }\n  else {\n    (*(code *)PTR_ThrowMagickException_003a8f20)\n              (param_8,PTR_s_courses_003a88ec + -0x7af0,PTR_s_courses_003a88ec + -0x768c,0x9d8,0x1d1\n               ,PTR_s_courses_003a88ec + -0x7ad4,PTR_LAB_003a88e0 + 0x3e28,param_2 + 0xd0);\n  }\n  return;\n}\n\n" (function_definition "void FUN_0015731c(ulonglong param_1,int *param_2,uint *param_3,undefined4 param_4,uint param_5,\n                 int param_6,byte *param_7,undefined4 param_8)\n\n{\n  int iVar1;\n  byte bVar3;\n  undefined2 uVar2;\n  byte bVar4;\n  byte *pbVar5;\n  byte bVar6;\n  uint uVar7;\n  byte bVar8;\n  uint uVar9;\n  byte bVar10;\n  uint uVar11;\n  uint uVar12;\n  byte bVar13;\n  uint uVar14;\n  byte bVar15;\n  uint uVar16;\n  uint uVar17;\n  float fVar20;\n  double dVar18;\n  double dVar19;\n  double extraout_f0_1;\n  float fVar21;\n  double dVar22;\n  undefined8 uVar23;\n  \n  if (*param_2 == 2) {\n    uVar17 = *param_3;\n    if (uVar17 == 8) {\n      if (0 < (int)param_5) {\n        uVar17 = 0;\n        fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n        do {\n          bVar3 = 0;\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar20 < fVar21) {\n              bVar3 = (byte)(int)fVar20;\n            }\n            else {\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }\n          }\n          *param_7 = bVar3;\n          uVar17 = uVar17 + 1;\n          param_6 = param_6 + param_2[0xb0] * 4;\n          param_7 = param_7 + param_3[10] + 1;\n        } while (uVar17 != param_5);\n      }\n    }\n    else {\n      if (uVar17 < 9) {\n        if (uVar17 == 1) {\n          if (7 < (int)param_5) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;\n            do {\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          *param_7 = 0;\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          uVar16 = 0;\n          uVar17 = 7;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }\n            *param_7 = (byte)uVar16;\n            uVar17 = uVar17 - 1;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != (~param_5 & 7));\n          return;\n        }\n        if (uVar17 == 4) {\n          if (0 < (int)(param_5 - 1)) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;\n            do {\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 1) == 0) {\n            return;\n          }\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }\n            else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }\n            *param_7 = bVar3;\n            return;\n          }\n          *param_7 = 0;\n          return;\n        }\n      }\n      else {\n        if (uVar17 == 0x20) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar4 = 0;\n            bVar6 = 0;\n            bVar3 = 0;\n            bVar8 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 4;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n        if (uVar17 == 0x40) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n        }\n        else if (uVar17 == 0x10) {\n          if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n      }\n      uVar16 = 0;\n      if (0 < (int)param_5) {\n        iVar1 = param_2[0xb4];\n        if (*(int *)(iVar1 + 0x40) == 0) goto LAB_001574b0;\n        do {\n          uVar23 = (*(code *)PTR_FUN_003a8a80)\n                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4));\n          while( true ) {\n            uVar12 = (uint)((ulonglong)uVar23 >> 0x20);\n            if (param_3[0x15] == 0) {\n              param_3[0x15] = 8;\n            }\n            if (0 < (int)uVar17) {\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }\n            uVar16 = uVar16 + 1;\n            param_7 = param_7 + param_3[10];\n            param_6 = param_6 + param_2[0xb0] * 4;\n            if (uVar16 == param_5) {\n              return;\n            }\n            iVar1 = param_2[0xb4];\n            uVar17 = *param_3;\n            if (*(int *)(iVar1 + 0x40) != 0) break;\nLAB_001574b0:\n            uVar23 = 0;\n          }\n        } while( true );\n      }\n    }\n  }\n  else {\n    (*(code *)PTR_ThrowMagickException_003a8f20)\n              (param_8,PTR_s_courses_003a88ec + -0x7af0,PTR_s_courses_003a88ec + -0x768c,0x9d8,0x1d1\n               ,PTR_s_courses_003a88ec + -0x7ad4,PTR_LAB_003a88e0 + 0x3e28,param_2 + 0xd0);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_0015731c(ulonglong param_1,int *param_2,uint *param_3,undefined4 param_4,uint param_5,\n                 int param_6,byte *param_7,undefined4 param_8)" identifier (parameter_list "(ulonglong param_1,int *param_2,uint *param_3,undefined4 param_4,uint param_5,\n                 int param_6,byte *param_7,undefined4 param_8)" ( (parameter_declaration "ulonglong param_1" type_identifier identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "uint param_5" type_identifier identifier) , (parameter_declaration "int param_6" primitive_type identifier) , (parameter_declaration "byte *param_7" type_identifier (pointer_declarator "*param_7" * identifier)) , (parameter_declaration "undefined4 param_8" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  byte bVar3;\n  undefined2 uVar2;\n  byte bVar4;\n  byte *pbVar5;\n  byte bVar6;\n  uint uVar7;\n  byte bVar8;\n  uint uVar9;\n  byte bVar10;\n  uint uVar11;\n  uint uVar12;\n  byte bVar13;\n  uint uVar14;\n  byte bVar15;\n  uint uVar16;\n  uint uVar17;\n  float fVar20;\n  double dVar18;\n  double dVar19;\n  double extraout_f0_1;\n  float fVar21;\n  double dVar22;\n  undefined8 uVar23;\n  \n  if (*param_2 == 2) {\n    uVar17 = *param_3;\n    if (uVar17 == 8) {\n      if (0 < (int)param_5) {\n        uVar17 = 0;\n        fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n        do {\n          bVar3 = 0;\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar20 < fVar21) {\n              bVar3 = (byte)(int)fVar20;\n            }\n            else {\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }\n          }\n          *param_7 = bVar3;\n          uVar17 = uVar17 + 1;\n          param_6 = param_6 + param_2[0xb0] * 4;\n          param_7 = param_7 + param_3[10] + 1;\n        } while (uVar17 != param_5);\n      }\n    }\n    else {\n      if (uVar17 < 9) {\n        if (uVar17 == 1) {\n          if (7 < (int)param_5) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;\n            do {\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          *param_7 = 0;\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          uVar16 = 0;\n          uVar17 = 7;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }\n            *param_7 = (byte)uVar16;\n            uVar17 = uVar17 - 1;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != (~param_5 & 7));\n          return;\n        }\n        if (uVar17 == 4) {\n          if (0 < (int)(param_5 - 1)) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;\n            do {\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 1) == 0) {\n            return;\n          }\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }\n            else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }\n            *param_7 = bVar3;\n            return;\n          }\n          *param_7 = 0;\n          return;\n        }\n      }\n      else {\n        if (uVar17 == 0x20) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar4 = 0;\n            bVar6 = 0;\n            bVar3 = 0;\n            bVar8 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 4;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n        if (uVar17 == 0x40) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n        }\n        else if (uVar17 == 0x10) {\n          if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n      }\n      uVar16 = 0;\n      if (0 < (int)param_5) {\n        iVar1 = param_2[0xb4];\n        if (*(int *)(iVar1 + 0x40) == 0) goto LAB_001574b0;\n        do {\n          uVar23 = (*(code *)PTR_FUN_003a8a80)\n                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4));\n          while( true ) {\n            uVar12 = (uint)((ulonglong)uVar23 >> 0x20);\n            if (param_3[0x15] == 0) {\n              param_3[0x15] = 8;\n            }\n            if (0 < (int)uVar17) {\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }\n            uVar16 = uVar16 + 1;\n            param_7 = param_7 + param_3[10];\n            param_6 = param_6 + param_2[0xb0] * 4;\n            if (uVar16 == param_5) {\n              return;\n            }\n            iVar1 = param_2[0xb4];\n            uVar17 = *param_3;\n            if (*(int *)(iVar1 + 0x40) != 0) break;\nLAB_001574b0:\n            uVar23 = 0;\n          }\n        } while( true );\n      }\n    }\n  }\n  else {\n    (*(code *)PTR_ThrowMagickException_003a8f20)\n              (param_8,PTR_s_courses_003a88ec + -0x7af0,PTR_s_courses_003a88ec + -0x768c,0x9d8,0x1d1\n               ,PTR_s_courses_003a88ec + -0x7ad4,PTR_LAB_003a88e0 + 0x3e28,param_2 + 0xd0);\n  }\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "undefined2 uVar2;" type_identifier identifier ;) (declaration "byte bVar4;" type_identifier identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "byte bVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "byte bVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "byte bVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "byte bVar13;" type_identifier identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "byte bVar15;" type_identifier identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "float fVar20;" primitive_type identifier ;) (declaration "double dVar18;" primitive_type identifier ;) (declaration "double dVar19;" primitive_type identifier ;) (declaration "double extraout_f0_1;" primitive_type identifier ;) (declaration "float fVar21;" primitive_type identifier ;) (declaration "double dVar22;" primitive_type identifier ;) (declaration "undefined8 uVar23;" type_identifier identifier ;) (if_statement "if (*param_2 == 2) {\n    uVar17 = *param_3;\n    if (uVar17 == 8) {\n      if (0 < (int)param_5) {\n        uVar17 = 0;\n        fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n        do {\n          bVar3 = 0;\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar20 < fVar21) {\n              bVar3 = (byte)(int)fVar20;\n            }\n            else {\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }\n          }\n          *param_7 = bVar3;\n          uVar17 = uVar17 + 1;\n          param_6 = param_6 + param_2[0xb0] * 4;\n          param_7 = param_7 + param_3[10] + 1;\n        } while (uVar17 != param_5);\n      }\n    }\n    else {\n      if (uVar17 < 9) {\n        if (uVar17 == 1) {\n          if (7 < (int)param_5) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;\n            do {\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          *param_7 = 0;\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          uVar16 = 0;\n          uVar17 = 7;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }\n            *param_7 = (byte)uVar16;\n            uVar17 = uVar17 - 1;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != (~param_5 & 7));\n          return;\n        }\n        if (uVar17 == 4) {\n          if (0 < (int)(param_5 - 1)) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;\n            do {\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 1) == 0) {\n            return;\n          }\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }\n            else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }\n            *param_7 = bVar3;\n            return;\n          }\n          *param_7 = 0;\n          return;\n        }\n      }\n      else {\n        if (uVar17 == 0x20) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar4 = 0;\n            bVar6 = 0;\n            bVar3 = 0;\n            bVar8 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 4;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n        if (uVar17 == 0x40) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n        }\n        else if (uVar17 == 0x10) {\n          if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n      }\n      uVar16 = 0;\n      if (0 < (int)param_5) {\n        iVar1 = param_2[0xb4];\n        if (*(int *)(iVar1 + 0x40) == 0) goto LAB_001574b0;\n        do {\n          uVar23 = (*(code *)PTR_FUN_003a8a80)\n                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4));\n          while( true ) {\n            uVar12 = (uint)((ulonglong)uVar23 >> 0x20);\n            if (param_3[0x15] == 0) {\n              param_3[0x15] = 8;\n            }\n            if (0 < (int)uVar17) {\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }\n            uVar16 = uVar16 + 1;\n            param_7 = param_7 + param_3[10];\n            param_6 = param_6 + param_2[0xb0] * 4;\n            if (uVar16 == param_5) {\n              return;\n            }\n            iVar1 = param_2[0xb4];\n            uVar17 = *param_3;\n            if (*(int *)(iVar1 + 0x40) != 0) break;\nLAB_001574b0:\n            uVar23 = 0;\n          }\n        } while( true );\n      }\n    }\n  }\n  else {\n    (*(code *)PTR_ThrowMagickException_003a8f20)\n              (param_8,PTR_s_courses_003a88ec + -0x7af0,PTR_s_courses_003a88ec + -0x768c,0x9d8,0x1d1\n               ,PTR_s_courses_003a88ec + -0x7ad4,PTR_LAB_003a88e0 + 0x3e28,param_2 + 0xd0);\n  }" if (parenthesized_expression "(*param_2 == 2)" ( (binary_expression "*param_2 == 2" (pointer_expression "*param_2" * identifier) == number_literal) )) (compound_statement "{\n    uVar17 = *param_3;\n    if (uVar17 == 8) {\n      if (0 < (int)param_5) {\n        uVar17 = 0;\n        fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n        do {\n          bVar3 = 0;\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar20 < fVar21) {\n              bVar3 = (byte)(int)fVar20;\n            }\n            else {\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }\n          }\n          *param_7 = bVar3;\n          uVar17 = uVar17 + 1;\n          param_6 = param_6 + param_2[0xb0] * 4;\n          param_7 = param_7 + param_3[10] + 1;\n        } while (uVar17 != param_5);\n      }\n    }\n    else {\n      if (uVar17 < 9) {\n        if (uVar17 == 1) {\n          if (7 < (int)param_5) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;\n            do {\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          *param_7 = 0;\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          uVar16 = 0;\n          uVar17 = 7;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }\n            *param_7 = (byte)uVar16;\n            uVar17 = uVar17 - 1;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != (~param_5 & 7));\n          return;\n        }\n        if (uVar17 == 4) {\n          if (0 < (int)(param_5 - 1)) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;\n            do {\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 1) == 0) {\n            return;\n          }\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }\n            else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }\n            *param_7 = bVar3;\n            return;\n          }\n          *param_7 = 0;\n          return;\n        }\n      }\n      else {\n        if (uVar17 == 0x20) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar4 = 0;\n            bVar6 = 0;\n            bVar3 = 0;\n            bVar8 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 4;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n        if (uVar17 == 0x40) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n        }\n        else if (uVar17 == 0x10) {\n          if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n      }\n      uVar16 = 0;\n      if (0 < (int)param_5) {\n        iVar1 = param_2[0xb4];\n        if (*(int *)(iVar1 + 0x40) == 0) goto LAB_001574b0;\n        do {\n          uVar23 = (*(code *)PTR_FUN_003a8a80)\n                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4));\n          while( true ) {\n            uVar12 = (uint)((ulonglong)uVar23 >> 0x20);\n            if (param_3[0x15] == 0) {\n              param_3[0x15] = 8;\n            }\n            if (0 < (int)uVar17) {\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }\n            uVar16 = uVar16 + 1;\n            param_7 = param_7 + param_3[10];\n            param_6 = param_6 + param_2[0xb0] * 4;\n            if (uVar16 == param_5) {\n              return;\n            }\n            iVar1 = param_2[0xb4];\n            uVar17 = *param_3;\n            if (*(int *)(iVar1 + 0x40) != 0) break;\nLAB_001574b0:\n            uVar23 = 0;\n          }\n        } while( true );\n      }\n    }\n  }" { (expression_statement "uVar17 = *param_3;" (assignment_expression "uVar17 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (if_statement "if (uVar17 == 8) {\n      if (0 < (int)param_5) {\n        uVar17 = 0;\n        fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n        do {\n          bVar3 = 0;\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar20 < fVar21) {\n              bVar3 = (byte)(int)fVar20;\n            }\n            else {\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }\n          }\n          *param_7 = bVar3;\n          uVar17 = uVar17 + 1;\n          param_6 = param_6 + param_2[0xb0] * 4;\n          param_7 = param_7 + param_3[10] + 1;\n        } while (uVar17 != param_5);\n      }\n    }\n    else {\n      if (uVar17 < 9) {\n        if (uVar17 == 1) {\n          if (7 < (int)param_5) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;\n            do {\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          *param_7 = 0;\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          uVar16 = 0;\n          uVar17 = 7;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }\n            *param_7 = (byte)uVar16;\n            uVar17 = uVar17 - 1;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != (~param_5 & 7));\n          return;\n        }\n        if (uVar17 == 4) {\n          if (0 < (int)(param_5 - 1)) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;\n            do {\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 1) == 0) {\n            return;\n          }\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }\n            else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }\n            *param_7 = bVar3;\n            return;\n          }\n          *param_7 = 0;\n          return;\n        }\n      }\n      else {\n        if (uVar17 == 0x20) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar4 = 0;\n            bVar6 = 0;\n            bVar3 = 0;\n            bVar8 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 4;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n        if (uVar17 == 0x40) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n        }\n        else if (uVar17 == 0x10) {\n          if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n      }\n      uVar16 = 0;\n      if (0 < (int)param_5) {\n        iVar1 = param_2[0xb4];\n        if (*(int *)(iVar1 + 0x40) == 0) goto LAB_001574b0;\n        do {\n          uVar23 = (*(code *)PTR_FUN_003a8a80)\n                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4));\n          while( true ) {\n            uVar12 = (uint)((ulonglong)uVar23 >> 0x20);\n            if (param_3[0x15] == 0) {\n              param_3[0x15] = 8;\n            }\n            if (0 < (int)uVar17) {\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }\n            uVar16 = uVar16 + 1;\n            param_7 = param_7 + param_3[10];\n            param_6 = param_6 + param_2[0xb0] * 4;\n            if (uVar16 == param_5) {\n              return;\n            }\n            iVar1 = param_2[0xb4];\n            uVar17 = *param_3;\n            if (*(int *)(iVar1 + 0x40) != 0) break;\nLAB_001574b0:\n            uVar23 = 0;\n          }\n        } while( true );\n      }\n    }" if (parenthesized_expression "(uVar17 == 8)" ( (binary_expression "uVar17 == 8" identifier == number_literal) )) (compound_statement "{\n      if (0 < (int)param_5) {\n        uVar17 = 0;\n        fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n        do {\n          bVar3 = 0;\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar20 < fVar21) {\n              bVar3 = (byte)(int)fVar20;\n            }\n            else {\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }\n          }\n          *param_7 = bVar3;\n          uVar17 = uVar17 + 1;\n          param_6 = param_6 + param_2[0xb0] * 4;\n          param_7 = param_7 + param_3[10] + 1;\n        } while (uVar17 != param_5);\n      }\n    }" { (if_statement "if (0 < (int)param_5) {\n        uVar17 = 0;\n        fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n        do {\n          bVar3 = 0;\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar20 < fVar21) {\n              bVar3 = (byte)(int)fVar20;\n            }\n            else {\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }\n          }\n          *param_7 = bVar3;\n          uVar17 = uVar17 + 1;\n          param_6 = param_6 + param_2[0xb0] * 4;\n          param_7 = param_7 + param_3[10] + 1;\n        } while (uVar17 != param_5);\n      }" if (parenthesized_expression "(0 < (int)param_5)" ( (binary_expression "0 < (int)param_5" number_literal < (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        uVar17 = 0;\n        fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n        do {\n          bVar3 = 0;\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar20 < fVar21) {\n              bVar3 = (byte)(int)fVar20;\n            }\n            else {\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }\n          }\n          *param_7 = bVar3;\n          uVar17 = uVar17 + 1;\n          param_6 = param_6 + param_2[0xb0] * 4;\n          param_7 = param_7 + param_3[10] + 1;\n        } while (uVar17 != param_5);\n      }" { (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (expression_statement "fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);" (assignment_expression "fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" identifier = (pointer_expression "*(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" * (cast_expression "(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (binary_expression "PTR_s_t_to_left_003a88e4 + -0x51e0" identifier + number_literal) ))))) ;) (do_statement "do {\n          bVar3 = 0;\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar20 < fVar21) {\n              bVar3 = (byte)(int)fVar20;\n            }\n            else {\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }\n          }\n          *param_7 = bVar3;\n          uVar17 = uVar17 + 1;\n          param_6 = param_6 + param_2[0xb0] * 4;\n          param_7 = param_7 + param_3[10] + 1;\n        } while (uVar17 != param_5);" do (compound_statement "{\n          bVar3 = 0;\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar20 < fVar21) {\n              bVar3 = (byte)(int)fVar20;\n            }\n            else {\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }\n          }\n          *param_7 = bVar3;\n          uVar17 = uVar17 + 1;\n          param_6 = param_6 + param_2[0xb0] * 4;\n          param_7 = param_7 + param_3[10] + 1;\n        }" { (expression_statement "bVar3 = 0;" (assignment_expression "bVar3 = 0" identifier = number_literal) ;) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar20 < fVar21) {\n              bVar3 = (byte)(int)fVar20;\n            }\n            else {\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }\n          }" if (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" ( (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" * (cast_expression "(int *)(param_2[0xb4] + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x40)" ( (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) != number_literal) )) (compound_statement "{\n            fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar20 < fVar21) {\n              bVar3 = (byte)(int)fVar20;\n            }\n            else {\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }\n          }" { (expression_statement "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" identifier = (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" * (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" identifier + (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" * (cast_expression "(int *)(param_2[0xb4] + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x44)" ( (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (fVar20 < fVar21) {\n              bVar3 = (byte)(int)fVar20;\n            }\n            else {\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }" if (parenthesized_expression "(fVar20 < fVar21)" ( (binary_expression "fVar20 < fVar21" identifier < identifier) )) (compound_statement "{\n              bVar3 = (byte)(int)fVar20;\n            }" { (expression_statement "bVar3 = (byte)(int)fVar20;" (assignment_expression "bVar3 = (byte)(int)fVar20" identifier = (cast_expression "(byte)(int)fVar20" ( (type_descriptor "byte" type_identifier) ) (cast_expression "(int)fVar20" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }) (else_clause "else {\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }" else (compound_statement "{\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }" { (expression_statement "bVar3 = (byte)(int)(fVar20 - fVar21);" (assignment_expression "bVar3 = (byte)(int)(fVar20 - fVar21)" identifier = (call_expression "(byte)(int)(fVar20 - fVar21)" (call_expression "(byte)(int)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(int)" ( identifier ))) (argument_list "(fVar20 - fVar21)" ( (binary_expression "fVar20 - fVar21" identifier - identifier) )))) ;) }))) })) (expression_statement "*param_7 = bVar3;" (assignment_expression "*param_7 = bVar3" (pointer_expression "*param_7" * identifier) = identifier) ;) (expression_statement "uVar17 = uVar17 + 1;" (assignment_expression "uVar17 = uVar17 + 1" identifier = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" identifier = (binary_expression "param_6 + param_2[0xb0] * 4" identifier + (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" identifier [ number_literal ]) * number_literal))) ;) (expression_statement "param_7 = param_7 + param_3[10] + 1;" (assignment_expression "param_7 = param_7 + param_3[10] + 1" identifier = (binary_expression "param_7 + param_3[10] + 1" (binary_expression "param_7 + param_3[10]" identifier + (subscript_expression "param_3[10]" identifier [ number_literal ])) + number_literal)) ;) }) while (parenthesized_expression "(uVar17 != param_5)" ( (binary_expression "uVar17 != param_5" identifier != identifier) )) ;) })) }) (else_clause "else {\n      if (uVar17 < 9) {\n        if (uVar17 == 1) {\n          if (7 < (int)param_5) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;\n            do {\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          *param_7 = 0;\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          uVar16 = 0;\n          uVar17 = 7;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }\n            *param_7 = (byte)uVar16;\n            uVar17 = uVar17 - 1;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != (~param_5 & 7));\n          return;\n        }\n        if (uVar17 == 4) {\n          if (0 < (int)(param_5 - 1)) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;\n            do {\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 1) == 0) {\n            return;\n          }\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }\n            else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }\n            *param_7 = bVar3;\n            return;\n          }\n          *param_7 = 0;\n          return;\n        }\n      }\n      else {\n        if (uVar17 == 0x20) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar4 = 0;\n            bVar6 = 0;\n            bVar3 = 0;\n            bVar8 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 4;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n        if (uVar17 == 0x40) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n        }\n        else if (uVar17 == 0x10) {\n          if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n      }\n      uVar16 = 0;\n      if (0 < (int)param_5) {\n        iVar1 = param_2[0xb4];\n        if (*(int *)(iVar1 + 0x40) == 0) goto LAB_001574b0;\n        do {\n          uVar23 = (*(code *)PTR_FUN_003a8a80)\n                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4));\n          while( true ) {\n            uVar12 = (uint)((ulonglong)uVar23 >> 0x20);\n            if (param_3[0x15] == 0) {\n              param_3[0x15] = 8;\n            }\n            if (0 < (int)uVar17) {\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }\n            uVar16 = uVar16 + 1;\n            param_7 = param_7 + param_3[10];\n            param_6 = param_6 + param_2[0xb0] * 4;\n            if (uVar16 == param_5) {\n              return;\n            }\n            iVar1 = param_2[0xb4];\n            uVar17 = *param_3;\n            if (*(int *)(iVar1 + 0x40) != 0) break;\nLAB_001574b0:\n            uVar23 = 0;\n          }\n        } while( true );\n      }\n    }" else (compound_statement "{\n      if (uVar17 < 9) {\n        if (uVar17 == 1) {\n          if (7 < (int)param_5) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;\n            do {\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          *param_7 = 0;\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          uVar16 = 0;\n          uVar17 = 7;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }\n            *param_7 = (byte)uVar16;\n            uVar17 = uVar17 - 1;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != (~param_5 & 7));\n          return;\n        }\n        if (uVar17 == 4) {\n          if (0 < (int)(param_5 - 1)) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;\n            do {\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 1) == 0) {\n            return;\n          }\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }\n            else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }\n            *param_7 = bVar3;\n            return;\n          }\n          *param_7 = 0;\n          return;\n        }\n      }\n      else {\n        if (uVar17 == 0x20) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar4 = 0;\n            bVar6 = 0;\n            bVar3 = 0;\n            bVar8 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 4;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n        if (uVar17 == 0x40) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n        }\n        else if (uVar17 == 0x10) {\n          if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n      }\n      uVar16 = 0;\n      if (0 < (int)param_5) {\n        iVar1 = param_2[0xb4];\n        if (*(int *)(iVar1 + 0x40) == 0) goto LAB_001574b0;\n        do {\n          uVar23 = (*(code *)PTR_FUN_003a8a80)\n                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4));\n          while( true ) {\n            uVar12 = (uint)((ulonglong)uVar23 >> 0x20);\n            if (param_3[0x15] == 0) {\n              param_3[0x15] = 8;\n            }\n            if (0 < (int)uVar17) {\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }\n            uVar16 = uVar16 + 1;\n            param_7 = param_7 + param_3[10];\n            param_6 = param_6 + param_2[0xb0] * 4;\n            if (uVar16 == param_5) {\n              return;\n            }\n            iVar1 = param_2[0xb4];\n            uVar17 = *param_3;\n            if (*(int *)(iVar1 + 0x40) != 0) break;\nLAB_001574b0:\n            uVar23 = 0;\n          }\n        } while( true );\n      }\n    }" { (if_statement "if (uVar17 < 9) {\n        if (uVar17 == 1) {\n          if (7 < (int)param_5) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;\n            do {\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          *param_7 = 0;\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          uVar16 = 0;\n          uVar17 = 7;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }\n            *param_7 = (byte)uVar16;\n            uVar17 = uVar17 - 1;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != (~param_5 & 7));\n          return;\n        }\n        if (uVar17 == 4) {\n          if (0 < (int)(param_5 - 1)) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;\n            do {\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 1) == 0) {\n            return;\n          }\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }\n            else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }\n            *param_7 = bVar3;\n            return;\n          }\n          *param_7 = 0;\n          return;\n        }\n      }\n      else {\n        if (uVar17 == 0x20) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar4 = 0;\n            bVar6 = 0;\n            bVar3 = 0;\n            bVar8 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 4;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n        if (uVar17 == 0x40) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n        }\n        else if (uVar17 == 0x10) {\n          if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n      }" if (parenthesized_expression "(uVar17 < 9)" ( (binary_expression "uVar17 < 9" identifier < number_literal) )) (compound_statement "{\n        if (uVar17 == 1) {\n          if (7 < (int)param_5) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;\n            do {\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          *param_7 = 0;\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          uVar16 = 0;\n          uVar17 = 7;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }\n            *param_7 = (byte)uVar16;\n            uVar17 = uVar17 - 1;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != (~param_5 & 7));\n          return;\n        }\n        if (uVar17 == 4) {\n          if (0 < (int)(param_5 - 1)) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;\n            do {\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 1) == 0) {\n            return;\n          }\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }\n            else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }\n            *param_7 = bVar3;\n            return;\n          }\n          *param_7 = 0;\n          return;\n        }\n      }" { (if_statement "if (uVar17 == 1) {\n          if (7 < (int)param_5) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;\n            do {\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          *param_7 = 0;\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          uVar16 = 0;\n          uVar17 = 7;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }\n            *param_7 = (byte)uVar16;\n            uVar17 = uVar17 - 1;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != (~param_5 & 7));\n          return;\n        }" if (parenthesized_expression "(uVar17 == 1)" ( (binary_expression "uVar17 == 1" identifier == number_literal) )) (compound_statement "{\n          if (7 < (int)param_5) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;\n            do {\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          *param_7 = 0;\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          uVar16 = 0;\n          uVar17 = 7;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }\n            *param_7 = (byte)uVar16;\n            uVar17 = uVar17 - 1;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != (~param_5 & 7));\n          return;\n        }" { (if_statement "if (7 < (int)param_5) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;\n            do {\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }" if (parenthesized_expression "(7 < (int)param_5)" ( (binary_expression "7 < (int)param_5" number_literal < (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;\n            do {\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }" { (expression_statement "fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);" (assignment_expression "fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" identifier = (pointer_expression "*(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" * (cast_expression "(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (binary_expression "PTR_s_t_to_left_003a88e4 + -0x51e0" identifier + number_literal) ))))) ;) (expression_statement "pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;" (assignment_expression "pbVar5 = param_7 + (param_5 - 8 >> 3) + 1" identifier = (binary_expression "param_7 + (param_5 - 8 >> 3) + 1" (binary_expression "param_7 + (param_5 - 8 >> 3)" identifier + (parenthesized_expression "(param_5 - 8 >> 3)" ( (binary_expression "param_5 - 8 >> 3" (binary_expression "param_5 - 8" identifier - number_literal) >> number_literal) ))) + number_literal)) ;) (do_statement "do {\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);" do (compound_statement "{\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            }" { (expression_statement "bVar3 = 0;" (assignment_expression "bVar3 = 0" identifier = number_literal) ;) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }" if (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" ( (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" * (cast_expression "(int *)(param_2[0xb4] + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x40)" ( (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) != number_literal) )) (compound_statement "{\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }" { (expression_statement "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" identifier = (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" * (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" identifier + (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" * (cast_expression "(int *)(param_2[0xb4] + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x44)" ( (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }" if (parenthesized_expression "(fVar21 <= fVar20)" ( (binary_expression "fVar21 <= fVar20" identifier <= identifier) )) (compound_statement "{\n                  fVar20 = fVar20 - fVar21;\n                }" { (expression_statement "fVar20 = fVar20 - fVar21;" (assignment_expression "fVar20 = fVar20 - fVar21" identifier = (binary_expression "fVar20 - fVar21" identifier - identifier)) ;) })) (expression_statement "bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);" (assignment_expression "bVar3 = (byte)(((int)fVar20 & 0xffU) << 7)" identifier = (call_expression "(byte)(((int)fVar20 & 0xffU) << 7)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((int)fVar20 & 0xffU) << 7)" ( (binary_expression "((int)fVar20 & 0xffU) << 7" (parenthesized_expression "((int)fVar20 & 0xffU)" ( (binary_expression "(int)fVar20 & 0xffU" (cast_expression "(int)fVar20" ( (type_descriptor "int" primitive_type) ) identifier) & number_literal) )) << number_literal) )))) ;) })) (expression_statement "*param_7 = bVar3;" (assignment_expression "*param_7 = bVar3" (pointer_expression "*param_7" * identifier) = identifier) ;) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" identifier = (binary_expression "param_6 + param_2[0xb0] * 4" identifier + (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" identifier [ number_literal ]) * number_literal))) ;) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }" if (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" ( (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" * (cast_expression "(int *)(param_2[0xb4] + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x40)" ( (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) != number_literal) )) (compound_statement "{\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }" { (expression_statement "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" identifier = (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" * (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" identifier + (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" * (cast_expression "(int *)(param_2[0xb4] + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x44)" ( (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }" if (parenthesized_expression "(fVar21 <= fVar20)" ( (binary_expression "fVar21 <= fVar20" identifier <= identifier) )) (compound_statement "{\n                  fVar20 = fVar20 - fVar21;\n                }" { (expression_statement "fVar20 = fVar20 - fVar21;" (assignment_expression "fVar20 = fVar20 - fVar21" identifier = (binary_expression "fVar20 - fVar21" identifier - identifier)) ;) })) (expression_statement "bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);" (assignment_expression "bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6)" identifier = (binary_expression "bVar3 | (byte)(((int)fVar20 & 1U) << 6)" identifier | (call_expression "(byte)(((int)fVar20 & 1U) << 6)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((int)fVar20 & 1U) << 6)" ( (binary_expression "((int)fVar20 & 1U) << 6" (parenthesized_expression "((int)fVar20 & 1U)" ( (binary_expression "(int)fVar20 & 1U" (cast_expression "(int)fVar20" ( (type_descriptor "int" primitive_type) ) identifier) & number_literal) )) << number_literal) ))))) ;) })) (expression_statement "*param_7 = bVar3;" (assignment_expression "*param_7 = bVar3" (pointer_expression "*param_7" * identifier) = identifier) ;) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" identifier = (binary_expression "param_6 + param_2[0xb0] * 4" identifier + (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" identifier [ number_literal ]) * number_literal))) ;) (expression_statement "bVar6 = bVar3;" (assignment_expression "bVar6 = bVar3" identifier = identifier) ;) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }" if (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" ( (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" * (cast_expression "(int *)(param_2[0xb4] + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x40)" ( (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) != number_literal) )) (compound_statement "{\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }" { (expression_statement "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" identifier = (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" * (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" identifier + (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" * (cast_expression "(int *)(param_2[0xb4] + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x44)" ( (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }" if (parenthesized_expression "(fVar21 <= fVar20)" ( (binary_expression "fVar21 <= fVar20" identifier <= identifier) )) (compound_statement "{\n                  fVar20 = fVar20 - fVar21;\n                }" { (expression_statement "fVar20 = fVar20 - fVar21;" (assignment_expression "fVar20 = fVar20 - fVar21" identifier = (binary_expression "fVar20 - fVar21" identifier - identifier)) ;) })) (expression_statement "bVar4 = (byte)(((int)fVar20 & 1U) << 5);" (assignment_expression "bVar4 = (byte)(((int)fVar20 & 1U) << 5)" identifier = (call_expression "(byte)(((int)fVar20 & 1U) << 5)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((int)fVar20 & 1U) << 5)" ( (binary_expression "((int)fVar20 & 1U) << 5" (parenthesized_expression "((int)fVar20 & 1U)" ( (binary_expression "(int)fVar20 & 1U" (cast_expression "(int)fVar20" ( (type_descriptor "int" primitive_type) ) identifier) & number_literal) )) << number_literal) )))) ;) (expression_statement "bVar6 = bVar3 | bVar4;" (assignment_expression "bVar6 = bVar3 | bVar4" identifier = (binary_expression "bVar3 | bVar4" identifier | identifier)) ;) (expression_statement "*param_7 = bVar3 | bVar4;" (assignment_expression "*param_7 = bVar3 | bVar4" (pointer_expression "*param_7" * identifier) = (binary_expression "bVar3 | bVar4" identifier | identifier)) ;) })) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" identifier = (binary_expression "param_6 + param_2[0xb0] * 4" identifier + (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" identifier [ number_literal ]) * number_literal))) ;) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }" if (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" ( (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" * (cast_expression "(int *)(param_2[0xb4] + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x40)" ( (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) != number_literal) )) (compound_statement "{\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }" { (expression_statement "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" identifier = (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" * (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" identifier + (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" * (cast_expression "(int *)(param_2[0xb4] + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x44)" ( (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }" if (parenthesized_expression "(fVar21 <= fVar20)" ( (binary_expression "fVar21 <= fVar20" identifier <= identifier) )) (compound_statement "{\n                  fVar20 = fVar20 - fVar21;\n                }" { (expression_statement "fVar20 = fVar20 - fVar21;" (assignment_expression "fVar20 = fVar20 - fVar21" identifier = (binary_expression "fVar20 - fVar21" identifier - identifier)) ;) })) (expression_statement "bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);" (assignment_expression "bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4)" identifier = (binary_expression "bVar6 | (byte)(((int)fVar20 & 1U) << 4)" identifier | (call_expression "(byte)(((int)fVar20 & 1U) << 4)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((int)fVar20 & 1U) << 4)" ( (binary_expression "((int)fVar20 & 1U) << 4" (parenthesized_expression "((int)fVar20 & 1U)" ( (binary_expression "(int)fVar20 & 1U" (cast_expression "(int)fVar20" ( (type_descriptor "int" primitive_type) ) identifier) & number_literal) )) << number_literal) ))))) ;) })) (expression_statement "*param_7 = bVar6;" (assignment_expression "*param_7 = bVar6" (pointer_expression "*param_7" * identifier) = identifier) ;) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" identifier = (binary_expression "param_6 + param_2[0xb0] * 4" identifier + (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" identifier [ number_literal ]) * number_literal))) ;) (expression_statement "bVar3 = bVar6;" (assignment_expression "bVar3 = bVar6" identifier = identifier) ;) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }" if (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" ( (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" * (cast_expression "(int *)(param_2[0xb4] + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x40)" ( (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) != number_literal) )) (compound_statement "{\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }" { (expression_statement "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" identifier = (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" * (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" identifier + (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" * (cast_expression "(int *)(param_2[0xb4] + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x44)" ( (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }" if (parenthesized_expression "(fVar21 <= fVar20)" ( (binary_expression "fVar21 <= fVar20" identifier <= identifier) )) (compound_statement "{\n                  fVar20 = fVar20 - fVar21;\n                }" { (expression_statement "fVar20 = fVar20 - fVar21;" (assignment_expression "fVar20 = fVar20 - fVar21" identifier = (binary_expression "fVar20 - fVar21" identifier - identifier)) ;) })) (expression_statement "bVar4 = (byte)(((int)fVar20 & 1U) << 3);" (assignment_expression "bVar4 = (byte)(((int)fVar20 & 1U) << 3)" identifier = (call_expression "(byte)(((int)fVar20 & 1U) << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((int)fVar20 & 1U) << 3)" ( (binary_expression "((int)fVar20 & 1U) << 3" (parenthesized_expression "((int)fVar20 & 1U)" ( (binary_expression "(int)fVar20 & 1U" (cast_expression "(int)fVar20" ( (type_descriptor "int" primitive_type) ) identifier) & number_literal) )) << number_literal) )))) ;) (expression_statement "bVar3 = bVar6 | bVar4;" (assignment_expression "bVar3 = bVar6 | bVar4" identifier = (binary_expression "bVar6 | bVar4" identifier | identifier)) ;) (expression_statement "*param_7 = bVar6 | bVar4;" (assignment_expression "*param_7 = bVar6 | bVar4" (pointer_expression "*param_7" * identifier) = (binary_expression "bVar6 | bVar4" identifier | identifier)) ;) })) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" identifier = (binary_expression "param_6 + param_2[0xb0] * 4" identifier + (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" identifier [ number_literal ]) * number_literal))) ;) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }" if (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" ( (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" * (cast_expression "(int *)(param_2[0xb4] + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x40)" ( (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) != number_literal) )) (compound_statement "{\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }" { (expression_statement "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" identifier = (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" * (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" identifier + (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" * (cast_expression "(int *)(param_2[0xb4] + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x44)" ( (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }" if (parenthesized_expression "(fVar21 <= fVar20)" ( (binary_expression "fVar21 <= fVar20" identifier <= identifier) )) (compound_statement "{\n                  fVar20 = fVar20 - fVar21;\n                }" { (expression_statement "fVar20 = fVar20 - fVar21;" (assignment_expression "fVar20 = fVar20 - fVar21" identifier = (binary_expression "fVar20 - fVar21" identifier - identifier)) ;) })) (expression_statement "bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);" (assignment_expression "bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2)" identifier = (binary_expression "bVar3 | (byte)(((int)fVar20 & 1U) << 2)" identifier | (call_expression "(byte)(((int)fVar20 & 1U) << 2)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((int)fVar20 & 1U) << 2)" ( (binary_expression "((int)fVar20 & 1U) << 2" (parenthesized_expression "((int)fVar20 & 1U)" ( (binary_expression "(int)fVar20 & 1U" (cast_expression "(int)fVar20" ( (type_descriptor "int" primitive_type) ) identifier) & number_literal) )) << number_literal) ))))) ;) })) (expression_statement "*param_7 = bVar3;" (assignment_expression "*param_7 = bVar3" (pointer_expression "*param_7" * identifier) = identifier) ;) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" identifier = (binary_expression "param_6 + param_2[0xb0] * 4" identifier + (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" identifier [ number_literal ]) * number_literal))) ;) (expression_statement "bVar6 = bVar3;" (assignment_expression "bVar6 = bVar3" identifier = identifier) ;) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }" if (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" ( (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" * (cast_expression "(int *)(param_2[0xb4] + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x40)" ( (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) != number_literal) )) (compound_statement "{\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }" { (expression_statement "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" identifier = (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" * (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" identifier + (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" * (cast_expression "(int *)(param_2[0xb4] + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x44)" ( (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }" if (parenthesized_expression "(fVar21 <= fVar20)" ( (binary_expression "fVar21 <= fVar20" identifier <= identifier) )) (compound_statement "{\n                  fVar20 = fVar20 - fVar21;\n                }" { (expression_statement "fVar20 = fVar20 - fVar21;" (assignment_expression "fVar20 = fVar20 - fVar21" identifier = (binary_expression "fVar20 - fVar21" identifier - identifier)) ;) })) (expression_statement "bVar4 = (byte)(((int)fVar20 & 1U) << 1);" (assignment_expression "bVar4 = (byte)(((int)fVar20 & 1U) << 1)" identifier = (call_expression "(byte)(((int)fVar20 & 1U) << 1)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((int)fVar20 & 1U) << 1)" ( (binary_expression "((int)fVar20 & 1U) << 1" (parenthesized_expression "((int)fVar20 & 1U)" ( (binary_expression "(int)fVar20 & 1U" (cast_expression "(int)fVar20" ( (type_descriptor "int" primitive_type) ) identifier) & number_literal) )) << number_literal) )))) ;) (expression_statement "bVar6 = bVar3 | bVar4;" (assignment_expression "bVar6 = bVar3 | bVar4" identifier = (binary_expression "bVar3 | bVar4" identifier | identifier)) ;) (expression_statement "*param_7 = bVar3 | bVar4;" (assignment_expression "*param_7 = bVar3 | bVar4" (pointer_expression "*param_7" * identifier) = (binary_expression "bVar3 | bVar4" identifier | identifier)) ;) })) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" identifier = (binary_expression "param_6 + param_2[0xb0] * 4" identifier + (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" identifier [ number_literal ]) * number_literal))) ;) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }" if (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" ( (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" * (cast_expression "(int *)(param_2[0xb4] + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x40)" ( (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) != number_literal) )) (compound_statement "{\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }" { (expression_statement "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" identifier = (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" * (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" identifier + (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" * (cast_expression "(int *)(param_2[0xb4] + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x44)" ( (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }" if (parenthesized_expression "(fVar20 < fVar21)" ( (binary_expression "fVar20 < fVar21" identifier < identifier) )) (compound_statement "{\n                  bVar3 = (byte)(int)fVar20;\n                }" { (expression_statement "bVar3 = (byte)(int)fVar20;" (assignment_expression "bVar3 = (byte)(int)fVar20" identifier = (cast_expression "(byte)(int)fVar20" ( (type_descriptor "byte" type_identifier) ) (cast_expression "(int)fVar20" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }) (else_clause "else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }" else (compound_statement "{\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }" { (expression_statement "bVar3 = (byte)(int)(fVar20 - fVar21);" (assignment_expression "bVar3 = (byte)(int)(fVar20 - fVar21)" identifier = (call_expression "(byte)(int)(fVar20 - fVar21)" (call_expression "(byte)(int)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(int)" ( identifier ))) (argument_list "(fVar20 - fVar21)" ( (binary_expression "fVar20 - fVar21" identifier - identifier) )))) ;) }))) (expression_statement "bVar6 = bVar6 | bVar3 & 1;" (assignment_expression "bVar6 = bVar6 | bVar3 & 1" identifier = (binary_expression "bVar6 | bVar3 & 1" identifier | (binary_expression "bVar3 & 1" identifier & number_literal))) ;) })) (expression_statement "*param_7 = bVar6;" (assignment_expression "*param_7 = bVar6" (pointer_expression "*param_7" * identifier) = identifier) ;) (expression_statement "param_7 = param_7 + 1;" (assignment_expression "param_7 = param_7 + 1" identifier = (binary_expression "param_7 + 1" identifier + number_literal)) ;) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" identifier = (binary_expression "param_6 + param_2[0xb0] * 4" identifier + (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" identifier [ number_literal ]) * number_literal))) ;) }) while (parenthesized_expression "(param_7 != pbVar5)" ( (binary_expression "param_7 != pbVar5" identifier != identifier) )) ;) })) (if_statement "if ((param_5 & 7) == 0) {\n            return;\n          }" if (parenthesized_expression "((param_5 & 7) == 0)" ( (binary_expression "(param_5 & 7) == 0" (parenthesized_expression "(param_5 & 7)" ( (binary_expression "param_5 & 7" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) (expression_statement "*param_7 = 0;" (assignment_expression "*param_7 = 0" (pointer_expression "*param_7" * identifier) = number_literal) ;) (if_statement "if ((param_5 & 7) == 0) {\n            return;\n          }" if (parenthesized_expression "((param_5 & 7) == 0)" ( (binary_expression "(param_5 & 7) == 0" (parenthesized_expression "(param_5 & 7)" ( (binary_expression "param_5 & 7" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;) (expression_statement "uVar17 = 7;" (assignment_expression "uVar17 = 7" identifier = number_literal) ;) (expression_statement "fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);" (assignment_expression "fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" identifier = (pointer_expression "*(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" * (cast_expression "(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (binary_expression "PTR_s_t_to_left_003a88e4 + -0x51e0" identifier + number_literal) ))))) ;) (do_statement "do {\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }\n            *param_7 = (byte)uVar16;\n            uVar17 = uVar17 - 1;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != (~param_5 & 7));" do (compound_statement "{\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }\n            *param_7 = (byte)uVar16;\n            uVar17 = uVar17 - 1;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          }" { (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }" if (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" ( (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" * (cast_expression "(int *)(param_2[0xb4] + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x40)" ( (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) != number_literal) )) (compound_statement "{\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }" { (expression_statement "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" identifier = (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" * (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" identifier + (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" * (cast_expression "(int *)(param_2[0xb4] + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x44)" ( (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }" if (parenthesized_expression "(fVar21 <= fVar20)" ( (binary_expression "fVar21 <= fVar20" identifier <= identifier) )) (compound_statement "{\n                fVar20 = fVar20 - fVar21;\n              }" { (expression_statement "fVar20 = fVar20 - fVar21;" (assignment_expression "fVar20 = fVar20 - fVar21" identifier = (binary_expression "fVar20 - fVar21" identifier - identifier)) ;) })) (expression_statement "uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;" (assignment_expression "uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16" identifier = (binary_expression "((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16" (binary_expression "((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff" (binary_expression "((int)fVar20 & 1U) << (uVar17 & 0x1f)" (parenthesized_expression "((int)fVar20 & 1U)" ( (binary_expression "(int)fVar20 & 1U" (cast_expression "(int)fVar20" ( (type_descriptor "int" primitive_type) ) identifier) & number_literal) )) << (parenthesized_expression "(uVar17 & 0x1f)" ( (binary_expression "uVar17 & 0x1f" identifier & number_literal) ))) & number_literal) | identifier)) ;) })) (expression_statement "*param_7 = (byte)uVar16;" (assignment_expression "*param_7 = (byte)uVar16" (pointer_expression "*param_7" * identifier) = (cast_expression "(byte)uVar16" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar17 = uVar17 - 1;" (assignment_expression "uVar17 = uVar17 - 1" identifier = (binary_expression "uVar17 - 1" identifier - number_literal)) ;) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" identifier = (binary_expression "param_6 + param_2[0xb0] * 4" identifier + (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" identifier [ number_literal ]) * number_literal))) ;) }) while (parenthesized_expression "(uVar17 != (~param_5 & 7))" ( (binary_expression "uVar17 != (~param_5 & 7)" identifier != (parenthesized_expression "(~param_5 & 7)" ( (binary_expression "~param_5 & 7" (unary_expression "~param_5" ~ identifier) & number_literal) ))) )) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar17 == 4) {\n          if (0 < (int)(param_5 - 1)) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;\n            do {\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 1) == 0) {\n            return;\n          }\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }\n            else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }\n            *param_7 = bVar3;\n            return;\n          }\n          *param_7 = 0;\n          return;\n        }" if (parenthesized_expression "(uVar17 == 4)" ( (binary_expression "uVar17 == 4" identifier == number_literal) )) (compound_statement "{\n          if (0 < (int)(param_5 - 1)) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;\n            do {\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 1) == 0) {\n            return;\n          }\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }\n            else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }\n            *param_7 = bVar3;\n            return;\n          }\n          *param_7 = 0;\n          return;\n        }" { (if_statement "if (0 < (int)(param_5 - 1)) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;\n            do {\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }" if (parenthesized_expression "(0 < (int)(param_5 - 1))" ( (binary_expression "0 < (int)(param_5 - 1)" number_literal < (cast_expression "(int)(param_5 - 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(param_5 - 1)" ( (binary_expression "param_5 - 1" identifier - number_literal) )))) )) (compound_statement "{\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;\n            do {\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }" { (expression_statement "fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);" (assignment_expression "fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" identifier = (pointer_expression "*(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" * (cast_expression "(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (binary_expression "PTR_s_t_to_left_003a88e4 + -0x51e0" identifier + number_literal) ))))) ;) (expression_statement "pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;" (assignment_expression "pbVar5 = param_7 + (param_5 - 2 >> 1) + 1" identifier = (binary_expression "param_7 + (param_5 - 2 >> 1) + 1" (binary_expression "param_7 + (param_5 - 2 >> 1)" identifier + (parenthesized_expression "(param_5 - 2 >> 1)" ( (binary_expression "param_5 - 2 >> 1" (binary_expression "param_5 - 2" identifier - number_literal) >> number_literal) ))) + number_literal)) ;) (do_statement "do {\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);" do (compound_statement "{\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            }" { (if_statement "if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }" if (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) == 0)" ( (binary_expression "*(int *)(param_2[0xb4] + 0x40) == 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" * (cast_expression "(int *)(param_2[0xb4] + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x40)" ( (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) == number_literal) )) (compound_statement "{\n                bVar3 = 0;\n              }" { (expression_statement "bVar3 = 0;" (assignment_expression "bVar3 = 0" identifier = number_literal) ;) }) (else_clause "else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }" else (compound_statement "{\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }" { (expression_statement "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" identifier = (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" * (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" identifier + (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" * (cast_expression "(int *)(param_2[0xb4] + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x44)" ( (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }" if (parenthesized_expression "(fVar21 <= fVar20)" ( (binary_expression "fVar21 <= fVar20" identifier <= identifier) )) (compound_statement "{\n                  fVar20 = fVar20 - fVar21;\n                }" { (expression_statement "fVar20 = fVar20 - fVar21;" (assignment_expression "fVar20 = fVar20 - fVar21" identifier = (binary_expression "fVar20 - fVar21" identifier - identifier)) ;) })) (expression_statement "bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);" (assignment_expression "bVar3 = (byte)(((int)fVar20 & 0xffU) << 4)" identifier = (call_expression "(byte)(((int)fVar20 & 0xffU) << 4)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((int)fVar20 & 0xffU) << 4)" ( (binary_expression "((int)fVar20 & 0xffU) << 4" (parenthesized_expression "((int)fVar20 & 0xffU)" ( (binary_expression "(int)fVar20 & 0xffU" (cast_expression "(int)fVar20" ( (type_descriptor "int" primitive_type) ) identifier) & number_literal) )) << number_literal) )))) ;) }))) (expression_statement "*param_7 = bVar3;" (assignment_expression "*param_7 = bVar3" (pointer_expression "*param_7" * identifier) = identifier) ;) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" identifier = (binary_expression "param_6 + param_2[0xb0] * 4" identifier + (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" identifier [ number_literal ]) * number_literal))) ;) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }" if (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" ( (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" * (cast_expression "(int *)(param_2[0xb4] + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x40)" ( (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) != number_literal) )) (compound_statement "{\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }" { (expression_statement "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" identifier = (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" * (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" identifier + (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" * (cast_expression "(int *)(param_2[0xb4] + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x44)" ( (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }" if (parenthesized_expression "(fVar20 < fVar21)" ( (binary_expression "fVar20 < fVar21" identifier < identifier) )) (compound_statement "{\n                  bVar6 = (byte)(int)fVar20;\n                }" { (expression_statement "bVar6 = (byte)(int)fVar20;" (assignment_expression "bVar6 = (byte)(int)fVar20" identifier = (cast_expression "(byte)(int)fVar20" ( (type_descriptor "byte" type_identifier) ) (cast_expression "(int)fVar20" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }) (else_clause "else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }" else (compound_statement "{\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }" { (expression_statement "bVar6 = (byte)(int)(fVar20 - fVar21);" (assignment_expression "bVar6 = (byte)(int)(fVar20 - fVar21)" identifier = (call_expression "(byte)(int)(fVar20 - fVar21)" (call_expression "(byte)(int)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(int)" ( identifier ))) (argument_list "(fVar20 - fVar21)" ( (binary_expression "fVar20 - fVar21" identifier - identifier) )))) ;) }))) (expression_statement "bVar3 = bVar3 | bVar6 & 0xf;" (assignment_expression "bVar3 = bVar3 | bVar6 & 0xf" identifier = (binary_expression "bVar3 | bVar6 & 0xf" identifier | (binary_expression "bVar6 & 0xf" identifier & number_literal))) ;) })) (expression_statement "*param_7 = bVar3;" (assignment_expression "*param_7 = bVar3" (pointer_expression "*param_7" * identifier) = identifier) ;) (expression_statement "param_7 = param_7 + 1;" (assignment_expression "param_7 = param_7 + 1" identifier = (binary_expression "param_7 + 1" identifier + number_literal)) ;) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" identifier = (binary_expression "param_6 + param_2[0xb0] * 4" identifier + (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" identifier [ number_literal ]) * number_literal))) ;) }) while (parenthesized_expression "(param_7 != pbVar5)" ( (binary_expression "param_7 != pbVar5" identifier != identifier) )) ;) })) (if_statement "if ((param_5 & 1) == 0) {\n            return;\n          }" if (parenthesized_expression "((param_5 & 1) == 0)" ( (binary_expression "(param_5 & 1) == 0" (parenthesized_expression "(param_5 & 1)" ( (binary_expression "param_5 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }\n            else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }\n            *param_7 = bVar3;\n            return;\n          }" if (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" ( (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" * (cast_expression "(int *)(param_2[0xb4] + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x40)" ( (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) != number_literal) )) (compound_statement "{\n            fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }\n            else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }\n            *param_7 = bVar3;\n            return;\n          }" { (expression_statement "fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" identifier = (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" * (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" identifier + (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" * (cast_expression "(int *)(param_2[0xb4] + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x44)" ( (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }\n            else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }" if (parenthesized_expression "(fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0))" ( (binary_expression "fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" identifier < (pointer_expression "*(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" * (cast_expression "(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (binary_expression "PTR_s_t_to_left_003a88e4 + -0x51e0" identifier + number_literal) ))))) )) (compound_statement "{\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }" { (expression_statement "bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);" (assignment_expression "bVar3 = (byte)(((int)fVar21 & 0xfU) << 4)" identifier = (call_expression "(byte)(((int)fVar21 & 0xfU) << 4)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((int)fVar21 & 0xfU) << 4)" ( (binary_expression "((int)fVar21 & 0xfU) << 4" (parenthesized_expression "((int)fVar21 & 0xfU)" ( (binary_expression "(int)fVar21 & 0xfU" (cast_expression "(int)fVar21" ( (type_descriptor "int" primitive_type) ) identifier) & number_literal) )) << number_literal) )))) ;) }) (else_clause "else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }" else (compound_statement "{\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }" { (expression_statement "bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);" (assignment_expression "bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4)" identifier = (call_expression "(byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4)" ( (binary_expression "((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4" (parenthesized_expression "((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)" ( (binary_expression "(int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU" (cast_expression "(int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0))" ( (binary_expression "fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" identifier - (pointer_expression "*(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" * (cast_expression "(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (binary_expression "PTR_s_t_to_left_003a88e4 + -0x51e0" identifier + number_literal) ))))) ))) & number_literal) )) << number_literal) )))) ;) }))) (expression_statement "*param_7 = bVar3;" (assignment_expression "*param_7 = bVar3" (pointer_expression "*param_7" * identifier) = identifier) ;) (return_statement "return;" return ;) })) (expression_statement "*param_7 = 0;" (assignment_expression "*param_7 = 0" (pointer_expression "*param_7" * identifier) = number_literal) ;) (return_statement "return;" return ;) })) }) (else_clause "else {\n        if (uVar17 == 0x20) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar4 = 0;\n            bVar6 = 0;\n            bVar3 = 0;\n            bVar8 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 4;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n        if (uVar17 == 0x40) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n        }\n        else if (uVar17 == 0x10) {\n          if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n      }" else (compound_statement "{\n        if (uVar17 == 0x20) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar4 = 0;\n            bVar6 = 0;\n            bVar3 = 0;\n            bVar8 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 4;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n        if (uVar17 == 0x40) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n        }\n        else if (uVar17 == 0x10) {\n          if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n      }" { (if_statement "if (uVar17 == 0x20) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar4 = 0;\n            bVar6 = 0;\n            bVar3 = 0;\n            bVar8 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 4;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }" if (parenthesized_expression "(uVar17 == 0x20)" ( (binary_expression "uVar17 == 0x20" identifier == number_literal) )) (compound_statement "{\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar4 = 0;\n            bVar6 = 0;\n            bVar3 = 0;\n            bVar8 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 4;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }" { (if_statement "if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }" if (parenthesized_expression "(param_3[2] == 1)" ( (binary_expression "param_3[2] == 1" (subscript_expression "param_3[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }" { (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (if_statement "if ((int)param_5 < 1) {\n              return;\n            }" if (parenthesized_expression "((int)param_5 < 1)" ( (binary_expression "(int)param_5 < 1" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n              return;\n            }" { (return_statement "return;" return ;) })) (expression_statement "dVar22 = *(double *)(param_3 + 0x12);" (assignment_expression "dVar22 = *(double *)(param_3 + 0x12)" identifier = (pointer_expression "*(double *)(param_3 + 0x12)" * (cast_expression "(double *)(param_3 + 0x12)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x12)" ( (binary_expression "param_3 + 0x12" identifier + number_literal) ))))) ;) (expression_statement "uVar16 = param_3[0x11];" (assignment_expression "uVar16 = param_3[0x11]" identifier = (subscript_expression "param_3[0x11]" identifier [ number_literal ])) ;) (expression_statement "dVar19 = *(double *)(param_3 + 4);" (assignment_expression "dVar19 = *(double *)(param_3 + 4)" identifier = (pointer_expression "*(double *)(param_3 + 4)" * (cast_expression "(double *)(param_3 + 4)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) ))))) ;) (do_statement "do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);" do (compound_statement "{\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            }" { (expression_statement "dVar18 = 0.0;" (assignment_expression "dVar18 = 0.0" identifier = number_literal) ;) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }" if (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" ( (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" * (cast_expression "(int *)(param_2[0xb4] + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x40)" ( (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) != number_literal) )) (compound_statement "{\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }" { (expression_statement "dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" identifier = (cast_expression "(double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" * (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" identifier + (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" * (cast_expression "(int *)(param_2[0xb4] + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x44)" ( (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) )))))) ;) })) (expression_statement "fVar21 = (float)(dVar22 * dVar18 + dVar19);" (assignment_expression "fVar21 = (float)(dVar22 * dVar18 + dVar19)" identifier = (cast_expression "(float)(dVar22 * dVar18 + dVar19)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(dVar22 * dVar18 + dVar19)" ( (binary_expression "dVar22 * dVar18 + dVar19" (binary_expression "dVar22 * dVar18" identifier * identifier) + identifier) )))) ;) (expression_statement "bVar4 = (byte)((uint)fVar21 >> 8);" (assignment_expression "bVar4 = (byte)((uint)fVar21 >> 8)" identifier = (call_expression "(byte)((uint)fVar21 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar21 >> 8)" ( (binary_expression "(uint)fVar21 >> 8" (cast_expression "(uint)fVar21" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar6 = (byte)((uint)fVar21 >> 0x10);" (assignment_expression "bVar6 = (byte)((uint)fVar21 >> 0x10)" identifier = (call_expression "(byte)((uint)fVar21 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar21 >> 0x10)" ( (binary_expression "(uint)fVar21 >> 0x10" (cast_expression "(uint)fVar21" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar3 = (byte)((uint)fVar21 >> 0x18);" (assignment_expression "bVar3 = (byte)((uint)fVar21 >> 0x18)" identifier = (call_expression "(byte)((uint)fVar21 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)fVar21 >> 0x18)" ( (binary_expression "(uint)fVar21 >> 0x18" (cast_expression "(uint)fVar21" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }" if (parenthesized_expression "(uVar16 == 1)" ( (binary_expression "uVar16 == 1" identifier == number_literal) )) (compound_statement "{\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }" { (expression_statement "param_7[1] = bVar6;" (assignment_expression "param_7[1] = bVar6" (subscript_expression "param_7[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*param_7 = bVar3;" (assignment_expression "*param_7 = bVar3" (pointer_expression "*param_7" * identifier) = identifier) ;) (expression_statement "param_7[2] = bVar4;" (assignment_expression "param_7[2] = bVar4" (subscript_expression "param_7[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_7[3] = SUB41(fVar21,0);" (assignment_expression "param_7[3] = SUB41(fVar21,0)" (subscript_expression "param_7[3]" identifier [ number_literal ]) = (call_expression "SUB41(fVar21,0)" identifier (argument_list "(fVar21,0)" ( identifier , number_literal )))) ;) }) (else_clause "else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }" else (compound_statement "{\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }" { (expression_statement "*param_7 = SUB41(fVar21,0);" (assignment_expression "*param_7 = SUB41(fVar21,0)" (pointer_expression "*param_7" * identifier) = (call_expression "SUB41(fVar21,0)" identifier (argument_list "(fVar21,0)" ( identifier , number_literal )))) ;) (expression_statement "param_7[1] = bVar4;" (assignment_expression "param_7[1] = bVar4" (subscript_expression "param_7[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_7[2] = bVar6;" (assignment_expression "param_7[2] = bVar6" (subscript_expression "param_7[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_7[3] = bVar3;" (assignment_expression "param_7[3] = bVar3" (subscript_expression "param_7[3]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "uVar17 = uVar17 + 1;" (assignment_expression "uVar17 = uVar17 + 1" identifier = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) (expression_statement "param_7 = param_7 + param_3[10] + 4;" (assignment_expression "param_7 = param_7 + param_3[10] + 4" identifier = (binary_expression "param_7 + param_3[10] + 4" (binary_expression "param_7 + param_3[10]" identifier + (subscript_expression "param_3[10]" identifier [ number_literal ])) + number_literal)) ;) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" identifier = (binary_expression "param_6 + param_2[0xb0] * 4" identifier + (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" identifier [ number_literal ]) * number_literal))) ;) }) while (parenthesized_expression "(uVar17 != param_5)" ( (binary_expression "uVar17 != param_5" identifier != identifier) )) ;) (return_statement "return;" return ;) })) (if_statement "if ((int)param_5 < 1) {\n            return;\n          }" if (parenthesized_expression "((int)param_5 < 1)" ( (binary_expression "(int)param_5 < 1" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (expression_statement "fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);" (assignment_expression "fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" identifier = (pointer_expression "*(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" * (cast_expression "(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (binary_expression "PTR_s_t_to_left_003a88e4 + -0x51e0" identifier + number_literal) ))))) ;) (do_statement "do {\n            bVar4 = 0;\n            bVar6 = 0;\n            bVar3 = 0;\n            bVar8 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 4;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);" do (compound_statement "{\n            bVar4 = 0;\n            bVar6 = 0;\n            bVar3 = 0;\n            bVar8 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 4;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          }" { (expression_statement "bVar4 = 0;" (assignment_expression "bVar4 = 0" identifier = number_literal) ;) (expression_statement "bVar6 = 0;" (assignment_expression "bVar6 = 0" identifier = number_literal) ;) (expression_statement "bVar3 = 0;" (assignment_expression "bVar3 = 0" identifier = number_literal) ;) (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" identifier = number_literal) ;) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }" if (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" ( (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" * (cast_expression "(int *)(param_2[0xb4] + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x40)" ( (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) != number_literal) )) (compound_statement "{\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }" { (expression_statement "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" identifier = (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" * (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" identifier + (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" * (cast_expression "(int *)(param_2[0xb4] + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x44)" ( (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }" if (parenthesized_expression "(fVar21 <= fVar20)" ( (binary_expression "fVar21 <= fVar20" identifier <= identifier) )) (compound_statement "{\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }" { (expression_statement "uVar16 = (int)(fVar20 - fVar21) | 0x80000000;" (assignment_expression "uVar16 = (int)(fVar20 - fVar21) | 0x80000000" identifier = (binary_expression "(int)(fVar20 - fVar21) | 0x80000000" (cast_expression "(int)(fVar20 - fVar21)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(fVar20 - fVar21)" ( (binary_expression "fVar20 - fVar21" identifier - identifier) ))) | number_literal)) ;) }) (else_clause "else {\n                uVar16 = (uint)fVar20;\n              }" else (compound_statement "{\n                uVar16 = (uint)fVar20;\n              }" { (expression_statement "uVar16 = (uint)fVar20;" (assignment_expression "uVar16 = (uint)fVar20" identifier = (cast_expression "(uint)fVar20" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }))) (expression_statement "bVar8 = (byte)(uVar16 >> 0x18);" (assignment_expression "bVar8 = (byte)(uVar16 >> 0x18)" identifier = (call_expression "(byte)(uVar16 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar16 >> 0x18)" ( (binary_expression "uVar16 >> 0x18" identifier >> number_literal) )))) ;) (expression_statement "bVar3 = (byte)(uVar16 >> 0x10);" (assignment_expression "bVar3 = (byte)(uVar16 >> 0x10)" identifier = (call_expression "(byte)(uVar16 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar16 >> 0x10)" ( (binary_expression "uVar16 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "bVar6 = (byte)(uVar16 >> 8);" (assignment_expression "bVar6 = (byte)(uVar16 >> 8)" identifier = (call_expression "(byte)(uVar16 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar16 >> 8)" ( (binary_expression "uVar16 >> 8" identifier >> number_literal) )))) ;) (expression_statement "bVar4 = (byte)uVar16;" (assignment_expression "bVar4 = (byte)uVar16" identifier = (cast_expression "(byte)uVar16" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) })) (if_statement "if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }" if (parenthesized_expression "(param_3[0x11] == 1)" ( (binary_expression "param_3[0x11] == 1" (subscript_expression "param_3[0x11]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }" { (expression_statement "*param_7 = bVar4;" (assignment_expression "*param_7 = bVar4" (pointer_expression "*param_7" * identifier) = identifier) ;) (expression_statement "param_7[1] = bVar6;" (assignment_expression "param_7[1] = bVar6" (subscript_expression "param_7[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_7[2] = bVar3;" (assignment_expression "param_7[2] = bVar3" (subscript_expression "param_7[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_7[3] = bVar8;" (assignment_expression "param_7[3] = bVar8" (subscript_expression "param_7[3]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }" else (compound_statement "{\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }" { (expression_statement "*param_7 = bVar8;" (assignment_expression "*param_7 = bVar8" (pointer_expression "*param_7" * identifier) = identifier) ;) (expression_statement "param_7[1] = bVar3;" (assignment_expression "param_7[1] = bVar3" (subscript_expression "param_7[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_7[2] = bVar6;" (assignment_expression "param_7[2] = bVar6" (subscript_expression "param_7[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_7[3] = bVar4;" (assignment_expression "param_7[3] = bVar4" (subscript_expression "param_7[3]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "uVar17 = uVar17 + 1;" (assignment_expression "uVar17 = uVar17 + 1" identifier = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) (expression_statement "param_7 = param_7 + param_3[10] + 4;" (assignment_expression "param_7 = param_7 + param_3[10] + 4" identifier = (binary_expression "param_7 + param_3[10] + 4" (binary_expression "param_7 + param_3[10]" identifier + (subscript_expression "param_3[10]" identifier [ number_literal ])) + number_literal)) ;) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" identifier = (binary_expression "param_6 + param_2[0xb0] * 4" identifier + (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" identifier [ number_literal ]) * number_literal))) ;) }) while (parenthesized_expression "(uVar17 != param_5)" ( (binary_expression "uVar17 != param_5" identifier != identifier) )) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar17 == 0x40) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n        }\n        else if (uVar17 == 0x10) {\n          if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }" if (parenthesized_expression "(uVar17 == 0x40)" ( (binary_expression "uVar17 == 0x40" identifier == number_literal) )) (compound_statement "{\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n        }" { (if_statement "if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }" if (parenthesized_expression "(param_3[2] == 1)" ( (binary_expression "param_3[2] == 1" (subscript_expression "param_3[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }" { (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (if_statement "if ((int)param_5 < 1) {\n              return;\n            }" if (parenthesized_expression "((int)param_5 < 1)" ( (binary_expression "(int)param_5 < 1" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n              return;\n            }" { (return_statement "return;" return ;) })) (expression_statement "dVar22 = *(double *)(param_3 + 0x12);" (assignment_expression "dVar22 = *(double *)(param_3 + 0x12)" identifier = (pointer_expression "*(double *)(param_3 + 0x12)" * (cast_expression "(double *)(param_3 + 0x12)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x12)" ( (binary_expression "param_3 + 0x12" identifier + number_literal) ))))) ;) (expression_statement "uVar16 = param_3[0x11];" (assignment_expression "uVar16 = param_3[0x11]" identifier = (subscript_expression "param_3[0x11]" identifier [ number_literal ])) ;) (expression_statement "dVar19 = *(double *)(param_3 + 4);" (assignment_expression "dVar19 = *(double *)(param_3 + 4)" identifier = (pointer_expression "*(double *)(param_3 + 4)" * (cast_expression "(double *)(param_3 + 4)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) ))))) ;) (do_statement "do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);" do (compound_statement "{\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            }" { (expression_statement "dVar18 = 0.0;" (assignment_expression "dVar18 = 0.0" identifier = number_literal) ;) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }" if (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" ( (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" * (cast_expression "(int *)(param_2[0xb4] + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x40)" ( (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) != number_literal) )) (compound_statement "{\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }" { (expression_statement "dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" identifier = (cast_expression "(double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" * (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" identifier + (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" * (cast_expression "(int *)(param_2[0xb4] + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x44)" ( (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) )))))) ;) })) (expression_statement "dVar18 = dVar22 * dVar18 + dVar19;" (assignment_expression "dVar18 = dVar22 * dVar18 + dVar19" identifier = (binary_expression "dVar22 * dVar18 + dVar19" (binary_expression "dVar22 * dVar18" identifier * identifier) + identifier)) ;) (expression_statement "bVar3 = (byte)((ulonglong)dVar18 >> 0x20);" (assignment_expression "bVar3 = (byte)((ulonglong)dVar18 >> 0x20)" identifier = (call_expression "(byte)((ulonglong)dVar18 >> 0x20)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar18 >> 0x20)" ( (binary_expression "(ulonglong)dVar18 >> 0x20" (cast_expression "(ulonglong)dVar18" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar15 = (byte)((ulonglong)dVar18 >> 8);" (assignment_expression "bVar15 = (byte)((ulonglong)dVar18 >> 8)" identifier = (call_expression "(byte)((ulonglong)dVar18 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar18 >> 8)" ( (binary_expression "(ulonglong)dVar18 >> 8" (cast_expression "(ulonglong)dVar18" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar13 = (byte)((ulonglong)dVar18 >> 0x10);" (assignment_expression "bVar13 = (byte)((ulonglong)dVar18 >> 0x10)" identifier = (call_expression "(byte)((ulonglong)dVar18 >> 0x10)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar18 >> 0x10)" ( (binary_expression "(ulonglong)dVar18 >> 0x10" (cast_expression "(ulonglong)dVar18" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar4 = (byte)((ulonglong)dVar18 >> 0x18);" (assignment_expression "bVar4 = (byte)((ulonglong)dVar18 >> 0x18)" identifier = (call_expression "(byte)((ulonglong)dVar18 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar18 >> 0x18)" ( (binary_expression "(ulonglong)dVar18 >> 0x18" (cast_expression "(ulonglong)dVar18" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar10 = (byte)((ulonglong)dVar18 >> 0x28);" (assignment_expression "bVar10 = (byte)((ulonglong)dVar18 >> 0x28)" identifier = (call_expression "(byte)((ulonglong)dVar18 >> 0x28)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar18 >> 0x28)" ( (binary_expression "(ulonglong)dVar18 >> 0x28" (cast_expression "(ulonglong)dVar18" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar8 = (byte)((ulonglong)dVar18 >> 0x30);" (assignment_expression "bVar8 = (byte)((ulonglong)dVar18 >> 0x30)" identifier = (call_expression "(byte)((ulonglong)dVar18 >> 0x30)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar18 >> 0x30)" ( (binary_expression "(ulonglong)dVar18 >> 0x30" (cast_expression "(ulonglong)dVar18" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar6 = (byte)((ulonglong)dVar18 >> 0x38);" (assignment_expression "bVar6 = (byte)((ulonglong)dVar18 >> 0x38)" identifier = (call_expression "(byte)((ulonglong)dVar18 >> 0x38)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulonglong)dVar18 >> 0x38)" ( (binary_expression "(ulonglong)dVar18 >> 0x38" (cast_expression "(ulonglong)dVar18" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }" if (parenthesized_expression "(uVar16 == 1)" ( (binary_expression "uVar16 == 1" identifier == number_literal) )) (compound_statement "{\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }" { (expression_statement "param_7[1] = bVar8;" (assignment_expression "param_7[1] = bVar8" (subscript_expression "param_7[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*param_7 = bVar6;" (assignment_expression "*param_7 = bVar6" (pointer_expression "*param_7" * identifier) = identifier) ;) (expression_statement "param_7[2] = bVar10;" (assignment_expression "param_7[2] = bVar10" (subscript_expression "param_7[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_7[3] = bVar3;" (assignment_expression "param_7[3] = bVar3" (subscript_expression "param_7[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_7[4] = bVar4;" (assignment_expression "param_7[4] = bVar4" (subscript_expression "param_7[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_7[5] = bVar13;" (assignment_expression "param_7[5] = bVar13" (subscript_expression "param_7[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_7[6] = bVar15;" (assignment_expression "param_7[6] = bVar15" (subscript_expression "param_7[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_7[7] = SUB81(dVar18,0);" (assignment_expression "param_7[7] = SUB81(dVar18,0)" (subscript_expression "param_7[7]" identifier [ number_literal ]) = (call_expression "SUB81(dVar18,0)" identifier (argument_list "(dVar18,0)" ( identifier , number_literal )))) ;) }) (else_clause "else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }" else (compound_statement "{\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }" { (expression_statement "*param_7 = SUB81(dVar18,0);" (assignment_expression "*param_7 = SUB81(dVar18,0)" (pointer_expression "*param_7" * identifier) = (call_expression "SUB81(dVar18,0)" identifier (argument_list "(dVar18,0)" ( identifier , number_literal )))) ;) (expression_statement "param_7[1] = bVar15;" (assignment_expression "param_7[1] = bVar15" (subscript_expression "param_7[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_7[2] = bVar13;" (assignment_expression "param_7[2] = bVar13" (subscript_expression "param_7[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_7[3] = bVar4;" (assignment_expression "param_7[3] = bVar4" (subscript_expression "param_7[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_7[4] = bVar3;" (assignment_expression "param_7[4] = bVar3" (subscript_expression "param_7[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_7[5] = bVar10;" (assignment_expression "param_7[5] = bVar10" (subscript_expression "param_7[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_7[6] = bVar8;" (assignment_expression "param_7[6] = bVar8" (subscript_expression "param_7[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_7[7] = bVar6;" (assignment_expression "param_7[7] = bVar6" (subscript_expression "param_7[7]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "uVar17 = uVar17 + 1;" (assignment_expression "uVar17 = uVar17 + 1" identifier = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) (expression_statement "param_7 = param_7 + param_3[10] + 8;" (assignment_expression "param_7 = param_7 + param_3[10] + 8" identifier = (binary_expression "param_7 + param_3[10] + 8" (binary_expression "param_7 + param_3[10]" identifier + (subscript_expression "param_3[10]" identifier [ number_literal ])) + number_literal)) ;) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" identifier = (binary_expression "param_6 + param_2[0xb0] * 4" identifier + (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" identifier [ number_literal ]) * number_literal))) ;) }) while (parenthesized_expression "(uVar17 != param_5)" ( (binary_expression "uVar17 != param_5" identifier != identifier) )) ;) (return_statement "return;" return ;) })) }) (else_clause "else if (uVar17 == 0x10) {\n          if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }" else (if_statement "if (uVar17 == 0x10) {\n          if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }" if (parenthesized_expression "(uVar17 == 0x10)" ( (binary_expression "uVar17 == 0x10" identifier == number_literal) )) (compound_statement "{\n          if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }" { (if_statement "if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }" if (parenthesized_expression "(param_3[2] == 1)" ( (binary_expression "param_3[2] == 1" (subscript_expression "param_3[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }" { (if_statement "if ((int)param_5 < 1) {\n              return;\n            }" if (parenthesized_expression "((int)param_5 < 1)" ( (binary_expression "(int)param_5 < 1" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n              return;\n            }" { (return_statement "return;" return ;) })) (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (expression_statement "uVar16 = 1;" (assignment_expression "uVar16 = 1" identifier = number_literal) ;) (expression_statement "dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);" (assignment_expression "dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440)" identifier = (pointer_expression "*(double *)(PTR_LAB_003a88e0 + 0x1440)" * (cast_expression "(double *)(PTR_LAB_003a88e0 + 0x1440)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_003a88e0 + 0x1440)" ( (binary_expression "PTR_LAB_003a88e0 + 0x1440" identifier + number_literal) ))))) ;) (do_statement "do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);" do (compound_statement "{\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            }" { (expression_statement "param_1 = param_1 & 0xffffffff00000000;" (assignment_expression "param_1 = param_1 & 0xffffffff00000000" identifier = (binary_expression "param_1 & 0xffffffff00000000" identifier & number_literal)) ;) (expression_statement "uVar12 = param_3[0x11];" (assignment_expression "uVar12 = param_3[0x11]" identifier = (subscript_expression "param_3[0x11]" identifier [ number_literal ])) ;) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }" if (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" ( (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" * (cast_expression "(int *)(param_2[0xb4] + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x40)" ( (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) != number_literal) )) (compound_statement "{\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }" { (expression_statement "dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;" (assignment_expression "dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19" identifier = (binary_expression "(double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19" (cast_expression "(double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" * (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" identifier + (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" * (cast_expression "(int *)(param_2[0xb4] + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x44)" ( (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) * identifier)) ;) (expression_statement "param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);" (assignment_expression "param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19)" identifier = (call_expression "CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19)" identifier (argument_list "((int)((ulonglong)dVar19 >> 0x20),(float)dVar19)" ( (cast_expression "(int)((ulonglong)dVar19 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)dVar19 >> 0x20)" ( (binary_expression "(ulonglong)dVar19 >> 0x20" (cast_expression "(ulonglong)dVar19" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) , (cast_expression "(float)dVar19" ( (type_descriptor "float" primitive_type) ) identifier) )))) ;) })) (expression_statement "uVar2 = FUN_00155b60(param_1);" (assignment_expression "uVar2 = FUN_00155b60(param_1)" identifier = (call_expression "FUN_00155b60(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "bVar3 = (byte)((ushort)uVar2 >> 8);" (assignment_expression "bVar3 = (byte)((ushort)uVar2 >> 8)" identifier = (call_expression "(byte)((ushort)uVar2 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ushort)uVar2 >> 8)" ( (binary_expression "(ushort)uVar2 >> 8" (cast_expression "(ushort)uVar2" ( (type_descriptor "ushort" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }" if (parenthesized_expression "(uVar12 == uVar16)" ( (binary_expression "uVar12 == uVar16" identifier == identifier) )) (compound_statement "{\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }" { (expression_statement "*param_7 = (byte)uVar2;" (assignment_expression "*param_7 = (byte)uVar2" (pointer_expression "*param_7" * identifier) = (cast_expression "(byte)uVar2" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "param_7[1] = bVar3;" (assignment_expression "param_7[1] = bVar3" (subscript_expression "param_7[1]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }" else (compound_statement "{\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }" { (expression_statement "*param_7 = bVar3;" (assignment_expression "*param_7 = bVar3" (pointer_expression "*param_7" * identifier) = identifier) ;) (expression_statement "param_7[1] = (byte)uVar2;" (assignment_expression "param_7[1] = (byte)uVar2" (subscript_expression "param_7[1]" identifier [ number_literal ]) = (cast_expression "(byte)uVar2" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }))) (expression_statement "uVar17 = uVar17 + 1;" (assignment_expression "uVar17 = uVar17 + 1" identifier = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) (expression_statement "param_7 = param_7 + param_3[10] + 2;" (assignment_expression "param_7 = param_7 + param_3[10] + 2" identifier = (binary_expression "param_7 + param_3[10] + 2" (binary_expression "param_7 + param_3[10]" identifier + (subscript_expression "param_3[10]" identifier [ number_literal ])) + number_literal)) ;) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" identifier = (binary_expression "param_6 + param_2[0xb0] * 4" identifier + (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" identifier [ number_literal ]) * number_literal))) ;) (expression_statement "dVar19 = extraout_f0_1;" (assignment_expression "dVar19 = extraout_f0_1" identifier = identifier) ;) }) while (parenthesized_expression "(uVar17 != param_5)" ( (binary_expression "uVar17 != param_5" identifier != identifier) )) ;) (return_statement "return;" return ;) })) (if_statement "if ((int)param_5 < 1) {\n            return;\n          }" if (parenthesized_expression "((int)param_5 < 1)" ( (binary_expression "(int)param_5 < 1" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (expression_statement "fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);" (assignment_expression "fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" identifier = (pointer_expression "*(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" * (cast_expression "(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_t_to_left_003a88e4 + -0x51e0)" ( (binary_expression "PTR_s_t_to_left_003a88e4 + -0x51e0" identifier + number_literal) ))))) ;) (do_statement "do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);" do (compound_statement "{\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          }" { (expression_statement "bVar6 = 0;" (assignment_expression "bVar6 = 0" identifier = number_literal) ;) (expression_statement "bVar3 = 0;" (assignment_expression "bVar3 = 0" identifier = number_literal) ;) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }" if (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" ( (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" * (cast_expression "(int *)(param_2[0xb4] + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x40)" ( (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) != number_literal) )) (compound_statement "{\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }" { (expression_statement "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" identifier = (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" * (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" ( (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" identifier + (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" * (cast_expression "(int *)(param_2[0xb4] + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xb4] + 0x44)" ( (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }" if (parenthesized_expression "(fVar20 < fVar21)" ( (binary_expression "fVar20 < fVar21" identifier < identifier) )) (compound_statement "{\n                uVar2 = (undefined2)(int)fVar20;\n              }" { (expression_statement "uVar2 = (undefined2)(int)fVar20;" (assignment_expression "uVar2 = (undefined2)(int)fVar20" identifier = (cast_expression "(undefined2)(int)fVar20" ( (type_descriptor "undefined2" type_identifier) ) (cast_expression "(int)fVar20" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }) (else_clause "else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }" else (compound_statement "{\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }" { (expression_statement "uVar2 = (undefined2)(int)(fVar20 - fVar21);" (assignment_expression "uVar2 = (undefined2)(int)(fVar20 - fVar21)" identifier = (call_expression "(undefined2)(int)(fVar20 - fVar21)" (call_expression "(undefined2)(int)" (parenthesized_expression "(undefined2)" ( identifier )) (argument_list "(int)" ( identifier ))) (argument_list "(fVar20 - fVar21)" ( (binary_expression "fVar20 - fVar21" identifier - identifier) )))) ;) }))) (expression_statement "bVar3 = (byte)((ushort)uVar2 >> 8);" (assignment_expression "bVar3 = (byte)((ushort)uVar2 >> 8)" identifier = (call_expression "(byte)((ushort)uVar2 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ushort)uVar2 >> 8)" ( (binary_expression "(ushort)uVar2 >> 8" (cast_expression "(ushort)uVar2" ( (type_descriptor "ushort" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar6 = (byte)uVar2;" (assignment_expression "bVar6 = (byte)uVar2" identifier = (cast_expression "(byte)uVar2" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) })) (if_statement "if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }" if (parenthesized_expression "(param_3[0x11] == 1)" ( (binary_expression "param_3[0x11] == 1" (subscript_expression "param_3[0x11]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }" { (expression_statement "*param_7 = bVar6;" (assignment_expression "*param_7 = bVar6" (pointer_expression "*param_7" * identifier) = identifier) ;) (expression_statement "param_7[1] = bVar3;" (assignment_expression "param_7[1] = bVar3" (subscript_expression "param_7[1]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }" else (compound_statement "{\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }" { (expression_statement "*param_7 = bVar3;" (assignment_expression "*param_7 = bVar3" (pointer_expression "*param_7" * identifier) = identifier) ;) (expression_statement "param_7[1] = bVar6;" (assignment_expression "param_7[1] = bVar6" (subscript_expression "param_7[1]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "uVar17 = uVar17 + 1;" (assignment_expression "uVar17 = uVar17 + 1" identifier = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) (expression_statement "param_7 = param_7 + param_3[10] + 2;" (assignment_expression "param_7 = param_7 + param_3[10] + 2" identifier = (binary_expression "param_7 + param_3[10] + 2" (binary_expression "param_7 + param_3[10]" identifier + (subscript_expression "param_3[10]" identifier [ number_literal ])) + number_literal)) ;) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" identifier = (binary_expression "param_6 + param_2[0xb0] * 4" identifier + (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" identifier [ number_literal ]) * number_literal))) ;) }) while (parenthesized_expression "(uVar17 != param_5)" ( (binary_expression "uVar17 != param_5" identifier != identifier) )) ;) (return_statement "return;" return ;) })))) }))) (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;) (if_statement "if (0 < (int)param_5) {\n        iVar1 = param_2[0xb4];\n        if (*(int *)(iVar1 + 0x40) == 0) goto LAB_001574b0;\n        do {\n          uVar23 = (*(code *)PTR_FUN_003a8a80)\n                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4));\n          while( true ) {\n            uVar12 = (uint)((ulonglong)uVar23 >> 0x20);\n            if (param_3[0x15] == 0) {\n              param_3[0x15] = 8;\n            }\n            if (0 < (int)uVar17) {\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }\n            uVar16 = uVar16 + 1;\n            param_7 = param_7 + param_3[10];\n            param_6 = param_6 + param_2[0xb0] * 4;\n            if (uVar16 == param_5) {\n              return;\n            }\n            iVar1 = param_2[0xb4];\n            uVar17 = *param_3;\n            if (*(int *)(iVar1 + 0x40) != 0) break;\nLAB_001574b0:\n            uVar23 = 0;\n          }\n        } while( true );\n      }" if (parenthesized_expression "(0 < (int)param_5)" ( (binary_expression "0 < (int)param_5" number_literal < (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        iVar1 = param_2[0xb4];\n        if (*(int *)(iVar1 + 0x40) == 0) goto LAB_001574b0;\n        do {\n          uVar23 = (*(code *)PTR_FUN_003a8a80)\n                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4));\n          while( true ) {\n            uVar12 = (uint)((ulonglong)uVar23 >> 0x20);\n            if (param_3[0x15] == 0) {\n              param_3[0x15] = 8;\n            }\n            if (0 < (int)uVar17) {\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }\n            uVar16 = uVar16 + 1;\n            param_7 = param_7 + param_3[10];\n            param_6 = param_6 + param_2[0xb0] * 4;\n            if (uVar16 == param_5) {\n              return;\n            }\n            iVar1 = param_2[0xb4];\n            uVar17 = *param_3;\n            if (*(int *)(iVar1 + 0x40) != 0) break;\nLAB_001574b0:\n            uVar23 = 0;\n          }\n        } while( true );\n      }" { (expression_statement "iVar1 = param_2[0xb4];" (assignment_expression "iVar1 = param_2[0xb4]" identifier = (subscript_expression "param_2[0xb4]" identifier [ number_literal ])) ;) (if_statement "if (*(int *)(iVar1 + 0x40) == 0) goto LAB_001574b0;" if (parenthesized_expression "(*(int *)(iVar1 + 0x40) == 0)" ( (binary_expression "*(int *)(iVar1 + 0x40) == 0" (pointer_expression "*(int *)(iVar1 + 0x40)" * (cast_expression "(int *)(iVar1 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x40)" ( (binary_expression "iVar1 + 0x40" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_001574b0;" goto statement_identifier ;)) (do_statement "do {\n          uVar23 = (*(code *)PTR_FUN_003a8a80)\n                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4));\n          while( true ) {\n            uVar12 = (uint)((ulonglong)uVar23 >> 0x20);\n            if (param_3[0x15] == 0) {\n              param_3[0x15] = 8;\n            }\n            if (0 < (int)uVar17) {\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }\n            uVar16 = uVar16 + 1;\n            param_7 = param_7 + param_3[10];\n            param_6 = param_6 + param_2[0xb0] * 4;\n            if (uVar16 == param_5) {\n              return;\n            }\n            iVar1 = param_2[0xb4];\n            uVar17 = *param_3;\n            if (*(int *)(iVar1 + 0x40) != 0) break;\nLAB_001574b0:\n            uVar23 = 0;\n          }\n        } while( true );" do (compound_statement "{\n          uVar23 = (*(code *)PTR_FUN_003a8a80)\n                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4));\n          while( true ) {\n            uVar12 = (uint)((ulonglong)uVar23 >> 0x20);\n            if (param_3[0x15] == 0) {\n              param_3[0x15] = 8;\n            }\n            if (0 < (int)uVar17) {\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }\n            uVar16 = uVar16 + 1;\n            param_7 = param_7 + param_3[10];\n            param_6 = param_6 + param_2[0xb0] * 4;\n            if (uVar16 == param_5) {\n              return;\n            }\n            iVar1 = param_2[0xb4];\n            uVar17 = *param_3;\n            if (*(int *)(iVar1 + 0x40) != 0) break;\nLAB_001574b0:\n            uVar23 = 0;\n          }\n        }" { (expression_statement "uVar23 = (*(code *)PTR_FUN_003a8a80)\n                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4));" (assignment_expression "uVar23 = (*(code *)PTR_FUN_003a8a80)\n                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4))" identifier = (call_expression "(*(code *)PTR_FUN_003a8a80)\n                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4))" (parenthesized_expression "(*(code *)PTR_FUN_003a8a80)" ( (pointer_expression "*(code *)PTR_FUN_003a8a80" * (cast_expression "(code *)PTR_FUN_003a8a80" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4))" ( (pointer_expression "*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4)" * (cast_expression "(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(iVar1 + 0x44) * 4)" ( (binary_expression "param_6 + *(int *)(iVar1 + 0x44) * 4" identifier + (binary_expression "*(int *)(iVar1 + 0x44) * 4" (pointer_expression "*(int *)(iVar1 + 0x44)" * (cast_expression "(int *)(iVar1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x44)" ( (binary_expression "iVar1 + 0x44" identifier + number_literal) )))) * number_literal)) )))) )))) ;) (while_statement "while( true ) {\n            uVar12 = (uint)((ulonglong)uVar23 >> 0x20);\n            if (param_3[0x15] == 0) {\n              param_3[0x15] = 8;\n            }\n            if (0 < (int)uVar17) {\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }\n            uVar16 = uVar16 + 1;\n            param_7 = param_7 + param_3[10];\n            param_6 = param_6 + param_2[0xb0] * 4;\n            if (uVar16 == param_5) {\n              return;\n            }\n            iVar1 = param_2[0xb4];\n            uVar17 = *param_3;\n            if (*(int *)(iVar1 + 0x40) != 0) break;\nLAB_001574b0:\n            uVar23 = 0;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            uVar12 = (uint)((ulonglong)uVar23 >> 0x20);\n            if (param_3[0x15] == 0) {\n              param_3[0x15] = 8;\n            }\n            if (0 < (int)uVar17) {\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }\n            uVar16 = uVar16 + 1;\n            param_7 = param_7 + param_3[10];\n            param_6 = param_6 + param_2[0xb0] * 4;\n            if (uVar16 == param_5) {\n              return;\n            }\n            iVar1 = param_2[0xb4];\n            uVar17 = *param_3;\n            if (*(int *)(iVar1 + 0x40) != 0) break;\nLAB_001574b0:\n            uVar23 = 0;\n          }" { (expression_statement "uVar12 = (uint)((ulonglong)uVar23 >> 0x20);" (assignment_expression "uVar12 = (uint)((ulonglong)uVar23 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)uVar23 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)uVar23 >> 0x20)" ( (binary_expression "(ulonglong)uVar23 >> 0x20" (cast_expression "(ulonglong)uVar23" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (param_3[0x15] == 0) {\n              param_3[0x15] = 8;\n            }" if (parenthesized_expression "(param_3[0x15] == 0)" ( (binary_expression "param_3[0x15] == 0" (subscript_expression "param_3[0x15]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n              param_3[0x15] = 8;\n            }" { (expression_statement "param_3[0x15] = 8;" (assignment_expression "param_3[0x15] = 8" (subscript_expression "param_3[0x15]" identifier [ number_literal ]) = number_literal) ;) })) (if_statement "if (0 < (int)uVar17) {\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }" if (parenthesized_expression "(0 < (int)uVar17)" ( (binary_expression "0 < (int)uVar17" number_literal < (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }" { (do_statement "do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);" do (compound_statement "{\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              }" { (expression_statement "uVar11 = param_3[0x15];" (assignment_expression "uVar11 = param_3[0x15]" identifier = (subscript_expression "param_3[0x15]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = uVar11;" (assignment_expression "uVar7 = uVar11" identifier = identifier) ;) (if_statement "if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }" if (parenthesized_expression "(uVar17 <= uVar11)" ( (binary_expression "uVar17 <= uVar11" identifier <= identifier) )) (compound_statement "{\n                  uVar7 = uVar17;\n                }" { (expression_statement "uVar7 = uVar17;" (assignment_expression "uVar7 = uVar17" identifier = identifier) ;) })) (expression_statement "uVar9 = uVar17 - uVar7;" (assignment_expression "uVar9 = uVar17 - uVar7" identifier = (binary_expression "uVar17 - uVar7" identifier - identifier)) ;) (expression_statement "uVar14 = uVar11 - uVar7;" (assignment_expression "uVar14 = uVar11 - uVar7" identifier = (binary_expression "uVar11 - uVar7" identifier - identifier)) ;) (expression_statement "uVar17 = uVar9;" (assignment_expression "uVar17 = uVar9" identifier = identifier) ;) (if_statement "if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }" if (parenthesized_expression "((int)uVar9 < 0)" ( (binary_expression "(int)uVar9 < 0" (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                  uVar17 = 0;\n                }" { (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) })) (if_statement "if (uVar11 == 8) {\n                  *param_7 = 0;\n                }" if (parenthesized_expression "(uVar11 == 8)" ( (binary_expression "uVar11 == 8" identifier == number_literal) )) (compound_statement "{\n                  *param_7 = 0;\n                }" { (expression_statement "*param_7 = 0;" (assignment_expression "*param_7 = 0" (pointer_expression "*param_7" * identifier) = number_literal) ;) })) (expression_statement "param_3[0x15] = uVar14;" (assignment_expression "param_3[0x15] = uVar14" (subscript_expression "param_3[0x15]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);" (assignment_expression "uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f)" identifier = (binary_expression "(uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f)" (binary_expression "(uVar12 << 1) << (~uVar17 & 0x1f)" (parenthesized_expression "(uVar12 << 1)" ( (binary_expression "uVar12 << 1" identifier << number_literal) )) << (parenthesized_expression "(~uVar17 & 0x1f)" ( (binary_expression "~uVar17 & 0x1f" (unary_expression "~uVar17" ~ identifier) & number_literal) ))) | (binary_expression "(uint)uVar23 >> (uVar17 & 0x1f)" (cast_expression "(uint)uVar23" ( (type_descriptor "uint" type_identifier) ) identifier) >> (parenthesized_expression "(uVar17 & 0x1f)" ( (binary_expression "uVar17 & 0x1f" identifier & number_literal) ))))) ;) (if_statement "if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }" if (parenthesized_expression "((uVar17 & 0x20) != 0)" ( (binary_expression "(uVar17 & 0x20) != 0" (parenthesized_expression "(uVar17 & 0x20)" ( (binary_expression "uVar17 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }" { (expression_statement "uVar11 = uVar12 >> (uVar17 & 0x1f);" (assignment_expression "uVar11 = uVar12 >> (uVar17 & 0x1f)" identifier = (binary_expression "uVar12 >> (uVar17 & 0x1f)" identifier >> (parenthesized_expression "(uVar17 & 0x1f)" ( (binary_expression "uVar17 & 0x1f" identifier & number_literal) )))) ;) })) (expression_statement "bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));" (assignment_expression "bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f))" identifier = (call_expression "(byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f))" ( (binary_expression "(~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f)" (parenthesized_expression "(~(-1 << (uVar7 & 0x1f)) & uVar11)" ( (binary_expression "~(-1 << (uVar7 & 0x1f)) & uVar11" (unary_expression "~(-1 << (uVar7 & 0x1f))" ~ (parenthesized_expression "(-1 << (uVar7 & 0x1f))" ( (binary_expression "-1 << (uVar7 & 0x1f)" number_literal << (parenthesized_expression "(uVar7 & 0x1f)" ( (binary_expression "uVar7 & 0x1f" identifier & number_literal) ))) ))) & identifier) )) << (parenthesized_expression "(uVar14 & 0x1f)" ( (binary_expression "uVar14 & 0x1f" identifier & number_literal) ))) )))) ;) (if_statement "if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }" if (parenthesized_expression "((uVar14 & 0x20) != 0)" ( (binary_expression "(uVar14 & 0x20) != 0" (parenthesized_expression "(uVar14 & 0x20)" ( (binary_expression "uVar14 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                  bVar3 = 0;\n                }" { (expression_statement "bVar3 = 0;" (assignment_expression "bVar3 = 0" identifier = number_literal) ;) })) (expression_statement "*param_7 = bVar3 | *param_7;" (assignment_expression "*param_7 = bVar3 | *param_7" (pointer_expression "*param_7" * identifier) = (binary_expression "bVar3 | *param_7" identifier | (pointer_expression "*param_7" * identifier))) ;) (if_statement "if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }" if (parenthesized_expression "(uVar14 == 0)" ( (binary_expression "uVar14 == 0" identifier == number_literal) )) (compound_statement "{\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }" { (expression_statement "param_7 = param_7 + 1;" (assignment_expression "param_7 = param_7 + 1" identifier = (binary_expression "param_7 + 1" identifier + number_literal)) ;) (expression_statement "param_3[0x15] = 8;" (assignment_expression "param_3[0x15] = 8" (subscript_expression "param_3[0x15]" identifier [ number_literal ]) = number_literal) ;) })) }) while (parenthesized_expression "(0 < (int)uVar9)" ( (binary_expression "0 < (int)uVar9" number_literal < (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })) (expression_statement "uVar16 = uVar16 + 1;" (assignment_expression "uVar16 = uVar16 + 1" identifier = (binary_expression "uVar16 + 1" identifier + number_literal)) ;) (expression_statement "param_7 = param_7 + param_3[10];" (assignment_expression "param_7 = param_7 + param_3[10]" identifier = (binary_expression "param_7 + param_3[10]" identifier + (subscript_expression "param_3[10]" identifier [ number_literal ]))) ;) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" identifier = (binary_expression "param_6 + param_2[0xb0] * 4" identifier + (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" identifier [ number_literal ]) * number_literal))) ;) (if_statement "if (uVar16 == param_5) {\n              return;\n            }" if (parenthesized_expression "(uVar16 == param_5)" ( (binary_expression "uVar16 == param_5" identifier == identifier) )) (compound_statement "{\n              return;\n            }" { (return_statement "return;" return ;) })) (expression_statement "iVar1 = param_2[0xb4];" (assignment_expression "iVar1 = param_2[0xb4]" identifier = (subscript_expression "param_2[0xb4]" identifier [ number_literal ])) ;) (expression_statement "uVar17 = *param_3;" (assignment_expression "uVar17 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (if_statement "if (*(int *)(iVar1 + 0x40) != 0) break;" if (parenthesized_expression "(*(int *)(iVar1 + 0x40) != 0)" ( (binary_expression "*(int *)(iVar1 + 0x40) != 0" (pointer_expression "*(int *)(iVar1 + 0x40)" * (cast_expression "(int *)(iVar1 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x40)" ( (binary_expression "iVar1 + 0x40" identifier + number_literal) )))) != number_literal) )) (break_statement "break;" break ;)) (labeled_statement "LAB_001574b0:\n            uVar23 = 0;" statement_identifier : (expression_statement "uVar23 = 0;" (assignment_expression "uVar23 = 0" identifier = number_literal) ;)) })) }) while (parenthesized_expression "( true )" ( true )) ;) })) }))) }) (else_clause "else {\n    (*(code *)PTR_ThrowMagickException_003a8f20)\n              (param_8,PTR_s_courses_003a88ec + -0x7af0,PTR_s_courses_003a88ec + -0x768c,0x9d8,0x1d1\n               ,PTR_s_courses_003a88ec + -0x7ad4,PTR_LAB_003a88e0 + 0x3e28,param_2 + 0xd0);\n  }" else (compound_statement "{\n    (*(code *)PTR_ThrowMagickException_003a8f20)\n              (param_8,PTR_s_courses_003a88ec + -0x7af0,PTR_s_courses_003a88ec + -0x768c,0x9d8,0x1d1\n               ,PTR_s_courses_003a88ec + -0x7ad4,PTR_LAB_003a88e0 + 0x3e28,param_2 + 0xd0);\n  }" { (expression_statement "(*(code *)PTR_ThrowMagickException_003a8f20)\n              (param_8,PTR_s_courses_003a88ec + -0x7af0,PTR_s_courses_003a88ec + -0x768c,0x9d8,0x1d1\n               ,PTR_s_courses_003a88ec + -0x7ad4,PTR_LAB_003a88e0 + 0x3e28,param_2 + 0xd0);" (call_expression "(*(code *)PTR_ThrowMagickException_003a8f20)\n              (param_8,PTR_s_courses_003a88ec + -0x7af0,PTR_s_courses_003a88ec + -0x768c,0x9d8,0x1d1\n               ,PTR_s_courses_003a88ec + -0x7ad4,PTR_LAB_003a88e0 + 0x3e28,param_2 + 0xd0)" (parenthesized_expression "(*(code *)PTR_ThrowMagickException_003a8f20)" ( (pointer_expression "*(code *)PTR_ThrowMagickException_003a8f20" * (cast_expression "(code *)PTR_ThrowMagickException_003a8f20" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_8,PTR_s_courses_003a88ec + -0x7af0,PTR_s_courses_003a88ec + -0x768c,0x9d8,0x1d1\n               ,PTR_s_courses_003a88ec + -0x7ad4,PTR_LAB_003a88e0 + 0x3e28,param_2 + 0xd0)" ( identifier , (binary_expression "PTR_s_courses_003a88ec + -0x7af0" identifier + number_literal) , (binary_expression "PTR_s_courses_003a88ec + -0x768c" identifier + number_literal) , number_literal , number_literal , (binary_expression "PTR_s_courses_003a88ec + -0x7ad4" identifier + number_literal) , (binary_expression "PTR_LAB_003a88e0 + 0x3e28" identifier + number_literal) , (binary_expression "param_2 + 0xd0" identifier + number_literal) ))) ;) }))) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (do_statement do (compound_statement { (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 (subscript_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 TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) }) (else_clause else (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 = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (subscript_expression IDENT [ LIT ]) * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (subscript_expression IDENT [ LIT ])) + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) }) (else_clause else (compound_statement { (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 LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) >> LIT) ))) + LIT)) ;) (do_statement do (compound_statement { (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 (subscript_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 TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) << LIT) )))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (subscript_expression IDENT [ LIT ]) * LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_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 TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) << LIT) ))))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (subscript_expression IDENT [ LIT ]) * 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 (subscript_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 TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) << LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT | IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (subscript_expression IDENT [ LIT ]) * LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_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 TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) << LIT) ))))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (subscript_expression IDENT [ LIT ]) * 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 (subscript_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 TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) << LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT | IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (subscript_expression IDENT [ LIT ]) * LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_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 TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) << LIT) ))))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (subscript_expression IDENT [ LIT ]) * 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 (subscript_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 TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) << LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT | IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (subscript_expression IDENT [ LIT ]) * LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_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 TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) }) (else_clause else (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 IDENT = (binary_expression IDENT | (binary_expression IDENT & LIT))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (subscript_expression IDENT [ LIT ]) * 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) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_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 TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) & LIT) | IDENT)) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (subscript_expression IDENT [ LIT ]) * LIT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (parenthesized_expression ( (binary_expression (unary_expression ~ IDENT) & LIT) ))) )) ;) (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - LIT) )))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) >> LIT) ))) + LIT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (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 TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) << LIT) )))) ;) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (subscript_expression IDENT [ LIT ]) * LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_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 TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) }) (else_clause else (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 IDENT = (binary_expression IDENT | (binary_expression IDENT & LIT))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (subscript_expression IDENT [ LIT ]) * 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 ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_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 TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) << LIT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) & LIT) )) << LIT) )))) ;) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (return_statement return ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (return_statement return ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (do_statement do (compound_statement { (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 (subscript_expression IDENT [ LIT ]) + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) * LIT)) )))))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression 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 IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (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 ]) = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) }) (else_clause else (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 IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (subscript_expression IDENT [ LIT ])) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (subscript_expression IDENT [ LIT ]) * LIT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_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 TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - IDENT) ))) | LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) (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 (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) ;) }) (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 IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (subscript_expression IDENT [ LIT ])) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (subscript_expression IDENT [ LIT ]) * 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 (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (do_statement do (compound_statement { (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 (subscript_expression IDENT [ LIT ]) + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) * LIT)) )))))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression 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) )))) ;) (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 IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (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 ]) = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) }) (else_clause else (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) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (subscript_expression IDENT [ LIT ])) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (subscript_expression IDENT [ LIT ]) * LIT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (return_statement return ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) * LIT)) ))))) * IDENT)) ;) (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) >> LIT) ))) , (cast_expression ( (type_descriptor TYPE) ) IDENT) )))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( 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 IDENT == IDENT) )) (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 = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (subscript_expression IDENT [ LIT ])) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (subscript_expression IDENT [ LIT ]) * LIT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (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 (subscript_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 TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) }) (else_clause else (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 IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = 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 IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (subscript_expression IDENT [ LIT ])) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (subscript_expression IDENT [ LIT ]) * LIT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (return_statement return ;) })))) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (goto_statement goto statement_identifier ;)) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) )))) )))) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (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 (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT << LIT) )) << (parenthesized_expression ( (binary_expression (unary_expression ~ IDENT) & LIT) ))) | (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) })) (expression_statement (assignment_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 IDENT & LIT) ))) ))) & IDENT) )) << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT | (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) })) }) while (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (subscript_expression IDENT [ LIT ]) * LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (break_statement break ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) })) }) while (parenthesized_expression ( BOOL )) ;) })) }))) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) , LIT , LIT , (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) ))) ;) }))) (return_statement return ;) })))
(function_definition "void FUN_0015731c(ulonglong param_1,int *param_2,uint *param_3,undefined4 param_4,uint param_5,\n                 int param_6,byte *param_7,undefined4 param_8)\n\n{\n  int iVar1;\n  byte bVar3;\n  undefined2 uVar2;\n  byte bVar4;\n  byte *pbVar5;\n  byte bVar6;\n  uint uVar7;\n  byte bVar8;\n  uint uVar9;\n  byte bVar10;\n  uint uVar11;\n  uint uVar12;\n  byte bVar13;\n  uint uVar14;\n  byte bVar15;\n  uint uVar16;\n  uint uVar17;\n  float fVar20;\n  double dVar18;\n  double dVar19;\n  double extraout_f0_1;\n  float fVar21;\n  double dVar22;\n  undefined8 uVar23;\n  \n  if (*param_2 == 2) {\n    uVar17 = *param_3;\n    if (uVar17 == 8) {\n      if (0 < (int)param_5) {\n        uVar17 = 0;\n        fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n        do {\n          bVar3 = 0;\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar20 < fVar21) {\n              bVar3 = (byte)(int)fVar20;\n            }\n            else {\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }\n          }\n          *param_7 = bVar3;\n          uVar17 = uVar17 + 1;\n          param_6 = param_6 + param_2[0xb0] * 4;\n          param_7 = param_7 + param_3[10] + 1;\n        } while (uVar17 != param_5);\n      }\n    }\n    else {\n      if (uVar17 < 9) {\n        if (uVar17 == 1) {\n          if (7 < (int)param_5) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;\n            do {\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          *param_7 = 0;\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          uVar16 = 0;\n          uVar17 = 7;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }\n            *param_7 = (byte)uVar16;\n            uVar17 = uVar17 - 1;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != (~param_5 & 7));\n          return;\n        }\n        if (uVar17 == 4) {\n          if (0 < (int)(param_5 - 1)) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;\n            do {\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 1) == 0) {\n            return;\n          }\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }\n            else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }\n            *param_7 = bVar3;\n            return;\n          }\n          *param_7 = 0;\n          return;\n        }\n      }\n      else {\n        if (uVar17 == 0x20) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar4 = 0;\n            bVar6 = 0;\n            bVar3 = 0;\n            bVar8 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 4;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n        if (uVar17 == 0x40) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n        }\n        else if (uVar17 == 0x10) {\n          if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n      }\n      uVar16 = 0;\n      if (0 < (int)param_5) {\n        iVar1 = param_2[0xb4];\n        if (*(int *)(iVar1 + 0x40) == 0) goto LAB_001574b0;\n        do {\n          uVar23 = (*(code *)PTR_FUN_003a8a80)\n                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4));\n          while( true ) {\n            uVar12 = (uint)((ulonglong)uVar23 >> 0x20);\n            if (param_3[0x15] == 0) {\n              param_3[0x15] = 8;\n            }\n            if (0 < (int)uVar17) {\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }\n            uVar16 = uVar16 + 1;\n            param_7 = param_7 + param_3[10];\n            param_6 = param_6 + param_2[0xb0] * 4;\n            if (uVar16 == param_5) {\n              return;\n            }\n            iVar1 = param_2[0xb4];\n            uVar17 = *param_3;\n            if (*(int *)(iVar1 + 0x40) != 0) break;\nLAB_001574b0:\n            uVar23 = 0;\n          }\n        } while( true );\n      }\n    }\n  }\n  else {\n    (*(code *)PTR_ThrowMagickException_003a8f20)\n              (param_8,PTR_s_courses_003a88ec + -0x7af0,PTR_s_courses_003a88ec + -0x768c,0x9d8,0x1d1\n               ,PTR_s_courses_003a88ec + -0x7ad4,PTR_LAB_003a88e0 + 0x3e28,param_2 + 0xd0);\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0015731c(ulonglong param_1,int *param_2,uint *param_3,undefined4 param_4,uint param_5,\n                 int param_6,byte *param_7,undefined4 param_8)" (identifier "FUN_0015731c") (parameter_list "(ulonglong param_1,int *param_2,uint *param_3,undefined4 param_4,uint param_5,\n                 int param_6,byte *param_7,undefined4 param_8)" (( "(") (parameter_declaration "ulonglong param_1" (type_identifier "ulonglong") (identifier "param_1")) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "uint *param_3" (type_identifier "uint") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) (, ",") (parameter_declaration "uint param_5" (type_identifier "uint") (identifier "param_5")) (, ",") (parameter_declaration "int param_6" (primitive_type "int") (identifier "param_6")) (, ",") (parameter_declaration "byte *param_7" (type_identifier "byte") (pointer_declarator "*param_7" (* "*") (identifier "param_7"))) (, ",") (parameter_declaration "undefined4 param_8" (type_identifier "undefined4") (identifier "param_8")) () ")"))) (compound_statement "{\n  int iVar1;\n  byte bVar3;\n  undefined2 uVar2;\n  byte bVar4;\n  byte *pbVar5;\n  byte bVar6;\n  uint uVar7;\n  byte bVar8;\n  uint uVar9;\n  byte bVar10;\n  uint uVar11;\n  uint uVar12;\n  byte bVar13;\n  uint uVar14;\n  byte bVar15;\n  uint uVar16;\n  uint uVar17;\n  float fVar20;\n  double dVar18;\n  double dVar19;\n  double extraout_f0_1;\n  float fVar21;\n  double dVar22;\n  undefined8 uVar23;\n  \n  if (*param_2 == 2) {\n    uVar17 = *param_3;\n    if (uVar17 == 8) {\n      if (0 < (int)param_5) {\n        uVar17 = 0;\n        fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n        do {\n          bVar3 = 0;\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar20 < fVar21) {\n              bVar3 = (byte)(int)fVar20;\n            }\n            else {\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }\n          }\n          *param_7 = bVar3;\n          uVar17 = uVar17 + 1;\n          param_6 = param_6 + param_2[0xb0] * 4;\n          param_7 = param_7 + param_3[10] + 1;\n        } while (uVar17 != param_5);\n      }\n    }\n    else {\n      if (uVar17 < 9) {\n        if (uVar17 == 1) {\n          if (7 < (int)param_5) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;\n            do {\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          *param_7 = 0;\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          uVar16 = 0;\n          uVar17 = 7;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }\n            *param_7 = (byte)uVar16;\n            uVar17 = uVar17 - 1;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != (~param_5 & 7));\n          return;\n        }\n        if (uVar17 == 4) {\n          if (0 < (int)(param_5 - 1)) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;\n            do {\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 1) == 0) {\n            return;\n          }\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }\n            else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }\n            *param_7 = bVar3;\n            return;\n          }\n          *param_7 = 0;\n          return;\n        }\n      }\n      else {\n        if (uVar17 == 0x20) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar4 = 0;\n            bVar6 = 0;\n            bVar3 = 0;\n            bVar8 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 4;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n        if (uVar17 == 0x40) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n        }\n        else if (uVar17 == 0x10) {\n          if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n      }\n      uVar16 = 0;\n      if (0 < (int)param_5) {\n        iVar1 = param_2[0xb4];\n        if (*(int *)(iVar1 + 0x40) == 0) goto LAB_001574b0;\n        do {\n          uVar23 = (*(code *)PTR_FUN_003a8a80)\n                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4));\n          while( true ) {\n            uVar12 = (uint)((ulonglong)uVar23 >> 0x20);\n            if (param_3[0x15] == 0) {\n              param_3[0x15] = 8;\n            }\n            if (0 < (int)uVar17) {\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }\n            uVar16 = uVar16 + 1;\n            param_7 = param_7 + param_3[10];\n            param_6 = param_6 + param_2[0xb0] * 4;\n            if (uVar16 == param_5) {\n              return;\n            }\n            iVar1 = param_2[0xb4];\n            uVar17 = *param_3;\n            if (*(int *)(iVar1 + 0x40) != 0) break;\nLAB_001574b0:\n            uVar23 = 0;\n          }\n        } while( true );\n      }\n    }\n  }\n  else {\n    (*(code *)PTR_ThrowMagickException_003a8f20)\n              (param_8,PTR_s_courses_003a88ec + -0x7af0,PTR_s_courses_003a88ec + -0x768c,0x9d8,0x1d1\n               ,PTR_s_courses_003a88ec + -0x7ad4,PTR_LAB_003a88e0 + 0x3e28,param_2 + 0xd0);\n  }\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "byte bVar3;" (type_identifier "byte") (identifier "bVar3") (; ";")) (declaration "undefined2 uVar2;" (type_identifier "undefined2") (identifier "uVar2") (; ";")) (declaration "byte bVar4;" (type_identifier "byte") (identifier "bVar4") (; ";")) (declaration "byte *pbVar5;" (type_identifier "byte") (pointer_declarator "*pbVar5" (* "*") (identifier "pbVar5")) (; ";")) (declaration "byte bVar6;" (type_identifier "byte") (identifier "bVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "byte bVar8;" (type_identifier "byte") (identifier "bVar8") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "byte bVar10;" (type_identifier "byte") (identifier "bVar10") (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "byte bVar13;" (type_identifier "byte") (identifier "bVar13") (; ";")) (declaration "uint uVar14;" (type_identifier "uint") (identifier "uVar14") (; ";")) (declaration "byte bVar15;" (type_identifier "byte") (identifier "bVar15") (; ";")) (declaration "uint uVar16;" (type_identifier "uint") (identifier "uVar16") (; ";")) (declaration "uint uVar17;" (type_identifier "uint") (identifier "uVar17") (; ";")) (declaration "float fVar20;" (primitive_type "float") (identifier "fVar20") (; ";")) (declaration "double dVar18;" (primitive_type "double") (identifier "dVar18") (; ";")) (declaration "double dVar19;" (primitive_type "double") (identifier "dVar19") (; ";")) (declaration "double extraout_f0_1;" (primitive_type "double") (identifier "extraout_f0_1") (; ";")) (declaration "float fVar21;" (primitive_type "float") (identifier "fVar21") (; ";")) (declaration "double dVar22;" (primitive_type "double") (identifier "dVar22") (; ";")) (declaration "undefined8 uVar23;" (type_identifier "undefined8") (identifier "uVar23") (; ";")) (if_statement "if (*param_2 == 2) {\n    uVar17 = *param_3;\n    if (uVar17 == 8) {\n      if (0 < (int)param_5) {\n        uVar17 = 0;\n        fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n        do {\n          bVar3 = 0;\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar20 < fVar21) {\n              bVar3 = (byte)(int)fVar20;\n            }\n            else {\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }\n          }\n          *param_7 = bVar3;\n          uVar17 = uVar17 + 1;\n          param_6 = param_6 + param_2[0xb0] * 4;\n          param_7 = param_7 + param_3[10] + 1;\n        } while (uVar17 != param_5);\n      }\n    }\n    else {\n      if (uVar17 < 9) {\n        if (uVar17 == 1) {\n          if (7 < (int)param_5) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;\n            do {\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          *param_7 = 0;\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          uVar16 = 0;\n          uVar17 = 7;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }\n            *param_7 = (byte)uVar16;\n            uVar17 = uVar17 - 1;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != (~param_5 & 7));\n          return;\n        }\n        if (uVar17 == 4) {\n          if (0 < (int)(param_5 - 1)) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;\n            do {\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 1) == 0) {\n            return;\n          }\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }\n            else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }\n            *param_7 = bVar3;\n            return;\n          }\n          *param_7 = 0;\n          return;\n        }\n      }\n      else {\n        if (uVar17 == 0x20) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar4 = 0;\n            bVar6 = 0;\n            bVar3 = 0;\n            bVar8 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 4;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n        if (uVar17 == 0x40) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n        }\n        else if (uVar17 == 0x10) {\n          if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n      }\n      uVar16 = 0;\n      if (0 < (int)param_5) {\n        iVar1 = param_2[0xb4];\n        if (*(int *)(iVar1 + 0x40) == 0) goto LAB_001574b0;\n        do {\n          uVar23 = (*(code *)PTR_FUN_003a8a80)\n                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4));\n          while( true ) {\n            uVar12 = (uint)((ulonglong)uVar23 >> 0x20);\n            if (param_3[0x15] == 0) {\n              param_3[0x15] = 8;\n            }\n            if (0 < (int)uVar17) {\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }\n            uVar16 = uVar16 + 1;\n            param_7 = param_7 + param_3[10];\n            param_6 = param_6 + param_2[0xb0] * 4;\n            if (uVar16 == param_5) {\n              return;\n            }\n            iVar1 = param_2[0xb4];\n            uVar17 = *param_3;\n            if (*(int *)(iVar1 + 0x40) != 0) break;\nLAB_001574b0:\n            uVar23 = 0;\n          }\n        } while( true );\n      }\n    }\n  }\n  else {\n    (*(code *)PTR_ThrowMagickException_003a8f20)\n              (param_8,PTR_s_courses_003a88ec + -0x7af0,PTR_s_courses_003a88ec + -0x768c,0x9d8,0x1d1\n               ,PTR_s_courses_003a88ec + -0x7ad4,PTR_LAB_003a88e0 + 0x3e28,param_2 + 0xd0);\n  }" (if "if") (parenthesized_expression "(*param_2 == 2)" (( "(") (binary_expression "*param_2 == 2" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (== "==") (number_literal "2")) () ")")) (compound_statement "{\n    uVar17 = *param_3;\n    if (uVar17 == 8) {\n      if (0 < (int)param_5) {\n        uVar17 = 0;\n        fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n        do {\n          bVar3 = 0;\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar20 < fVar21) {\n              bVar3 = (byte)(int)fVar20;\n            }\n            else {\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }\n          }\n          *param_7 = bVar3;\n          uVar17 = uVar17 + 1;\n          param_6 = param_6 + param_2[0xb0] * 4;\n          param_7 = param_7 + param_3[10] + 1;\n        } while (uVar17 != param_5);\n      }\n    }\n    else {\n      if (uVar17 < 9) {\n        if (uVar17 == 1) {\n          if (7 < (int)param_5) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;\n            do {\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          *param_7 = 0;\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          uVar16 = 0;\n          uVar17 = 7;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }\n            *param_7 = (byte)uVar16;\n            uVar17 = uVar17 - 1;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != (~param_5 & 7));\n          return;\n        }\n        if (uVar17 == 4) {\n          if (0 < (int)(param_5 - 1)) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;\n            do {\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 1) == 0) {\n            return;\n          }\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }\n            else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }\n            *param_7 = bVar3;\n            return;\n          }\n          *param_7 = 0;\n          return;\n        }\n      }\n      else {\n        if (uVar17 == 0x20) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar4 = 0;\n            bVar6 = 0;\n            bVar3 = 0;\n            bVar8 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 4;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n        if (uVar17 == 0x40) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n        }\n        else if (uVar17 == 0x10) {\n          if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n      }\n      uVar16 = 0;\n      if (0 < (int)param_5) {\n        iVar1 = param_2[0xb4];\n        if (*(int *)(iVar1 + 0x40) == 0) goto LAB_001574b0;\n        do {\n          uVar23 = (*(code *)PTR_FUN_003a8a80)\n                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4));\n          while( true ) {\n            uVar12 = (uint)((ulonglong)uVar23 >> 0x20);\n            if (param_3[0x15] == 0) {\n              param_3[0x15] = 8;\n            }\n            if (0 < (int)uVar17) {\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }\n            uVar16 = uVar16 + 1;\n            param_7 = param_7 + param_3[10];\n            param_6 = param_6 + param_2[0xb0] * 4;\n            if (uVar16 == param_5) {\n              return;\n            }\n            iVar1 = param_2[0xb4];\n            uVar17 = *param_3;\n            if (*(int *)(iVar1 + 0x40) != 0) break;\nLAB_001574b0:\n            uVar23 = 0;\n          }\n        } while( true );\n      }\n    }\n  }" ({ "{") (expression_statement "uVar17 = *param_3;" (assignment_expression "uVar17 = *param_3" (identifier "uVar17") (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";")) (if_statement "if (uVar17 == 8) {\n      if (0 < (int)param_5) {\n        uVar17 = 0;\n        fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n        do {\n          bVar3 = 0;\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar20 < fVar21) {\n              bVar3 = (byte)(int)fVar20;\n            }\n            else {\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }\n          }\n          *param_7 = bVar3;\n          uVar17 = uVar17 + 1;\n          param_6 = param_6 + param_2[0xb0] * 4;\n          param_7 = param_7 + param_3[10] + 1;\n        } while (uVar17 != param_5);\n      }\n    }\n    else {\n      if (uVar17 < 9) {\n        if (uVar17 == 1) {\n          if (7 < (int)param_5) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;\n            do {\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          *param_7 = 0;\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          uVar16 = 0;\n          uVar17 = 7;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }\n            *param_7 = (byte)uVar16;\n            uVar17 = uVar17 - 1;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != (~param_5 & 7));\n          return;\n        }\n        if (uVar17 == 4) {\n          if (0 < (int)(param_5 - 1)) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;\n            do {\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 1) == 0) {\n            return;\n          }\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }\n            else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }\n            *param_7 = bVar3;\n            return;\n          }\n          *param_7 = 0;\n          return;\n        }\n      }\n      else {\n        if (uVar17 == 0x20) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar4 = 0;\n            bVar6 = 0;\n            bVar3 = 0;\n            bVar8 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 4;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n        if (uVar17 == 0x40) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n        }\n        else if (uVar17 == 0x10) {\n          if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n      }\n      uVar16 = 0;\n      if (0 < (int)param_5) {\n        iVar1 = param_2[0xb4];\n        if (*(int *)(iVar1 + 0x40) == 0) goto LAB_001574b0;\n        do {\n          uVar23 = (*(code *)PTR_FUN_003a8a80)\n                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4));\n          while( true ) {\n            uVar12 = (uint)((ulonglong)uVar23 >> 0x20);\n            if (param_3[0x15] == 0) {\n              param_3[0x15] = 8;\n            }\n            if (0 < (int)uVar17) {\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }\n            uVar16 = uVar16 + 1;\n            param_7 = param_7 + param_3[10];\n            param_6 = param_6 + param_2[0xb0] * 4;\n            if (uVar16 == param_5) {\n              return;\n            }\n            iVar1 = param_2[0xb4];\n            uVar17 = *param_3;\n            if (*(int *)(iVar1 + 0x40) != 0) break;\nLAB_001574b0:\n            uVar23 = 0;\n          }\n        } while( true );\n      }\n    }" (if "if") (parenthesized_expression "(uVar17 == 8)" (( "(") (binary_expression "uVar17 == 8" (identifier "uVar17") (== "==") (number_literal "8")) () ")")) (compound_statement "{\n      if (0 < (int)param_5) {\n        uVar17 = 0;\n        fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n        do {\n          bVar3 = 0;\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar20 < fVar21) {\n              bVar3 = (byte)(int)fVar20;\n            }\n            else {\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }\n          }\n          *param_7 = bVar3;\n          uVar17 = uVar17 + 1;\n          param_6 = param_6 + param_2[0xb0] * 4;\n          param_7 = param_7 + param_3[10] + 1;\n        } while (uVar17 != param_5);\n      }\n    }" ({ "{") (if_statement "if (0 < (int)param_5) {\n        uVar17 = 0;\n        fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n        do {\n          bVar3 = 0;\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar20 < fVar21) {\n              bVar3 = (byte)(int)fVar20;\n            }\n            else {\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }\n          }\n          *param_7 = bVar3;\n          uVar17 = uVar17 + 1;\n          param_6 = param_6 + param_2[0xb0] * 4;\n          param_7 = param_7 + param_3[10] + 1;\n        } while (uVar17 != param_5);\n      }" (if "if") (parenthesized_expression "(0 < (int)param_5)" (( "(") (binary_expression "0 < (int)param_5" (number_literal "0") (< "<") (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5"))) () ")")) (compound_statement "{\n        uVar17 = 0;\n        fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n        do {\n          bVar3 = 0;\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar20 < fVar21) {\n              bVar3 = (byte)(int)fVar20;\n            }\n            else {\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }\n          }\n          *param_7 = bVar3;\n          uVar17 = uVar17 + 1;\n          param_6 = param_6 + param_2[0xb0] * 4;\n          param_7 = param_7 + param_3[10] + 1;\n        } while (uVar17 != param_5);\n      }" ({ "{") (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" (identifier "uVar17") (= "=") (number_literal "0")) (; ";")) (expression_statement "fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);" (assignment_expression "fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" (identifier "fVar21") (= "=") (pointer_expression "*(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" (* "*") (cast_expression "(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_s_t_to_left_003a88e4 + -0x51e0)" (( "(") (binary_expression "PTR_s_t_to_left_003a88e4 + -0x51e0" (identifier "PTR_s_t_to_left_003a88e4") (+ "+") (number_literal "-0x51e0")) () ")"))))) (; ";")) (do_statement "do {\n          bVar3 = 0;\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar20 < fVar21) {\n              bVar3 = (byte)(int)fVar20;\n            }\n            else {\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }\n          }\n          *param_7 = bVar3;\n          uVar17 = uVar17 + 1;\n          param_6 = param_6 + param_2[0xb0] * 4;\n          param_7 = param_7 + param_3[10] + 1;\n        } while (uVar17 != param_5);" (do "do") (compound_statement "{\n          bVar3 = 0;\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar20 < fVar21) {\n              bVar3 = (byte)(int)fVar20;\n            }\n            else {\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }\n          }\n          *param_7 = bVar3;\n          uVar17 = uVar17 + 1;\n          param_6 = param_6 + param_2[0xb0] * 4;\n          param_7 = param_7 + param_3[10] + 1;\n        }" ({ "{") (expression_statement "bVar3 = 0;" (assignment_expression "bVar3 = 0" (identifier "bVar3") (= "=") (number_literal "0")) (; ";")) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar20 < fVar21) {\n              bVar3 = (byte)(int)fVar20;\n            }\n            else {\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }\n          }" (if "if") (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" (( "(") (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" (* "*") (cast_expression "(int *)(param_2[0xb4] + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xb4] + 0x40)" (( "(") (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" (identifier "param_2") ([ "[") (number_literal "0xb4") (] "]")) (+ "+") (number_literal "0x40")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar20 < fVar21) {\n              bVar3 = (byte)(int)fVar20;\n            }\n            else {\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }\n          }" ({ "{") (expression_statement "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (identifier "fVar20") (= "=") (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (* "*") (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (( "(") (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" (identifier "param_6") (+ "+") (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" (* "*") (cast_expression "(int *)(param_2[0xb4] + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xb4] + 0x44)" (( "(") (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" (identifier "param_2") ([ "[") (number_literal "0xb4") (] "]")) (+ "+") (number_literal "0x44")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (if_statement "if (fVar20 < fVar21) {\n              bVar3 = (byte)(int)fVar20;\n            }\n            else {\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }" (if "if") (parenthesized_expression "(fVar20 < fVar21)" (( "(") (binary_expression "fVar20 < fVar21" (identifier "fVar20") (< "<") (identifier "fVar21")) () ")")) (compound_statement "{\n              bVar3 = (byte)(int)fVar20;\n            }" ({ "{") (expression_statement "bVar3 = (byte)(int)fVar20;" (assignment_expression "bVar3 = (byte)(int)fVar20" (identifier "bVar3") (= "=") (cast_expression "(byte)(int)fVar20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (cast_expression "(int)fVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "fVar20")))) (; ";")) (} "}")) (else_clause "else {\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }" (else "else") (compound_statement "{\n              bVar3 = (byte)(int)(fVar20 - fVar21);\n            }" ({ "{") (expression_statement "bVar3 = (byte)(int)(fVar20 - fVar21);" (assignment_expression "bVar3 = (byte)(int)(fVar20 - fVar21)" (identifier "bVar3") (= "=") (call_expression "(byte)(int)(fVar20 - fVar21)" (call_expression "(byte)(int)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(int)" (( "(") (identifier "int") () ")"))) (argument_list "(fVar20 - fVar21)" (( "(") (binary_expression "fVar20 - fVar21" (identifier "fVar20") (- "-") (identifier "fVar21")) () ")")))) (; ";")) (} "}")))) (} "}"))) (expression_statement "*param_7 = bVar3;" (assignment_expression "*param_7 = bVar3" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (= "=") (identifier "bVar3")) (; ";")) (expression_statement "uVar17 = uVar17 + 1;" (assignment_expression "uVar17 = uVar17 + 1" (identifier "uVar17") (= "=") (binary_expression "uVar17 + 1" (identifier "uVar17") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" (identifier "param_6") (= "=") (binary_expression "param_6 + param_2[0xb0] * 4" (identifier "param_6") (+ "+") (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" (identifier "param_2") ([ "[") (number_literal "0xb0") (] "]")) (* "*") (number_literal "4")))) (; ";")) (expression_statement "param_7 = param_7 + param_3[10] + 1;" (assignment_expression "param_7 = param_7 + param_3[10] + 1" (identifier "param_7") (= "=") (binary_expression "param_7 + param_3[10] + 1" (binary_expression "param_7 + param_3[10]" (identifier "param_7") (+ "+") (subscript_expression "param_3[10]" (identifier "param_3") ([ "[") (number_literal "10") (] "]"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar17 != param_5)" (( "(") (binary_expression "uVar17 != param_5" (identifier "uVar17") (!= "!=") (identifier "param_5")) () ")")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      if (uVar17 < 9) {\n        if (uVar17 == 1) {\n          if (7 < (int)param_5) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;\n            do {\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          *param_7 = 0;\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          uVar16 = 0;\n          uVar17 = 7;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }\n            *param_7 = (byte)uVar16;\n            uVar17 = uVar17 - 1;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != (~param_5 & 7));\n          return;\n        }\n        if (uVar17 == 4) {\n          if (0 < (int)(param_5 - 1)) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;\n            do {\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 1) == 0) {\n            return;\n          }\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }\n            else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }\n            *param_7 = bVar3;\n            return;\n          }\n          *param_7 = 0;\n          return;\n        }\n      }\n      else {\n        if (uVar17 == 0x20) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar4 = 0;\n            bVar6 = 0;\n            bVar3 = 0;\n            bVar8 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 4;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n        if (uVar17 == 0x40) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n        }\n        else if (uVar17 == 0x10) {\n          if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n      }\n      uVar16 = 0;\n      if (0 < (int)param_5) {\n        iVar1 = param_2[0xb4];\n        if (*(int *)(iVar1 + 0x40) == 0) goto LAB_001574b0;\n        do {\n          uVar23 = (*(code *)PTR_FUN_003a8a80)\n                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4));\n          while( true ) {\n            uVar12 = (uint)((ulonglong)uVar23 >> 0x20);\n            if (param_3[0x15] == 0) {\n              param_3[0x15] = 8;\n            }\n            if (0 < (int)uVar17) {\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }\n            uVar16 = uVar16 + 1;\n            param_7 = param_7 + param_3[10];\n            param_6 = param_6 + param_2[0xb0] * 4;\n            if (uVar16 == param_5) {\n              return;\n            }\n            iVar1 = param_2[0xb4];\n            uVar17 = *param_3;\n            if (*(int *)(iVar1 + 0x40) != 0) break;\nLAB_001574b0:\n            uVar23 = 0;\n          }\n        } while( true );\n      }\n    }" (else "else") (compound_statement "{\n      if (uVar17 < 9) {\n        if (uVar17 == 1) {\n          if (7 < (int)param_5) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;\n            do {\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          *param_7 = 0;\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          uVar16 = 0;\n          uVar17 = 7;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }\n            *param_7 = (byte)uVar16;\n            uVar17 = uVar17 - 1;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != (~param_5 & 7));\n          return;\n        }\n        if (uVar17 == 4) {\n          if (0 < (int)(param_5 - 1)) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;\n            do {\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 1) == 0) {\n            return;\n          }\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }\n            else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }\n            *param_7 = bVar3;\n            return;\n          }\n          *param_7 = 0;\n          return;\n        }\n      }\n      else {\n        if (uVar17 == 0x20) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar4 = 0;\n            bVar6 = 0;\n            bVar3 = 0;\n            bVar8 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 4;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n        if (uVar17 == 0x40) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n        }\n        else if (uVar17 == 0x10) {\n          if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n      }\n      uVar16 = 0;\n      if (0 < (int)param_5) {\n        iVar1 = param_2[0xb4];\n        if (*(int *)(iVar1 + 0x40) == 0) goto LAB_001574b0;\n        do {\n          uVar23 = (*(code *)PTR_FUN_003a8a80)\n                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4));\n          while( true ) {\n            uVar12 = (uint)((ulonglong)uVar23 >> 0x20);\n            if (param_3[0x15] == 0) {\n              param_3[0x15] = 8;\n            }\n            if (0 < (int)uVar17) {\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }\n            uVar16 = uVar16 + 1;\n            param_7 = param_7 + param_3[10];\n            param_6 = param_6 + param_2[0xb0] * 4;\n            if (uVar16 == param_5) {\n              return;\n            }\n            iVar1 = param_2[0xb4];\n            uVar17 = *param_3;\n            if (*(int *)(iVar1 + 0x40) != 0) break;\nLAB_001574b0:\n            uVar23 = 0;\n          }\n        } while( true );\n      }\n    }" ({ "{") (if_statement "if (uVar17 < 9) {\n        if (uVar17 == 1) {\n          if (7 < (int)param_5) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;\n            do {\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          *param_7 = 0;\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          uVar16 = 0;\n          uVar17 = 7;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }\n            *param_7 = (byte)uVar16;\n            uVar17 = uVar17 - 1;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != (~param_5 & 7));\n          return;\n        }\n        if (uVar17 == 4) {\n          if (0 < (int)(param_5 - 1)) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;\n            do {\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 1) == 0) {\n            return;\n          }\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }\n            else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }\n            *param_7 = bVar3;\n            return;\n          }\n          *param_7 = 0;\n          return;\n        }\n      }\n      else {\n        if (uVar17 == 0x20) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar4 = 0;\n            bVar6 = 0;\n            bVar3 = 0;\n            bVar8 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 4;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n        if (uVar17 == 0x40) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n        }\n        else if (uVar17 == 0x10) {\n          if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n      }" (if "if") (parenthesized_expression "(uVar17 < 9)" (( "(") (binary_expression "uVar17 < 9" (identifier "uVar17") (< "<") (number_literal "9")) () ")")) (compound_statement "{\n        if (uVar17 == 1) {\n          if (7 < (int)param_5) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;\n            do {\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          *param_7 = 0;\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          uVar16 = 0;\n          uVar17 = 7;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }\n            *param_7 = (byte)uVar16;\n            uVar17 = uVar17 - 1;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != (~param_5 & 7));\n          return;\n        }\n        if (uVar17 == 4) {\n          if (0 < (int)(param_5 - 1)) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;\n            do {\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 1) == 0) {\n            return;\n          }\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }\n            else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }\n            *param_7 = bVar3;\n            return;\n          }\n          *param_7 = 0;\n          return;\n        }\n      }" ({ "{") (if_statement "if (uVar17 == 1) {\n          if (7 < (int)param_5) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;\n            do {\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          *param_7 = 0;\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          uVar16 = 0;\n          uVar17 = 7;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }\n            *param_7 = (byte)uVar16;\n            uVar17 = uVar17 - 1;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != (~param_5 & 7));\n          return;\n        }" (if "if") (parenthesized_expression "(uVar17 == 1)" (( "(") (binary_expression "uVar17 == 1" (identifier "uVar17") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n          if (7 < (int)param_5) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;\n            do {\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          *param_7 = 0;\n          if ((param_5 & 7) == 0) {\n            return;\n          }\n          uVar16 = 0;\n          uVar17 = 7;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }\n            *param_7 = (byte)uVar16;\n            uVar17 = uVar17 - 1;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != (~param_5 & 7));\n          return;\n        }" ({ "{") (if_statement "if (7 < (int)param_5) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;\n            do {\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }" (if "if") (parenthesized_expression "(7 < (int)param_5)" (( "(") (binary_expression "7 < (int)param_5" (number_literal "7") (< "<") (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5"))) () ")")) (compound_statement "{\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;\n            do {\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }" ({ "{") (expression_statement "fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);" (assignment_expression "fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" (identifier "fVar21") (= "=") (pointer_expression "*(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" (* "*") (cast_expression "(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_s_t_to_left_003a88e4 + -0x51e0)" (( "(") (binary_expression "PTR_s_t_to_left_003a88e4 + -0x51e0" (identifier "PTR_s_t_to_left_003a88e4") (+ "+") (number_literal "-0x51e0")) () ")"))))) (; ";")) (expression_statement "pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;" (assignment_expression "pbVar5 = param_7 + (param_5 - 8 >> 3) + 1" (identifier "pbVar5") (= "=") (binary_expression "param_7 + (param_5 - 8 >> 3) + 1" (binary_expression "param_7 + (param_5 - 8 >> 3)" (identifier "param_7") (+ "+") (parenthesized_expression "(param_5 - 8 >> 3)" (( "(") (binary_expression "param_5 - 8 >> 3" (binary_expression "param_5 - 8" (identifier "param_5") (- "-") (number_literal "8")) (>> ">>") (number_literal "3")) () ")"))) (+ "+") (number_literal "1"))) (; ";")) (do_statement "do {\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);" (do "do") (compound_statement "{\n              bVar3 = 0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }\n              *param_7 = bVar6;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar3 = bVar6;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              bVar6 = bVar3;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }\n              *param_7 = bVar6;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            }" ({ "{") (expression_statement "bVar3 = 0;" (assignment_expression "bVar3 = 0" (identifier "bVar3") (= "=") (number_literal "0")) (; ";")) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }" (if "if") (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" (( "(") (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" (* "*") (cast_expression "(int *)(param_2[0xb4] + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xb4] + 0x40)" (( "(") (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" (identifier "param_2") ([ "[") (number_literal "0xb4") (] "]")) (+ "+") (number_literal "0x40")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);\n              }" ({ "{") (expression_statement "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (identifier "fVar20") (= "=") (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (* "*") (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (( "(") (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" (identifier "param_6") (+ "+") (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" (* "*") (cast_expression "(int *)(param_2[0xb4] + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xb4] + 0x44)" (( "(") (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" (identifier "param_2") ([ "[") (number_literal "0xb4") (] "]")) (+ "+") (number_literal "0x44")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (if_statement "if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }" (if "if") (parenthesized_expression "(fVar21 <= fVar20)" (( "(") (binary_expression "fVar21 <= fVar20" (identifier "fVar21") (<= "<=") (identifier "fVar20")) () ")")) (compound_statement "{\n                  fVar20 = fVar20 - fVar21;\n                }" ({ "{") (expression_statement "fVar20 = fVar20 - fVar21;" (assignment_expression "fVar20 = fVar20 - fVar21" (identifier "fVar20") (= "=") (binary_expression "fVar20 - fVar21" (identifier "fVar20") (- "-") (identifier "fVar21"))) (; ";")) (} "}"))) (expression_statement "bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);" (assignment_expression "bVar3 = (byte)(((int)fVar20 & 0xffU) << 7)" (identifier "bVar3") (= "=") (call_expression "(byte)(((int)fVar20 & 0xffU) << 7)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(((int)fVar20 & 0xffU) << 7)" (( "(") (binary_expression "((int)fVar20 & 0xffU) << 7" (parenthesized_expression "((int)fVar20 & 0xffU)" (( "(") (binary_expression "(int)fVar20 & 0xffU" (cast_expression "(int)fVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "fVar20")) (& "&") (number_literal "0xffU")) () ")")) (<< "<<") (number_literal "7")) () ")")))) (; ";")) (} "}"))) (expression_statement "*param_7 = bVar3;" (assignment_expression "*param_7 = bVar3" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (= "=") (identifier "bVar3")) (; ";")) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" (identifier "param_6") (= "=") (binary_expression "param_6 + param_2[0xb0] * 4" (identifier "param_6") (+ "+") (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" (identifier "param_2") ([ "[") (number_literal "0xb0") (] "]")) (* "*") (number_literal "4")))) (; ";")) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }" (if "if") (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" (( "(") (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" (* "*") (cast_expression "(int *)(param_2[0xb4] + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xb4] + 0x40)" (( "(") (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" (identifier "param_2") ([ "[") (number_literal "0xb4") (] "]")) (+ "+") (number_literal "0x40")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);\n              }" ({ "{") (expression_statement "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (identifier "fVar20") (= "=") (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (* "*") (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (( "(") (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" (identifier "param_6") (+ "+") (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" (* "*") (cast_expression "(int *)(param_2[0xb4] + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xb4] + 0x44)" (( "(") (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" (identifier "param_2") ([ "[") (number_literal "0xb4") (] "]")) (+ "+") (number_literal "0x44")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (if_statement "if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }" (if "if") (parenthesized_expression "(fVar21 <= fVar20)" (( "(") (binary_expression "fVar21 <= fVar20" (identifier "fVar21") (<= "<=") (identifier "fVar20")) () ")")) (compound_statement "{\n                  fVar20 = fVar20 - fVar21;\n                }" ({ "{") (expression_statement "fVar20 = fVar20 - fVar21;" (assignment_expression "fVar20 = fVar20 - fVar21" (identifier "fVar20") (= "=") (binary_expression "fVar20 - fVar21" (identifier "fVar20") (- "-") (identifier "fVar21"))) (; ";")) (} "}"))) (expression_statement "bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);" (assignment_expression "bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6)" (identifier "bVar3") (= "=") (binary_expression "bVar3 | (byte)(((int)fVar20 & 1U) << 6)" (identifier "bVar3") (| "|") (call_expression "(byte)(((int)fVar20 & 1U) << 6)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(((int)fVar20 & 1U) << 6)" (( "(") (binary_expression "((int)fVar20 & 1U) << 6" (parenthesized_expression "((int)fVar20 & 1U)" (( "(") (binary_expression "(int)fVar20 & 1U" (cast_expression "(int)fVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "fVar20")) (& "&") (number_literal "1U")) () ")")) (<< "<<") (number_literal "6")) () ")"))))) (; ";")) (} "}"))) (expression_statement "*param_7 = bVar3;" (assignment_expression "*param_7 = bVar3" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (= "=") (identifier "bVar3")) (; ";")) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" (identifier "param_6") (= "=") (binary_expression "param_6 + param_2[0xb0] * 4" (identifier "param_6") (+ "+") (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" (identifier "param_2") ([ "[") (number_literal "0xb0") (] "]")) (* "*") (number_literal "4")))) (; ";")) (expression_statement "bVar6 = bVar3;" (assignment_expression "bVar6 = bVar3" (identifier "bVar6") (= "=") (identifier "bVar3")) (; ";")) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }" (if "if") (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" (( "(") (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" (* "*") (cast_expression "(int *)(param_2[0xb4] + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xb4] + 0x40)" (( "(") (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" (identifier "param_2") ([ "[") (number_literal "0xb4") (] "]")) (+ "+") (number_literal "0x40")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 5);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }" ({ "{") (expression_statement "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (identifier "fVar20") (= "=") (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (* "*") (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (( "(") (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" (identifier "param_6") (+ "+") (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" (* "*") (cast_expression "(int *)(param_2[0xb4] + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xb4] + 0x44)" (( "(") (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" (identifier "param_2") ([ "[") (number_literal "0xb4") (] "]")) (+ "+") (number_literal "0x44")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (if_statement "if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }" (if "if") (parenthesized_expression "(fVar21 <= fVar20)" (( "(") (binary_expression "fVar21 <= fVar20" (identifier "fVar21") (<= "<=") (identifier "fVar20")) () ")")) (compound_statement "{\n                  fVar20 = fVar20 - fVar21;\n                }" ({ "{") (expression_statement "fVar20 = fVar20 - fVar21;" (assignment_expression "fVar20 = fVar20 - fVar21" (identifier "fVar20") (= "=") (binary_expression "fVar20 - fVar21" (identifier "fVar20") (- "-") (identifier "fVar21"))) (; ";")) (} "}"))) (expression_statement "bVar4 = (byte)(((int)fVar20 & 1U) << 5);" (assignment_expression "bVar4 = (byte)(((int)fVar20 & 1U) << 5)" (identifier "bVar4") (= "=") (call_expression "(byte)(((int)fVar20 & 1U) << 5)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(((int)fVar20 & 1U) << 5)" (( "(") (binary_expression "((int)fVar20 & 1U) << 5" (parenthesized_expression "((int)fVar20 & 1U)" (( "(") (binary_expression "(int)fVar20 & 1U" (cast_expression "(int)fVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "fVar20")) (& "&") (number_literal "1U")) () ")")) (<< "<<") (number_literal "5")) () ")")))) (; ";")) (expression_statement "bVar6 = bVar3 | bVar4;" (assignment_expression "bVar6 = bVar3 | bVar4" (identifier "bVar6") (= "=") (binary_expression "bVar3 | bVar4" (identifier "bVar3") (| "|") (identifier "bVar4"))) (; ";")) (expression_statement "*param_7 = bVar3 | bVar4;" (assignment_expression "*param_7 = bVar3 | bVar4" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (= "=") (binary_expression "bVar3 | bVar4" (identifier "bVar3") (| "|") (identifier "bVar4"))) (; ";")) (} "}"))) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" (identifier "param_6") (= "=") (binary_expression "param_6 + param_2[0xb0] * 4" (identifier "param_6") (+ "+") (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" (identifier "param_2") ([ "[") (number_literal "0xb0") (] "]")) (* "*") (number_literal "4")))) (; ";")) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }" (if "if") (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" (( "(") (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" (* "*") (cast_expression "(int *)(param_2[0xb4] + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xb4] + 0x40)" (( "(") (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" (identifier "param_2") ([ "[") (number_literal "0xb4") (] "]")) (+ "+") (number_literal "0x40")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);\n              }" ({ "{") (expression_statement "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (identifier "fVar20") (= "=") (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (* "*") (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (( "(") (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" (identifier "param_6") (+ "+") (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" (* "*") (cast_expression "(int *)(param_2[0xb4] + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xb4] + 0x44)" (( "(") (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" (identifier "param_2") ([ "[") (number_literal "0xb4") (] "]")) (+ "+") (number_literal "0x44")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (if_statement "if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }" (if "if") (parenthesized_expression "(fVar21 <= fVar20)" (( "(") (binary_expression "fVar21 <= fVar20" (identifier "fVar21") (<= "<=") (identifier "fVar20")) () ")")) (compound_statement "{\n                  fVar20 = fVar20 - fVar21;\n                }" ({ "{") (expression_statement "fVar20 = fVar20 - fVar21;" (assignment_expression "fVar20 = fVar20 - fVar21" (identifier "fVar20") (= "=") (binary_expression "fVar20 - fVar21" (identifier "fVar20") (- "-") (identifier "fVar21"))) (; ";")) (} "}"))) (expression_statement "bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);" (assignment_expression "bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4)" (identifier "bVar6") (= "=") (binary_expression "bVar6 | (byte)(((int)fVar20 & 1U) << 4)" (identifier "bVar6") (| "|") (call_expression "(byte)(((int)fVar20 & 1U) << 4)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(((int)fVar20 & 1U) << 4)" (( "(") (binary_expression "((int)fVar20 & 1U) << 4" (parenthesized_expression "((int)fVar20 & 1U)" (( "(") (binary_expression "(int)fVar20 & 1U" (cast_expression "(int)fVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "fVar20")) (& "&") (number_literal "1U")) () ")")) (<< "<<") (number_literal "4")) () ")"))))) (; ";")) (} "}"))) (expression_statement "*param_7 = bVar6;" (assignment_expression "*param_7 = bVar6" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (= "=") (identifier "bVar6")) (; ";")) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" (identifier "param_6") (= "=") (binary_expression "param_6 + param_2[0xb0] * 4" (identifier "param_6") (+ "+") (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" (identifier "param_2") ([ "[") (number_literal "0xb0") (] "]")) (* "*") (number_literal "4")))) (; ";")) (expression_statement "bVar3 = bVar6;" (assignment_expression "bVar3 = bVar6" (identifier "bVar3") (= "=") (identifier "bVar6")) (; ";")) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }" (if "if") (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" (( "(") (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" (* "*") (cast_expression "(int *)(param_2[0xb4] + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xb4] + 0x40)" (( "(") (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" (identifier "param_2") ([ "[") (number_literal "0xb4") (] "]")) (+ "+") (number_literal "0x40")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 3);\n                bVar3 = bVar6 | bVar4;\n                *param_7 = bVar6 | bVar4;\n              }" ({ "{") (expression_statement "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (identifier "fVar20") (= "=") (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (* "*") (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (( "(") (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" (identifier "param_6") (+ "+") (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" (* "*") (cast_expression "(int *)(param_2[0xb4] + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xb4] + 0x44)" (( "(") (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" (identifier "param_2") ([ "[") (number_literal "0xb4") (] "]")) (+ "+") (number_literal "0x44")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (if_statement "if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }" (if "if") (parenthesized_expression "(fVar21 <= fVar20)" (( "(") (binary_expression "fVar21 <= fVar20" (identifier "fVar21") (<= "<=") (identifier "fVar20")) () ")")) (compound_statement "{\n                  fVar20 = fVar20 - fVar21;\n                }" ({ "{") (expression_statement "fVar20 = fVar20 - fVar21;" (assignment_expression "fVar20 = fVar20 - fVar21" (identifier "fVar20") (= "=") (binary_expression "fVar20 - fVar21" (identifier "fVar20") (- "-") (identifier "fVar21"))) (; ";")) (} "}"))) (expression_statement "bVar4 = (byte)(((int)fVar20 & 1U) << 3);" (assignment_expression "bVar4 = (byte)(((int)fVar20 & 1U) << 3)" (identifier "bVar4") (= "=") (call_expression "(byte)(((int)fVar20 & 1U) << 3)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(((int)fVar20 & 1U) << 3)" (( "(") (binary_expression "((int)fVar20 & 1U) << 3" (parenthesized_expression "((int)fVar20 & 1U)" (( "(") (binary_expression "(int)fVar20 & 1U" (cast_expression "(int)fVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "fVar20")) (& "&") (number_literal "1U")) () ")")) (<< "<<") (number_literal "3")) () ")")))) (; ";")) (expression_statement "bVar3 = bVar6 | bVar4;" (assignment_expression "bVar3 = bVar6 | bVar4" (identifier "bVar3") (= "=") (binary_expression "bVar6 | bVar4" (identifier "bVar6") (| "|") (identifier "bVar4"))) (; ";")) (expression_statement "*param_7 = bVar6 | bVar4;" (assignment_expression "*param_7 = bVar6 | bVar4" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (= "=") (binary_expression "bVar6 | bVar4" (identifier "bVar6") (| "|") (identifier "bVar4"))) (; ";")) (} "}"))) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" (identifier "param_6") (= "=") (binary_expression "param_6 + param_2[0xb0] * 4" (identifier "param_6") (+ "+") (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" (identifier "param_2") ([ "[") (number_literal "0xb0") (] "]")) (* "*") (number_literal "4")))) (; ";")) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }" (if "if") (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" (( "(") (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" (* "*") (cast_expression "(int *)(param_2[0xb4] + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xb4] + 0x40)" (( "(") (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" (identifier "param_2") ([ "[") (number_literal "0xb4") (] "]")) (+ "+") (number_literal "0x40")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);\n              }" ({ "{") (expression_statement "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (identifier "fVar20") (= "=") (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (* "*") (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (( "(") (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" (identifier "param_6") (+ "+") (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" (* "*") (cast_expression "(int *)(param_2[0xb4] + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xb4] + 0x44)" (( "(") (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" (identifier "param_2") ([ "[") (number_literal "0xb4") (] "]")) (+ "+") (number_literal "0x44")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (if_statement "if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }" (if "if") (parenthesized_expression "(fVar21 <= fVar20)" (( "(") (binary_expression "fVar21 <= fVar20" (identifier "fVar21") (<= "<=") (identifier "fVar20")) () ")")) (compound_statement "{\n                  fVar20 = fVar20 - fVar21;\n                }" ({ "{") (expression_statement "fVar20 = fVar20 - fVar21;" (assignment_expression "fVar20 = fVar20 - fVar21" (identifier "fVar20") (= "=") (binary_expression "fVar20 - fVar21" (identifier "fVar20") (- "-") (identifier "fVar21"))) (; ";")) (} "}"))) (expression_statement "bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);" (assignment_expression "bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2)" (identifier "bVar3") (= "=") (binary_expression "bVar3 | (byte)(((int)fVar20 & 1U) << 2)" (identifier "bVar3") (| "|") (call_expression "(byte)(((int)fVar20 & 1U) << 2)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(((int)fVar20 & 1U) << 2)" (( "(") (binary_expression "((int)fVar20 & 1U) << 2" (parenthesized_expression "((int)fVar20 & 1U)" (( "(") (binary_expression "(int)fVar20 & 1U" (cast_expression "(int)fVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "fVar20")) (& "&") (number_literal "1U")) () ")")) (<< "<<") (number_literal "2")) () ")"))))) (; ";")) (} "}"))) (expression_statement "*param_7 = bVar3;" (assignment_expression "*param_7 = bVar3" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (= "=") (identifier "bVar3")) (; ";")) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" (identifier "param_6") (= "=") (binary_expression "param_6 + param_2[0xb0] * 4" (identifier "param_6") (+ "+") (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" (identifier "param_2") ([ "[") (number_literal "0xb0") (] "]")) (* "*") (number_literal "4")))) (; ";")) (expression_statement "bVar6 = bVar3;" (assignment_expression "bVar6 = bVar3" (identifier "bVar6") (= "=") (identifier "bVar3")) (; ";")) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }" (if "if") (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" (( "(") (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" (* "*") (cast_expression "(int *)(param_2[0xb4] + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xb4] + 0x40)" (( "(") (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" (identifier "param_2") ([ "[") (number_literal "0xb4") (] "]")) (+ "+") (number_literal "0x40")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar4 = (byte)(((int)fVar20 & 1U) << 1);\n                bVar6 = bVar3 | bVar4;\n                *param_7 = bVar3 | bVar4;\n              }" ({ "{") (expression_statement "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (identifier "fVar20") (= "=") (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (* "*") (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (( "(") (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" (identifier "param_6") (+ "+") (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" (* "*") (cast_expression "(int *)(param_2[0xb4] + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xb4] + 0x44)" (( "(") (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" (identifier "param_2") ([ "[") (number_literal "0xb4") (] "]")) (+ "+") (number_literal "0x44")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (if_statement "if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }" (if "if") (parenthesized_expression "(fVar21 <= fVar20)" (( "(") (binary_expression "fVar21 <= fVar20" (identifier "fVar21") (<= "<=") (identifier "fVar20")) () ")")) (compound_statement "{\n                  fVar20 = fVar20 - fVar21;\n                }" ({ "{") (expression_statement "fVar20 = fVar20 - fVar21;" (assignment_expression "fVar20 = fVar20 - fVar21" (identifier "fVar20") (= "=") (binary_expression "fVar20 - fVar21" (identifier "fVar20") (- "-") (identifier "fVar21"))) (; ";")) (} "}"))) (expression_statement "bVar4 = (byte)(((int)fVar20 & 1U) << 1);" (assignment_expression "bVar4 = (byte)(((int)fVar20 & 1U) << 1)" (identifier "bVar4") (= "=") (call_expression "(byte)(((int)fVar20 & 1U) << 1)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(((int)fVar20 & 1U) << 1)" (( "(") (binary_expression "((int)fVar20 & 1U) << 1" (parenthesized_expression "((int)fVar20 & 1U)" (( "(") (binary_expression "(int)fVar20 & 1U" (cast_expression "(int)fVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "fVar20")) (& "&") (number_literal "1U")) () ")")) (<< "<<") (number_literal "1")) () ")")))) (; ";")) (expression_statement "bVar6 = bVar3 | bVar4;" (assignment_expression "bVar6 = bVar3 | bVar4" (identifier "bVar6") (= "=") (binary_expression "bVar3 | bVar4" (identifier "bVar3") (| "|") (identifier "bVar4"))) (; ";")) (expression_statement "*param_7 = bVar3 | bVar4;" (assignment_expression "*param_7 = bVar3 | bVar4" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (= "=") (binary_expression "bVar3 | bVar4" (identifier "bVar3") (| "|") (identifier "bVar4"))) (; ";")) (} "}"))) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" (identifier "param_6") (= "=") (binary_expression "param_6 + param_2[0xb0] * 4" (identifier "param_6") (+ "+") (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" (identifier "param_2") ([ "[") (number_literal "0xb0") (] "]")) (* "*") (number_literal "4")))) (; ";")) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }" (if "if") (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" (( "(") (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" (* "*") (cast_expression "(int *)(param_2[0xb4] + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xb4] + 0x40)" (( "(") (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" (identifier "param_2") ([ "[") (number_literal "0xb4") (] "]")) (+ "+") (number_literal "0x40")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar6 = bVar6 | bVar3 & 1;\n              }" ({ "{") (expression_statement "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (identifier "fVar20") (= "=") (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (* "*") (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (( "(") (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" (identifier "param_6") (+ "+") (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" (* "*") (cast_expression "(int *)(param_2[0xb4] + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xb4] + 0x44)" (( "(") (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" (identifier "param_2") ([ "[") (number_literal "0xb4") (] "]")) (+ "+") (number_literal "0x44")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (if_statement "if (fVar20 < fVar21) {\n                  bVar3 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }" (if "if") (parenthesized_expression "(fVar20 < fVar21)" (( "(") (binary_expression "fVar20 < fVar21" (identifier "fVar20") (< "<") (identifier "fVar21")) () ")")) (compound_statement "{\n                  bVar3 = (byte)(int)fVar20;\n                }" ({ "{") (expression_statement "bVar3 = (byte)(int)fVar20;" (assignment_expression "bVar3 = (byte)(int)fVar20" (identifier "bVar3") (= "=") (cast_expression "(byte)(int)fVar20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (cast_expression "(int)fVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "fVar20")))) (; ";")) (} "}")) (else_clause "else {\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }" (else "else") (compound_statement "{\n                  bVar3 = (byte)(int)(fVar20 - fVar21);\n                }" ({ "{") (expression_statement "bVar3 = (byte)(int)(fVar20 - fVar21);" (assignment_expression "bVar3 = (byte)(int)(fVar20 - fVar21)" (identifier "bVar3") (= "=") (call_expression "(byte)(int)(fVar20 - fVar21)" (call_expression "(byte)(int)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(int)" (( "(") (identifier "int") () ")"))) (argument_list "(fVar20 - fVar21)" (( "(") (binary_expression "fVar20 - fVar21" (identifier "fVar20") (- "-") (identifier "fVar21")) () ")")))) (; ";")) (} "}")))) (expression_statement "bVar6 = bVar6 | bVar3 & 1;" (assignment_expression "bVar6 = bVar6 | bVar3 & 1" (identifier "bVar6") (= "=") (binary_expression "bVar6 | bVar3 & 1" (identifier "bVar6") (| "|") (binary_expression "bVar3 & 1" (identifier "bVar3") (& "&") (number_literal "1")))) (; ";")) (} "}"))) (expression_statement "*param_7 = bVar6;" (assignment_expression "*param_7 = bVar6" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (= "=") (identifier "bVar6")) (; ";")) (expression_statement "param_7 = param_7 + 1;" (assignment_expression "param_7 = param_7 + 1" (identifier "param_7") (= "=") (binary_expression "param_7 + 1" (identifier "param_7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" (identifier "param_6") (= "=") (binary_expression "param_6 + param_2[0xb0] * 4" (identifier "param_6") (+ "+") (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" (identifier "param_2") ([ "[") (number_literal "0xb0") (] "]")) (* "*") (number_literal "4")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_7 != pbVar5)" (( "(") (binary_expression "param_7 != pbVar5" (identifier "param_7") (!= "!=") (identifier "pbVar5")) () ")")) (; ";")) (} "}"))) (if_statement "if ((param_5 & 7) == 0) {\n            return;\n          }" (if "if") (parenthesized_expression "((param_5 & 7) == 0)" (( "(") (binary_expression "(param_5 & 7) == 0" (parenthesized_expression "(param_5 & 7)" (( "(") (binary_expression "param_5 & 7" (identifier "param_5") (& "&") (number_literal "7")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            return;\n          }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "*param_7 = 0;" (assignment_expression "*param_7 = 0" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (= "=") (number_literal "0")) (; ";")) (if_statement "if ((param_5 & 7) == 0) {\n            return;\n          }" (if "if") (parenthesized_expression "((param_5 & 7) == 0)" (( "(") (binary_expression "(param_5 & 7) == 0" (parenthesized_expression "(param_5 & 7)" (( "(") (binary_expression "param_5 & 7" (identifier "param_5") (& "&") (number_literal "7")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            return;\n          }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" (identifier "uVar16") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar17 = 7;" (assignment_expression "uVar17 = 7" (identifier "uVar17") (= "=") (number_literal "7")) (; ";")) (expression_statement "fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);" (assignment_expression "fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" (identifier "fVar21") (= "=") (pointer_expression "*(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" (* "*") (cast_expression "(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_s_t_to_left_003a88e4 + -0x51e0)" (( "(") (binary_expression "PTR_s_t_to_left_003a88e4 + -0x51e0" (identifier "PTR_s_t_to_left_003a88e4") (+ "+") (number_literal "-0x51e0")) () ")"))))) (; ";")) (do_statement "do {\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }\n            *param_7 = (byte)uVar16;\n            uVar17 = uVar17 - 1;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != (~param_5 & 7));" (do "do") (compound_statement "{\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }\n            *param_7 = (byte)uVar16;\n            uVar17 = uVar17 - 1;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          }" ({ "{") (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }" (if "if") (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" (( "(") (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" (* "*") (cast_expression "(int *)(param_2[0xb4] + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xb4] + 0x40)" (( "(") (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" (identifier "param_2") ([ "[") (number_literal "0xb4") (] "]")) (+ "+") (number_literal "0x40")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }\n              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;\n            }" ({ "{") (expression_statement "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (identifier "fVar20") (= "=") (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (* "*") (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (( "(") (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" (identifier "param_6") (+ "+") (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" (* "*") (cast_expression "(int *)(param_2[0xb4] + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xb4] + 0x44)" (( "(") (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" (identifier "param_2") ([ "[") (number_literal "0xb4") (] "]")) (+ "+") (number_literal "0x44")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (if_statement "if (fVar21 <= fVar20) {\n                fVar20 = fVar20 - fVar21;\n              }" (if "if") (parenthesized_expression "(fVar21 <= fVar20)" (( "(") (binary_expression "fVar21 <= fVar20" (identifier "fVar21") (<= "<=") (identifier "fVar20")) () ")")) (compound_statement "{\n                fVar20 = fVar20 - fVar21;\n              }" ({ "{") (expression_statement "fVar20 = fVar20 - fVar21;" (assignment_expression "fVar20 = fVar20 - fVar21" (identifier "fVar20") (= "=") (binary_expression "fVar20 - fVar21" (identifier "fVar20") (- "-") (identifier "fVar21"))) (; ";")) (} "}"))) (expression_statement "uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;" (assignment_expression "uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16" (identifier "uVar16") (= "=") (binary_expression "((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16" (binary_expression "((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff" (binary_expression "((int)fVar20 & 1U) << (uVar17 & 0x1f)" (parenthesized_expression "((int)fVar20 & 1U)" (( "(") (binary_expression "(int)fVar20 & 1U" (cast_expression "(int)fVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "fVar20")) (& "&") (number_literal "1U")) () ")")) (<< "<<") (parenthesized_expression "(uVar17 & 0x1f)" (( "(") (binary_expression "uVar17 & 0x1f" (identifier "uVar17") (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "0xff")) (| "|") (identifier "uVar16"))) (; ";")) (} "}"))) (expression_statement "*param_7 = (byte)uVar16;" (assignment_expression "*param_7 = (byte)uVar16" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (= "=") (cast_expression "(byte)uVar16" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar16"))) (; ";")) (expression_statement "uVar17 = uVar17 - 1;" (assignment_expression "uVar17 = uVar17 - 1" (identifier "uVar17") (= "=") (binary_expression "uVar17 - 1" (identifier "uVar17") (- "-") (number_literal "1"))) (; ";")) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" (identifier "param_6") (= "=") (binary_expression "param_6 + param_2[0xb0] * 4" (identifier "param_6") (+ "+") (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" (identifier "param_2") ([ "[") (number_literal "0xb0") (] "]")) (* "*") (number_literal "4")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar17 != (~param_5 & 7))" (( "(") (binary_expression "uVar17 != (~param_5 & 7)" (identifier "uVar17") (!= "!=") (parenthesized_expression "(~param_5 & 7)" (( "(") (binary_expression "~param_5 & 7" (unary_expression "~param_5" (~ "~") (identifier "param_5")) (& "&") (number_literal "7")) () ")"))) () ")")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (uVar17 == 4) {\n          if (0 < (int)(param_5 - 1)) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;\n            do {\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 1) == 0) {\n            return;\n          }\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }\n            else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }\n            *param_7 = bVar3;\n            return;\n          }\n          *param_7 = 0;\n          return;\n        }" (if "if") (parenthesized_expression "(uVar17 == 4)" (( "(") (binary_expression "uVar17 == 4" (identifier "uVar17") (== "==") (number_literal "4")) () ")")) (compound_statement "{\n          if (0 < (int)(param_5 - 1)) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;\n            do {\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }\n          if ((param_5 & 1) == 0) {\n            return;\n          }\n          if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }\n            else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }\n            *param_7 = bVar3;\n            return;\n          }\n          *param_7 = 0;\n          return;\n        }" ({ "{") (if_statement "if (0 < (int)(param_5 - 1)) {\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;\n            do {\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }" (if "if") (parenthesized_expression "(0 < (int)(param_5 - 1))" (( "(") (binary_expression "0 < (int)(param_5 - 1)" (number_literal "0") (< "<") (cast_expression "(int)(param_5 - 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(param_5 - 1)" (( "(") (binary_expression "param_5 - 1" (identifier "param_5") (- "-") (number_literal "1")) () ")")))) () ")")) (compound_statement "{\n            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n            pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;\n            do {\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);\n          }" ({ "{") (expression_statement "fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);" (assignment_expression "fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" (identifier "fVar21") (= "=") (pointer_expression "*(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" (* "*") (cast_expression "(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_s_t_to_left_003a88e4 + -0x51e0)" (( "(") (binary_expression "PTR_s_t_to_left_003a88e4 + -0x51e0" (identifier "PTR_s_t_to_left_003a88e4") (+ "+") (number_literal "-0x51e0")) () ")"))))) (; ";")) (expression_statement "pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;" (assignment_expression "pbVar5 = param_7 + (param_5 - 2 >> 1) + 1" (identifier "pbVar5") (= "=") (binary_expression "param_7 + (param_5 - 2 >> 1) + 1" (binary_expression "param_7 + (param_5 - 2 >> 1)" (identifier "param_7") (+ "+") (parenthesized_expression "(param_5 - 2 >> 1)" (( "(") (binary_expression "param_5 - 2 >> 1" (binary_expression "param_5 - 2" (identifier "param_5") (- "-") (number_literal "2")) (>> ">>") (number_literal "1")) () ")"))) (+ "+") (number_literal "1"))) (; ";")) (do_statement "do {\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (param_7 != pbVar5);" (do "do") (compound_statement "{\n              if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }\n              *param_7 = bVar3;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }\n              *param_7 = bVar3;\n              param_7 = param_7 + 1;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            }" ({ "{") (if_statement "if (*(int *)(param_2[0xb4] + 0x40) == 0) {\n                bVar3 = 0;\n              }\n              else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }" (if "if") (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) == 0)" (( "(") (binary_expression "*(int *)(param_2[0xb4] + 0x40) == 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" (* "*") (cast_expression "(int *)(param_2[0xb4] + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xb4] + 0x40)" (( "(") (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" (identifier "param_2") ([ "[") (number_literal "0xb4") (] "]")) (+ "+") (number_literal "0x40")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                bVar3 = 0;\n              }" ({ "{") (expression_statement "bVar3 = 0;" (assignment_expression "bVar3 = 0" (identifier "bVar3") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }" (else "else") (compound_statement "{\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }\n                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);\n              }" ({ "{") (expression_statement "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (identifier "fVar20") (= "=") (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (* "*") (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (( "(") (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" (identifier "param_6") (+ "+") (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" (* "*") (cast_expression "(int *)(param_2[0xb4] + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xb4] + 0x44)" (( "(") (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" (identifier "param_2") ([ "[") (number_literal "0xb4") (] "]")) (+ "+") (number_literal "0x44")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (if_statement "if (fVar21 <= fVar20) {\n                  fVar20 = fVar20 - fVar21;\n                }" (if "if") (parenthesized_expression "(fVar21 <= fVar20)" (( "(") (binary_expression "fVar21 <= fVar20" (identifier "fVar21") (<= "<=") (identifier "fVar20")) () ")")) (compound_statement "{\n                  fVar20 = fVar20 - fVar21;\n                }" ({ "{") (expression_statement "fVar20 = fVar20 - fVar21;" (assignment_expression "fVar20 = fVar20 - fVar21" (identifier "fVar20") (= "=") (binary_expression "fVar20 - fVar21" (identifier "fVar20") (- "-") (identifier "fVar21"))) (; ";")) (} "}"))) (expression_statement "bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);" (assignment_expression "bVar3 = (byte)(((int)fVar20 & 0xffU) << 4)" (identifier "bVar3") (= "=") (call_expression "(byte)(((int)fVar20 & 0xffU) << 4)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(((int)fVar20 & 0xffU) << 4)" (( "(") (binary_expression "((int)fVar20 & 0xffU) << 4" (parenthesized_expression "((int)fVar20 & 0xffU)" (( "(") (binary_expression "(int)fVar20 & 0xffU" (cast_expression "(int)fVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "fVar20")) (& "&") (number_literal "0xffU")) () ")")) (<< "<<") (number_literal "4")) () ")")))) (; ";")) (} "}")))) (expression_statement "*param_7 = bVar3;" (assignment_expression "*param_7 = bVar3" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (= "=") (identifier "bVar3")) (; ";")) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" (identifier "param_6") (= "=") (binary_expression "param_6 + param_2[0xb0] * 4" (identifier "param_6") (+ "+") (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" (identifier "param_2") ([ "[") (number_literal "0xb0") (] "]")) (* "*") (number_literal "4")))) (; ";")) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }" (if "if") (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" (( "(") (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" (* "*") (cast_expression "(int *)(param_2[0xb4] + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xb4] + 0x40)" (( "(") (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" (identifier "param_2") ([ "[") (number_literal "0xb4") (] "]")) (+ "+") (number_literal "0x40")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n                if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }\n                bVar3 = bVar3 | bVar6 & 0xf;\n              }" ({ "{") (expression_statement "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (identifier "fVar20") (= "=") (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (* "*") (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (( "(") (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" (identifier "param_6") (+ "+") (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" (* "*") (cast_expression "(int *)(param_2[0xb4] + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xb4] + 0x44)" (( "(") (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" (identifier "param_2") ([ "[") (number_literal "0xb4") (] "]")) (+ "+") (number_literal "0x44")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (if_statement "if (fVar20 < fVar21) {\n                  bVar6 = (byte)(int)fVar20;\n                }\n                else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }" (if "if") (parenthesized_expression "(fVar20 < fVar21)" (( "(") (binary_expression "fVar20 < fVar21" (identifier "fVar20") (< "<") (identifier "fVar21")) () ")")) (compound_statement "{\n                  bVar6 = (byte)(int)fVar20;\n                }" ({ "{") (expression_statement "bVar6 = (byte)(int)fVar20;" (assignment_expression "bVar6 = (byte)(int)fVar20" (identifier "bVar6") (= "=") (cast_expression "(byte)(int)fVar20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (cast_expression "(int)fVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "fVar20")))) (; ";")) (} "}")) (else_clause "else {\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }" (else "else") (compound_statement "{\n                  bVar6 = (byte)(int)(fVar20 - fVar21);\n                }" ({ "{") (expression_statement "bVar6 = (byte)(int)(fVar20 - fVar21);" (assignment_expression "bVar6 = (byte)(int)(fVar20 - fVar21)" (identifier "bVar6") (= "=") (call_expression "(byte)(int)(fVar20 - fVar21)" (call_expression "(byte)(int)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(int)" (( "(") (identifier "int") () ")"))) (argument_list "(fVar20 - fVar21)" (( "(") (binary_expression "fVar20 - fVar21" (identifier "fVar20") (- "-") (identifier "fVar21")) () ")")))) (; ";")) (} "}")))) (expression_statement "bVar3 = bVar3 | bVar6 & 0xf;" (assignment_expression "bVar3 = bVar3 | bVar6 & 0xf" (identifier "bVar3") (= "=") (binary_expression "bVar3 | bVar6 & 0xf" (identifier "bVar3") (| "|") (binary_expression "bVar6 & 0xf" (identifier "bVar6") (& "&") (number_literal "0xf")))) (; ";")) (} "}"))) (expression_statement "*param_7 = bVar3;" (assignment_expression "*param_7 = bVar3" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (= "=") (identifier "bVar3")) (; ";")) (expression_statement "param_7 = param_7 + 1;" (assignment_expression "param_7 = param_7 + 1" (identifier "param_7") (= "=") (binary_expression "param_7 + 1" (identifier "param_7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" (identifier "param_6") (= "=") (binary_expression "param_6 + param_2[0xb0] * 4" (identifier "param_6") (+ "+") (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" (identifier "param_2") ([ "[") (number_literal "0xb0") (] "]")) (* "*") (number_literal "4")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_7 != pbVar5)" (( "(") (binary_expression "param_7 != pbVar5" (identifier "param_7") (!= "!=") (identifier "pbVar5")) () ")")) (; ";")) (} "}"))) (if_statement "if ((param_5 & 1) == 0) {\n            return;\n          }" (if "if") (parenthesized_expression "((param_5 & 1) == 0)" (( "(") (binary_expression "(param_5 & 1) == 0" (parenthesized_expression "(param_5 & 1)" (( "(") (binary_expression "param_5 & 1" (identifier "param_5") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            return;\n          }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n            fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }\n            else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }\n            *param_7 = bVar3;\n            return;\n          }" (if "if") (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" (( "(") (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" (* "*") (cast_expression "(int *)(param_2[0xb4] + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xb4] + 0x40)" (( "(") (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" (identifier "param_2") ([ "[") (number_literal "0xb4") (] "]")) (+ "+") (number_literal "0x40")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n            if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }\n            else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }\n            *param_7 = bVar3;\n            return;\n          }" ({ "{") (expression_statement "fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (identifier "fVar21") (= "=") (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (* "*") (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (( "(") (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" (identifier "param_6") (+ "+") (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" (* "*") (cast_expression "(int *)(param_2[0xb4] + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xb4] + 0x44)" (( "(") (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" (identifier "param_2") ([ "[") (number_literal "0xb4") (] "]")) (+ "+") (number_literal "0x44")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (if_statement "if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }\n            else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }" (if "if") (parenthesized_expression "(fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0))" (( "(") (binary_expression "fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" (identifier "fVar21") (< "<") (pointer_expression "*(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" (* "*") (cast_expression "(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_s_t_to_left_003a88e4 + -0x51e0)" (( "(") (binary_expression "PTR_s_t_to_left_003a88e4 + -0x51e0" (identifier "PTR_s_t_to_left_003a88e4") (+ "+") (number_literal "-0x51e0")) () ")"))))) () ")")) (compound_statement "{\n              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);\n            }" ({ "{") (expression_statement "bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);" (assignment_expression "bVar3 = (byte)(((int)fVar21 & 0xfU) << 4)" (identifier "bVar3") (= "=") (call_expression "(byte)(((int)fVar21 & 0xfU) << 4)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(((int)fVar21 & 0xfU) << 4)" (( "(") (binary_expression "((int)fVar21 & 0xfU) << 4" (parenthesized_expression "((int)fVar21 & 0xfU)" (( "(") (binary_expression "(int)fVar21 & 0xfU" (cast_expression "(int)fVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "fVar21")) (& "&") (number_literal "0xfU")) () ")")) (<< "<<") (number_literal "4")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }" (else "else") (compound_statement "{\n              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);\n            }" ({ "{") (expression_statement "bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4);" (assignment_expression "bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4)" (identifier "bVar3") (= "=") (call_expression "(byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4)" (( "(") (binary_expression "((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)\n                            << 4" (parenthesized_expression "((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)" (( "(") (binary_expression "(int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU" (cast_expression "(int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0))" (( "(") (binary_expression "fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" (identifier "fVar21") (- "-") (pointer_expression "*(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" (* "*") (cast_expression "(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_s_t_to_left_003a88e4 + -0x51e0)" (( "(") (binary_expression "PTR_s_t_to_left_003a88e4 + -0x51e0" (identifier "PTR_s_t_to_left_003a88e4") (+ "+") (number_literal "-0x51e0")) () ")"))))) () ")"))) (& "&") (number_literal "0xfU")) () ")")) (<< "<<") (number_literal "4")) () ")")))) (; ";")) (} "}")))) (expression_statement "*param_7 = bVar3;" (assignment_expression "*param_7 = bVar3" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (= "=") (identifier "bVar3")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "*param_7 = 0;" (assignment_expression "*param_7 = 0" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (= "=") (number_literal "0")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        if (uVar17 == 0x20) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar4 = 0;\n            bVar6 = 0;\n            bVar3 = 0;\n            bVar8 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 4;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n        if (uVar17 == 0x40) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n        }\n        else if (uVar17 == 0x10) {\n          if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n      }" (else "else") (compound_statement "{\n        if (uVar17 == 0x20) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar4 = 0;\n            bVar6 = 0;\n            bVar3 = 0;\n            bVar8 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 4;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n        if (uVar17 == 0x40) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n        }\n        else if (uVar17 == 0x10) {\n          if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }\n      }" ({ "{") (if_statement "if (uVar17 == 0x20) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar4 = 0;\n            bVar6 = 0;\n            bVar3 = 0;\n            bVar8 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 4;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }" (if "if") (parenthesized_expression "(uVar17 == 0x20)" (( "(") (binary_expression "uVar17 == 0x20" (identifier "uVar17") (== "==") (number_literal "0x20")) () ")")) (compound_statement "{\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar4 = 0;\n            bVar6 = 0;\n            bVar3 = 0;\n            bVar8 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 4;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }" ({ "{") (if_statement "if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }" (if "if") (parenthesized_expression "(param_3[2] == 1)" (( "(") (binary_expression "param_3[2] == 1" (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }" ({ "{") (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" (identifier "uVar17") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((int)param_5 < 1) {\n              return;\n            }" (if "if") (parenthesized_expression "((int)param_5 < 1)" (( "(") (binary_expression "(int)param_5 < 1" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n              return;\n            }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "dVar22 = *(double *)(param_3 + 0x12);" (assignment_expression "dVar22 = *(double *)(param_3 + 0x12)" (identifier "dVar22") (= "=") (pointer_expression "*(double *)(param_3 + 0x12)" (* "*") (cast_expression "(double *)(param_3 + 0x12)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x12)" (( "(") (binary_expression "param_3 + 0x12" (identifier "param_3") (+ "+") (number_literal "0x12")) () ")"))))) (; ";")) (expression_statement "uVar16 = param_3[0x11];" (assignment_expression "uVar16 = param_3[0x11]" (identifier "uVar16") (= "=") (subscript_expression "param_3[0x11]" (identifier "param_3") ([ "[") (number_literal "0x11") (] "]"))) (; ";")) (expression_statement "dVar19 = *(double *)(param_3 + 4);" (assignment_expression "dVar19 = *(double *)(param_3 + 4)" (identifier "dVar19") (= "=") (pointer_expression "*(double *)(param_3 + 4)" (* "*") (cast_expression "(double *)(param_3 + 4)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (do_statement "do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);" (do "do") (compound_statement "{\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              fVar21 = (float)(dVar22 * dVar18 + dVar19);\n              bVar4 = (byte)((uint)fVar21 >> 8);\n              bVar6 = (byte)((uint)fVar21 >> 0x10);\n              bVar3 = (byte)((uint)fVar21 >> 0x18);\n              if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 4;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            }" ({ "{") (expression_statement "dVar18 = 0.0;" (assignment_expression "dVar18 = 0.0" (identifier "dVar18") (= "=") (number_literal "0.0")) (; ";")) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }" (if "if") (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" (( "(") (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" (* "*") (cast_expression "(int *)(param_2[0xb4] + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xb4] + 0x40)" (( "(") (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" (identifier "param_2") ([ "[") (number_literal "0xb4") (] "]")) (+ "+") (number_literal "0x40")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }" ({ "{") (expression_statement "dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (identifier "dVar18") (= "=") (cast_expression "(double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (* "*") (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (( "(") (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" (identifier "param_6") (+ "+") (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" (* "*") (cast_expression "(int *)(param_2[0xb4] + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xb4] + 0x44)" (( "(") (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" (identifier "param_2") ([ "[") (number_literal "0xb4") (] "]")) (+ "+") (number_literal "0x44")) () ")")))) (* "*") (number_literal "4"))) () ")")))))) (; ";")) (} "}"))) (expression_statement "fVar21 = (float)(dVar22 * dVar18 + dVar19);" (assignment_expression "fVar21 = (float)(dVar22 * dVar18 + dVar19)" (identifier "fVar21") (= "=") (cast_expression "(float)(dVar22 * dVar18 + dVar19)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "(dVar22 * dVar18 + dVar19)" (( "(") (binary_expression "dVar22 * dVar18 + dVar19" (binary_expression "dVar22 * dVar18" (identifier "dVar22") (* "*") (identifier "dVar18")) (+ "+") (identifier "dVar19")) () ")")))) (; ";")) (expression_statement "bVar4 = (byte)((uint)fVar21 >> 8);" (assignment_expression "bVar4 = (byte)((uint)fVar21 >> 8)" (identifier "bVar4") (= "=") (call_expression "(byte)((uint)fVar21 >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uint)fVar21 >> 8)" (( "(") (binary_expression "(uint)fVar21 >> 8" (cast_expression "(uint)fVar21" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar21")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "bVar6 = (byte)((uint)fVar21 >> 0x10);" (assignment_expression "bVar6 = (byte)((uint)fVar21 >> 0x10)" (identifier "bVar6") (= "=") (call_expression "(byte)((uint)fVar21 >> 0x10)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uint)fVar21 >> 0x10)" (( "(") (binary_expression "(uint)fVar21 >> 0x10" (cast_expression "(uint)fVar21" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar21")) (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "bVar3 = (byte)((uint)fVar21 >> 0x18);" (assignment_expression "bVar3 = (byte)((uint)fVar21 >> 0x18)" (identifier "bVar3") (= "=") (call_expression "(byte)((uint)fVar21 >> 0x18)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uint)fVar21 >> 0x18)" (( "(") (binary_expression "(uint)fVar21 >> 0x18" (cast_expression "(uint)fVar21" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar21")) (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (if_statement "if (uVar16 == 1) {\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }\n              else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }" (if "if") (parenthesized_expression "(uVar16 == 1)" (( "(") (binary_expression "uVar16 == 1" (identifier "uVar16") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n                param_7[1] = bVar6;\n                *param_7 = bVar3;\n                param_7[2] = bVar4;\n                param_7[3] = SUB41(fVar21,0);\n              }" ({ "{") (expression_statement "param_7[1] = bVar6;" (assignment_expression "param_7[1] = bVar6" (subscript_expression "param_7[1]" (identifier "param_7") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "bVar6")) (; ";")) (expression_statement "*param_7 = bVar3;" (assignment_expression "*param_7 = bVar3" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (= "=") (identifier "bVar3")) (; ";")) (expression_statement "param_7[2] = bVar4;" (assignment_expression "param_7[2] = bVar4" (subscript_expression "param_7[2]" (identifier "param_7") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "bVar4")) (; ";")) (expression_statement "param_7[3] = SUB41(fVar21,0);" (assignment_expression "param_7[3] = SUB41(fVar21,0)" (subscript_expression "param_7[3]" (identifier "param_7") ([ "[") (number_literal "3") (] "]")) (= "=") (call_expression "SUB41(fVar21,0)" (identifier "SUB41") (argument_list "(fVar21,0)" (( "(") (identifier "fVar21") (, ",") (number_literal "0") () ")")))) (; ";")) (} "}")) (else_clause "else {\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }" (else "else") (compound_statement "{\n                *param_7 = SUB41(fVar21,0);\n                param_7[1] = bVar4;\n                param_7[2] = bVar6;\n                param_7[3] = bVar3;\n              }" ({ "{") (expression_statement "*param_7 = SUB41(fVar21,0);" (assignment_expression "*param_7 = SUB41(fVar21,0)" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (= "=") (call_expression "SUB41(fVar21,0)" (identifier "SUB41") (argument_list "(fVar21,0)" (( "(") (identifier "fVar21") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "param_7[1] = bVar4;" (assignment_expression "param_7[1] = bVar4" (subscript_expression "param_7[1]" (identifier "param_7") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "bVar4")) (; ";")) (expression_statement "param_7[2] = bVar6;" (assignment_expression "param_7[2] = bVar6" (subscript_expression "param_7[2]" (identifier "param_7") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "bVar6")) (; ";")) (expression_statement "param_7[3] = bVar3;" (assignment_expression "param_7[3] = bVar3" (subscript_expression "param_7[3]" (identifier "param_7") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "bVar3")) (; ";")) (} "}")))) (expression_statement "uVar17 = uVar17 + 1;" (assignment_expression "uVar17 = uVar17 + 1" (identifier "uVar17") (= "=") (binary_expression "uVar17 + 1" (identifier "uVar17") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_7 = param_7 + param_3[10] + 4;" (assignment_expression "param_7 = param_7 + param_3[10] + 4" (identifier "param_7") (= "=") (binary_expression "param_7 + param_3[10] + 4" (binary_expression "param_7 + param_3[10]" (identifier "param_7") (+ "+") (subscript_expression "param_3[10]" (identifier "param_3") ([ "[") (number_literal "10") (] "]"))) (+ "+") (number_literal "4"))) (; ";")) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" (identifier "param_6") (= "=") (binary_expression "param_6 + param_2[0xb0] * 4" (identifier "param_6") (+ "+") (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" (identifier "param_2") ([ "[") (number_literal "0xb0") (] "]")) (* "*") (number_literal "4")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar17 != param_5)" (( "(") (binary_expression "uVar17 != param_5" (identifier "uVar17") (!= "!=") (identifier "param_5")) () ")")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if ((int)param_5 < 1) {\n            return;\n          }" (if "if") (parenthesized_expression "((int)param_5 < 1)" (( "(") (binary_expression "(int)param_5 < 1" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n            return;\n          }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" (identifier "uVar17") (= "=") (number_literal "0")) (; ";")) (expression_statement "fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);" (assignment_expression "fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" (identifier "fVar21") (= "=") (pointer_expression "*(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" (* "*") (cast_expression "(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_s_t_to_left_003a88e4 + -0x51e0)" (( "(") (binary_expression "PTR_s_t_to_left_003a88e4 + -0x51e0" (identifier "PTR_s_t_to_left_003a88e4") (+ "+") (number_literal "-0x51e0")) () ")"))))) (; ";")) (do_statement "do {\n            bVar4 = 0;\n            bVar6 = 0;\n            bVar3 = 0;\n            bVar8 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 4;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);" (do "do") (compound_statement "{\n            bVar4 = 0;\n            bVar6 = 0;\n            bVar3 = 0;\n            bVar8 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 4;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          }" ({ "{") (expression_statement "bVar4 = 0;" (assignment_expression "bVar4 = 0" (identifier "bVar4") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar6 = 0;" (assignment_expression "bVar6 = 0" (identifier "bVar6") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar3 = 0;" (assignment_expression "bVar3 = 0" (identifier "bVar3") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" (identifier "bVar8") (= "=") (number_literal "0")) (; ";")) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }" (if "if") (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" (( "(") (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" (* "*") (cast_expression "(int *)(param_2[0xb4] + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xb4] + 0x40)" (( "(") (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" (identifier "param_2") ([ "[") (number_literal "0xb4") (] "]")) (+ "+") (number_literal "0x40")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }\n              bVar8 = (byte)(uVar16 >> 0x18);\n              bVar3 = (byte)(uVar16 >> 0x10);\n              bVar6 = (byte)(uVar16 >> 8);\n              bVar4 = (byte)uVar16;\n            }" ({ "{") (expression_statement "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (identifier "fVar20") (= "=") (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (* "*") (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (( "(") (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" (identifier "param_6") (+ "+") (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" (* "*") (cast_expression "(int *)(param_2[0xb4] + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xb4] + 0x44)" (( "(") (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" (identifier "param_2") ([ "[") (number_literal "0xb4") (] "]")) (+ "+") (number_literal "0x44")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (if_statement "if (fVar21 <= fVar20) {\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }\n              else {\n                uVar16 = (uint)fVar20;\n              }" (if "if") (parenthesized_expression "(fVar21 <= fVar20)" (( "(") (binary_expression "fVar21 <= fVar20" (identifier "fVar21") (<= "<=") (identifier "fVar20")) () ")")) (compound_statement "{\n                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;\n              }" ({ "{") (expression_statement "uVar16 = (int)(fVar20 - fVar21) | 0x80000000;" (assignment_expression "uVar16 = (int)(fVar20 - fVar21) | 0x80000000" (identifier "uVar16") (= "=") (binary_expression "(int)(fVar20 - fVar21) | 0x80000000" (cast_expression "(int)(fVar20 - fVar21)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(fVar20 - fVar21)" (( "(") (binary_expression "fVar20 - fVar21" (identifier "fVar20") (- "-") (identifier "fVar21")) () ")"))) (| "|") (number_literal "0x80000000"))) (; ";")) (} "}")) (else_clause "else {\n                uVar16 = (uint)fVar20;\n              }" (else "else") (compound_statement "{\n                uVar16 = (uint)fVar20;\n              }" ({ "{") (expression_statement "uVar16 = (uint)fVar20;" (assignment_expression "uVar16 = (uint)fVar20" (identifier "uVar16") (= "=") (cast_expression "(uint)fVar20" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar20"))) (; ";")) (} "}")))) (expression_statement "bVar8 = (byte)(uVar16 >> 0x18);" (assignment_expression "bVar8 = (byte)(uVar16 >> 0x18)" (identifier "bVar8") (= "=") (call_expression "(byte)(uVar16 >> 0x18)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar16 >> 0x18)" (( "(") (binary_expression "uVar16 >> 0x18" (identifier "uVar16") (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "bVar3 = (byte)(uVar16 >> 0x10);" (assignment_expression "bVar3 = (byte)(uVar16 >> 0x10)" (identifier "bVar3") (= "=") (call_expression "(byte)(uVar16 >> 0x10)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar16 >> 0x10)" (( "(") (binary_expression "uVar16 >> 0x10" (identifier "uVar16") (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "bVar6 = (byte)(uVar16 >> 8);" (assignment_expression "bVar6 = (byte)(uVar16 >> 8)" (identifier "bVar6") (= "=") (call_expression "(byte)(uVar16 >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar16 >> 8)" (( "(") (binary_expression "uVar16 >> 8" (identifier "uVar16") (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "bVar4 = (byte)uVar16;" (assignment_expression "bVar4 = (byte)uVar16" (identifier "bVar4") (= "=") (cast_expression "(byte)uVar16" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar16"))) (; ";")) (} "}"))) (if_statement "if (param_3[0x11] == 1) {\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }\n            else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }" (if "if") (parenthesized_expression "(param_3[0x11] == 1)" (( "(") (binary_expression "param_3[0x11] == 1" (subscript_expression "param_3[0x11]" (identifier "param_3") ([ "[") (number_literal "0x11") (] "]")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n              *param_7 = bVar4;\n              param_7[1] = bVar6;\n              param_7[2] = bVar3;\n              param_7[3] = bVar8;\n            }" ({ "{") (expression_statement "*param_7 = bVar4;" (assignment_expression "*param_7 = bVar4" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (= "=") (identifier "bVar4")) (; ";")) (expression_statement "param_7[1] = bVar6;" (assignment_expression "param_7[1] = bVar6" (subscript_expression "param_7[1]" (identifier "param_7") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "bVar6")) (; ";")) (expression_statement "param_7[2] = bVar3;" (assignment_expression "param_7[2] = bVar3" (subscript_expression "param_7[2]" (identifier "param_7") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "bVar3")) (; ";")) (expression_statement "param_7[3] = bVar8;" (assignment_expression "param_7[3] = bVar8" (subscript_expression "param_7[3]" (identifier "param_7") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "bVar8")) (; ";")) (} "}")) (else_clause "else {\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }" (else "else") (compound_statement "{\n              *param_7 = bVar8;\n              param_7[1] = bVar3;\n              param_7[2] = bVar6;\n              param_7[3] = bVar4;\n            }" ({ "{") (expression_statement "*param_7 = bVar8;" (assignment_expression "*param_7 = bVar8" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (= "=") (identifier "bVar8")) (; ";")) (expression_statement "param_7[1] = bVar3;" (assignment_expression "param_7[1] = bVar3" (subscript_expression "param_7[1]" (identifier "param_7") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "bVar3")) (; ";")) (expression_statement "param_7[2] = bVar6;" (assignment_expression "param_7[2] = bVar6" (subscript_expression "param_7[2]" (identifier "param_7") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "bVar6")) (; ";")) (expression_statement "param_7[3] = bVar4;" (assignment_expression "param_7[3] = bVar4" (subscript_expression "param_7[3]" (identifier "param_7") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "bVar4")) (; ";")) (} "}")))) (expression_statement "uVar17 = uVar17 + 1;" (assignment_expression "uVar17 = uVar17 + 1" (identifier "uVar17") (= "=") (binary_expression "uVar17 + 1" (identifier "uVar17") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_7 = param_7 + param_3[10] + 4;" (assignment_expression "param_7 = param_7 + param_3[10] + 4" (identifier "param_7") (= "=") (binary_expression "param_7 + param_3[10] + 4" (binary_expression "param_7 + param_3[10]" (identifier "param_7") (+ "+") (subscript_expression "param_3[10]" (identifier "param_3") ([ "[") (number_literal "10") (] "]"))) (+ "+") (number_literal "4"))) (; ";")) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" (identifier "param_6") (= "=") (binary_expression "param_6 + param_2[0xb0] * 4" (identifier "param_6") (+ "+") (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" (identifier "param_2") ([ "[") (number_literal "0xb0") (] "]")) (* "*") (number_literal "4")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar17 != param_5)" (( "(") (binary_expression "uVar17 != param_5" (identifier "uVar17") (!= "!=") (identifier "param_5")) () ")")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (uVar17 == 0x40) {\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n        }\n        else if (uVar17 == 0x10) {\n          if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }" (if "if") (parenthesized_expression "(uVar17 == 0x40)" (( "(") (binary_expression "uVar17 == 0x40" (identifier "uVar17") (== "==") (number_literal "0x40")) () ")")) (compound_statement "{\n          if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }\n        }" ({ "{") (if_statement "if (param_3[2] == 1) {\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }" (if "if") (parenthesized_expression "(param_3[2] == 1)" (( "(") (binary_expression "param_3[2] == 1" (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n            uVar17 = 0;\n            if ((int)param_5 < 1) {\n              return;\n            }\n            dVar22 = *(double *)(param_3 + 0x12);\n            uVar16 = param_3[0x11];\n            dVar19 = *(double *)(param_3 + 4);\n            do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);\n            return;\n          }" ({ "{") (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" (identifier "uVar17") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((int)param_5 < 1) {\n              return;\n            }" (if "if") (parenthesized_expression "((int)param_5 < 1)" (( "(") (binary_expression "(int)param_5 < 1" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n              return;\n            }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "dVar22 = *(double *)(param_3 + 0x12);" (assignment_expression "dVar22 = *(double *)(param_3 + 0x12)" (identifier "dVar22") (= "=") (pointer_expression "*(double *)(param_3 + 0x12)" (* "*") (cast_expression "(double *)(param_3 + 0x12)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x12)" (( "(") (binary_expression "param_3 + 0x12" (identifier "param_3") (+ "+") (number_literal "0x12")) () ")"))))) (; ";")) (expression_statement "uVar16 = param_3[0x11];" (assignment_expression "uVar16 = param_3[0x11]" (identifier "uVar16") (= "=") (subscript_expression "param_3[0x11]" (identifier "param_3") ([ "[") (number_literal "0x11") (] "]"))) (; ";")) (expression_statement "dVar19 = *(double *)(param_3 + 4);" (assignment_expression "dVar19 = *(double *)(param_3 + 4)" (identifier "dVar19") (= "=") (pointer_expression "*(double *)(param_3 + 4)" (* "*") (cast_expression "(double *)(param_3 + 4)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (do_statement "do {\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            } while (uVar17 != param_5);" (do "do") (compound_statement "{\n              dVar18 = 0.0;\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }\n              dVar18 = dVar22 * dVar18 + dVar19;\n              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);\n              bVar15 = (byte)((ulonglong)dVar18 >> 8);\n              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);\n              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);\n              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);\n              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);\n              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);\n              if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 8;\n              param_6 = param_6 + param_2[0xb0] * 4;\n            }" ({ "{") (expression_statement "dVar18 = 0.0;" (assignment_expression "dVar18 = 0.0" (identifier "dVar18") (= "=") (number_literal "0.0")) (; ";")) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }" (if "if") (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" (( "(") (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" (* "*") (cast_expression "(int *)(param_2[0xb4] + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xb4] + 0x40)" (( "(") (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" (identifier "param_2") ([ "[") (number_literal "0xb4") (] "]")) (+ "+") (number_literal "0x40")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              }" ({ "{") (expression_statement "dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (identifier "dVar18") (= "=") (cast_expression "(double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (* "*") (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (( "(") (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" (identifier "param_6") (+ "+") (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" (* "*") (cast_expression "(int *)(param_2[0xb4] + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xb4] + 0x44)" (( "(") (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" (identifier "param_2") ([ "[") (number_literal "0xb4") (] "]")) (+ "+") (number_literal "0x44")) () ")")))) (* "*") (number_literal "4"))) () ")")))))) (; ";")) (} "}"))) (expression_statement "dVar18 = dVar22 * dVar18 + dVar19;" (assignment_expression "dVar18 = dVar22 * dVar18 + dVar19" (identifier "dVar18") (= "=") (binary_expression "dVar22 * dVar18 + dVar19" (binary_expression "dVar22 * dVar18" (identifier "dVar22") (* "*") (identifier "dVar18")) (+ "+") (identifier "dVar19"))) (; ";")) (expression_statement "bVar3 = (byte)((ulonglong)dVar18 >> 0x20);" (assignment_expression "bVar3 = (byte)((ulonglong)dVar18 >> 0x20)" (identifier "bVar3") (= "=") (call_expression "(byte)((ulonglong)dVar18 >> 0x20)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)dVar18 >> 0x20)" (( "(") (binary_expression "(ulonglong)dVar18 >> 0x20" (cast_expression "(ulonglong)dVar18" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "dVar18")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "bVar15 = (byte)((ulonglong)dVar18 >> 8);" (assignment_expression "bVar15 = (byte)((ulonglong)dVar18 >> 8)" (identifier "bVar15") (= "=") (call_expression "(byte)((ulonglong)dVar18 >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)dVar18 >> 8)" (( "(") (binary_expression "(ulonglong)dVar18 >> 8" (cast_expression "(ulonglong)dVar18" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "dVar18")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "bVar13 = (byte)((ulonglong)dVar18 >> 0x10);" (assignment_expression "bVar13 = (byte)((ulonglong)dVar18 >> 0x10)" (identifier "bVar13") (= "=") (call_expression "(byte)((ulonglong)dVar18 >> 0x10)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)dVar18 >> 0x10)" (( "(") (binary_expression "(ulonglong)dVar18 >> 0x10" (cast_expression "(ulonglong)dVar18" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "dVar18")) (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "bVar4 = (byte)((ulonglong)dVar18 >> 0x18);" (assignment_expression "bVar4 = (byte)((ulonglong)dVar18 >> 0x18)" (identifier "bVar4") (= "=") (call_expression "(byte)((ulonglong)dVar18 >> 0x18)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)dVar18 >> 0x18)" (( "(") (binary_expression "(ulonglong)dVar18 >> 0x18" (cast_expression "(ulonglong)dVar18" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "dVar18")) (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "bVar10 = (byte)((ulonglong)dVar18 >> 0x28);" (assignment_expression "bVar10 = (byte)((ulonglong)dVar18 >> 0x28)" (identifier "bVar10") (= "=") (call_expression "(byte)((ulonglong)dVar18 >> 0x28)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)dVar18 >> 0x28)" (( "(") (binary_expression "(ulonglong)dVar18 >> 0x28" (cast_expression "(ulonglong)dVar18" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "dVar18")) (>> ">>") (number_literal "0x28")) () ")")))) (; ";")) (expression_statement "bVar8 = (byte)((ulonglong)dVar18 >> 0x30);" (assignment_expression "bVar8 = (byte)((ulonglong)dVar18 >> 0x30)" (identifier "bVar8") (= "=") (call_expression "(byte)((ulonglong)dVar18 >> 0x30)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)dVar18 >> 0x30)" (( "(") (binary_expression "(ulonglong)dVar18 >> 0x30" (cast_expression "(ulonglong)dVar18" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "dVar18")) (>> ">>") (number_literal "0x30")) () ")")))) (; ";")) (expression_statement "bVar6 = (byte)((ulonglong)dVar18 >> 0x38);" (assignment_expression "bVar6 = (byte)((ulonglong)dVar18 >> 0x38)" (identifier "bVar6") (= "=") (call_expression "(byte)((ulonglong)dVar18 >> 0x38)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ulonglong)dVar18 >> 0x38)" (( "(") (binary_expression "(ulonglong)dVar18 >> 0x38" (cast_expression "(ulonglong)dVar18" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "dVar18")) (>> ">>") (number_literal "0x38")) () ")")))) (; ";")) (if_statement "if (uVar16 == 1) {\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }\n              else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }" (if "if") (parenthesized_expression "(uVar16 == 1)" (( "(") (binary_expression "uVar16 == 1" (identifier "uVar16") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n                param_7[1] = bVar8;\n                *param_7 = bVar6;\n                param_7[2] = bVar10;\n                param_7[3] = bVar3;\n                param_7[4] = bVar4;\n                param_7[5] = bVar13;\n                param_7[6] = bVar15;\n                param_7[7] = SUB81(dVar18,0);\n              }" ({ "{") (expression_statement "param_7[1] = bVar8;" (assignment_expression "param_7[1] = bVar8" (subscript_expression "param_7[1]" (identifier "param_7") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "bVar8")) (; ";")) (expression_statement "*param_7 = bVar6;" (assignment_expression "*param_7 = bVar6" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (= "=") (identifier "bVar6")) (; ";")) (expression_statement "param_7[2] = bVar10;" (assignment_expression "param_7[2] = bVar10" (subscript_expression "param_7[2]" (identifier "param_7") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "bVar10")) (; ";")) (expression_statement "param_7[3] = bVar3;" (assignment_expression "param_7[3] = bVar3" (subscript_expression "param_7[3]" (identifier "param_7") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "bVar3")) (; ";")) (expression_statement "param_7[4] = bVar4;" (assignment_expression "param_7[4] = bVar4" (subscript_expression "param_7[4]" (identifier "param_7") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "bVar4")) (; ";")) (expression_statement "param_7[5] = bVar13;" (assignment_expression "param_7[5] = bVar13" (subscript_expression "param_7[5]" (identifier "param_7") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "bVar13")) (; ";")) (expression_statement "param_7[6] = bVar15;" (assignment_expression "param_7[6] = bVar15" (subscript_expression "param_7[6]" (identifier "param_7") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "bVar15")) (; ";")) (expression_statement "param_7[7] = SUB81(dVar18,0);" (assignment_expression "param_7[7] = SUB81(dVar18,0)" (subscript_expression "param_7[7]" (identifier "param_7") ([ "[") (number_literal "7") (] "]")) (= "=") (call_expression "SUB81(dVar18,0)" (identifier "SUB81") (argument_list "(dVar18,0)" (( "(") (identifier "dVar18") (, ",") (number_literal "0") () ")")))) (; ";")) (} "}")) (else_clause "else {\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }" (else "else") (compound_statement "{\n                *param_7 = SUB81(dVar18,0);\n                param_7[1] = bVar15;\n                param_7[2] = bVar13;\n                param_7[3] = bVar4;\n                param_7[4] = bVar3;\n                param_7[5] = bVar10;\n                param_7[6] = bVar8;\n                param_7[7] = bVar6;\n              }" ({ "{") (expression_statement "*param_7 = SUB81(dVar18,0);" (assignment_expression "*param_7 = SUB81(dVar18,0)" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (= "=") (call_expression "SUB81(dVar18,0)" (identifier "SUB81") (argument_list "(dVar18,0)" (( "(") (identifier "dVar18") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "param_7[1] = bVar15;" (assignment_expression "param_7[1] = bVar15" (subscript_expression "param_7[1]" (identifier "param_7") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "bVar15")) (; ";")) (expression_statement "param_7[2] = bVar13;" (assignment_expression "param_7[2] = bVar13" (subscript_expression "param_7[2]" (identifier "param_7") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "bVar13")) (; ";")) (expression_statement "param_7[3] = bVar4;" (assignment_expression "param_7[3] = bVar4" (subscript_expression "param_7[3]" (identifier "param_7") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "bVar4")) (; ";")) (expression_statement "param_7[4] = bVar3;" (assignment_expression "param_7[4] = bVar3" (subscript_expression "param_7[4]" (identifier "param_7") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "bVar3")) (; ";")) (expression_statement "param_7[5] = bVar10;" (assignment_expression "param_7[5] = bVar10" (subscript_expression "param_7[5]" (identifier "param_7") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "bVar10")) (; ";")) (expression_statement "param_7[6] = bVar8;" (assignment_expression "param_7[6] = bVar8" (subscript_expression "param_7[6]" (identifier "param_7") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "bVar8")) (; ";")) (expression_statement "param_7[7] = bVar6;" (assignment_expression "param_7[7] = bVar6" (subscript_expression "param_7[7]" (identifier "param_7") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "bVar6")) (; ";")) (} "}")))) (expression_statement "uVar17 = uVar17 + 1;" (assignment_expression "uVar17 = uVar17 + 1" (identifier "uVar17") (= "=") (binary_expression "uVar17 + 1" (identifier "uVar17") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_7 = param_7 + param_3[10] + 8;" (assignment_expression "param_7 = param_7 + param_3[10] + 8" (identifier "param_7") (= "=") (binary_expression "param_7 + param_3[10] + 8" (binary_expression "param_7 + param_3[10]" (identifier "param_7") (+ "+") (subscript_expression "param_3[10]" (identifier "param_3") ([ "[") (number_literal "10") (] "]"))) (+ "+") (number_literal "8"))) (; ";")) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" (identifier "param_6") (= "=") (binary_expression "param_6 + param_2[0xb0] * 4" (identifier "param_6") (+ "+") (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" (identifier "param_2") ([ "[") (number_literal "0xb0") (] "]")) (* "*") (number_literal "4")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar17 != param_5)" (( "(") (binary_expression "uVar17 != param_5" (identifier "uVar17") (!= "!=") (identifier "param_5")) () ")")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}")) (else_clause "else if (uVar17 == 0x10) {\n          if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }" (else "else") (if_statement "if (uVar17 == 0x10) {\n          if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }" (if "if") (parenthesized_expression "(uVar17 == 0x10)" (( "(") (binary_expression "uVar17 == 0x10" (identifier "uVar17") (== "==") (number_literal "0x10")) () ")")) (compound_statement "{\n          if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }\n          if ((int)param_5 < 1) {\n            return;\n          }\n          uVar17 = 0;\n          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);\n          do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);\n          return;\n        }" ({ "{") (if_statement "if (param_3[2] == 1) {\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }" (if "if") (parenthesized_expression "(param_3[2] == 1)" (( "(") (binary_expression "param_3[2] == 1" (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n            if ((int)param_5 < 1) {\n              return;\n            }\n            uVar17 = 0;\n            uVar16 = 1;\n            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);\n            do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);\n            return;\n          }" ({ "{") (if_statement "if ((int)param_5 < 1) {\n              return;\n            }" (if "if") (parenthesized_expression "((int)param_5 < 1)" (( "(") (binary_expression "(int)param_5 < 1" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n              return;\n            }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" (identifier "uVar17") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar16 = 1;" (assignment_expression "uVar16 = 1" (identifier "uVar16") (= "=") (number_literal "1")) (; ";")) (expression_statement "dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);" (assignment_expression "dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440)" (identifier "dVar19") (= "=") (pointer_expression "*(double *)(PTR_LAB_003a88e0 + 0x1440)" (* "*") (cast_expression "(double *)(PTR_LAB_003a88e0 + 0x1440)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_003a88e0 + 0x1440)" (( "(") (binary_expression "PTR_LAB_003a88e0 + 0x1440" (identifier "PTR_LAB_003a88e0") (+ "+") (number_literal "0x1440")) () ")"))))) (; ";")) (do_statement "do {\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            } while (uVar17 != param_5);" (do "do") (compound_statement "{\n              param_1 = param_1 & 0xffffffff00000000;\n              uVar12 = param_3[0x11];\n              if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }\n              uVar2 = FUN_00155b60(param_1);\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }\n              uVar17 = uVar17 + 1;\n              param_7 = param_7 + param_3[10] + 2;\n              param_6 = param_6 + param_2[0xb0] * 4;\n              dVar19 = extraout_f0_1;\n            }" ({ "{") (expression_statement "param_1 = param_1 & 0xffffffff00000000;" (assignment_expression "param_1 = param_1 & 0xffffffff00000000" (identifier "param_1") (= "=") (binary_expression "param_1 & 0xffffffff00000000" (identifier "param_1") (& "&") (number_literal "0xffffffff00000000"))) (; ";")) (expression_statement "uVar12 = param_3[0x11];" (assignment_expression "uVar12 = param_3[0x11]" (identifier "uVar12") (= "=") (subscript_expression "param_3[0x11]" (identifier "param_3") ([ "[") (number_literal "0x11") (] "]"))) (; ";")) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }" (if "if") (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" (( "(") (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" (* "*") (cast_expression "(int *)(param_2[0xb4] + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xb4] + 0x40)" (( "(") (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" (identifier "param_2") ([ "[") (number_literal "0xb4") (] "]")) (+ "+") (number_literal "0x40")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;\n                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);\n              }" ({ "{") (expression_statement "dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;" (assignment_expression "dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19" (identifier "dVar19") (= "=") (binary_expression "(double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19" (cast_expression "(double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (* "*") (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (( "(") (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" (identifier "param_6") (+ "+") (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" (* "*") (cast_expression "(int *)(param_2[0xb4] + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xb4] + 0x44)" (( "(") (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" (identifier "param_2") ([ "[") (number_literal "0xb4") (] "]")) (+ "+") (number_literal "0x44")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) (* "*") (identifier "dVar19"))) (; ";")) (expression_statement "param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);" (assignment_expression "param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19)" (identifier "param_1") (= "=") (call_expression "CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19)" (identifier "CONCAT44") (argument_list "((int)((ulonglong)dVar19 >> 0x20),(float)dVar19)" (( "(") (cast_expression "(int)((ulonglong)dVar19 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)dVar19 >> 0x20)" (( "(") (binary_expression "(ulonglong)dVar19 >> 0x20" (cast_expression "(ulonglong)dVar19" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "dVar19")) (>> ">>") (number_literal "0x20")) () ")"))) (, ",") (cast_expression "(float)dVar19" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (identifier "dVar19")) () ")")))) (; ";")) (} "}"))) (expression_statement "uVar2 = FUN_00155b60(param_1);" (assignment_expression "uVar2 = FUN_00155b60(param_1)" (identifier "uVar2") (= "=") (call_expression "FUN_00155b60(param_1)" (identifier "FUN_00155b60") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "bVar3 = (byte)((ushort)uVar2 >> 8);" (assignment_expression "bVar3 = (byte)((ushort)uVar2 >> 8)" (identifier "bVar3") (= "=") (call_expression "(byte)((ushort)uVar2 >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ushort)uVar2 >> 8)" (( "(") (binary_expression "(ushort)uVar2 >> 8" (cast_expression "(ushort)uVar2" (( "(") (type_descriptor "ushort" (type_identifier "ushort")) () ")") (identifier "uVar2")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (if_statement "if (uVar12 == uVar16) {\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }\n              else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }" (if "if") (parenthesized_expression "(uVar12 == uVar16)" (( "(") (binary_expression "uVar12 == uVar16" (identifier "uVar12") (== "==") (identifier "uVar16")) () ")")) (compound_statement "{\n                *param_7 = (byte)uVar2;\n                param_7[1] = bVar3;\n              }" ({ "{") (expression_statement "*param_7 = (byte)uVar2;" (assignment_expression "*param_7 = (byte)uVar2" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (= "=") (cast_expression "(byte)uVar2" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar2"))) (; ";")) (expression_statement "param_7[1] = bVar3;" (assignment_expression "param_7[1] = bVar3" (subscript_expression "param_7[1]" (identifier "param_7") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "bVar3")) (; ";")) (} "}")) (else_clause "else {\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }" (else "else") (compound_statement "{\n                *param_7 = bVar3;\n                param_7[1] = (byte)uVar2;\n              }" ({ "{") (expression_statement "*param_7 = bVar3;" (assignment_expression "*param_7 = bVar3" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (= "=") (identifier "bVar3")) (; ";")) (expression_statement "param_7[1] = (byte)uVar2;" (assignment_expression "param_7[1] = (byte)uVar2" (subscript_expression "param_7[1]" (identifier "param_7") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(byte)uVar2" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar2"))) (; ";")) (} "}")))) (expression_statement "uVar17 = uVar17 + 1;" (assignment_expression "uVar17 = uVar17 + 1" (identifier "uVar17") (= "=") (binary_expression "uVar17 + 1" (identifier "uVar17") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_7 = param_7 + param_3[10] + 2;" (assignment_expression "param_7 = param_7 + param_3[10] + 2" (identifier "param_7") (= "=") (binary_expression "param_7 + param_3[10] + 2" (binary_expression "param_7 + param_3[10]" (identifier "param_7") (+ "+") (subscript_expression "param_3[10]" (identifier "param_3") ([ "[") (number_literal "10") (] "]"))) (+ "+") (number_literal "2"))) (; ";")) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" (identifier "param_6") (= "=") (binary_expression "param_6 + param_2[0xb0] * 4" (identifier "param_6") (+ "+") (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" (identifier "param_2") ([ "[") (number_literal "0xb0") (] "]")) (* "*") (number_literal "4")))) (; ";")) (expression_statement "dVar19 = extraout_f0_1;" (assignment_expression "dVar19 = extraout_f0_1" (identifier "dVar19") (= "=") (identifier "extraout_f0_1")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar17 != param_5)" (( "(") (binary_expression "uVar17 != param_5" (identifier "uVar17") (!= "!=") (identifier "param_5")) () ")")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if ((int)param_5 < 1) {\n            return;\n          }" (if "if") (parenthesized_expression "((int)param_5 < 1)" (( "(") (binary_expression "(int)param_5 < 1" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n            return;\n          }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" (identifier "uVar17") (= "=") (number_literal "0")) (; ";")) (expression_statement "fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);" (assignment_expression "fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" (identifier "fVar21") (= "=") (pointer_expression "*(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" (* "*") (cast_expression "(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_s_t_to_left_003a88e4 + -0x51e0)" (( "(") (binary_expression "PTR_s_t_to_left_003a88e4 + -0x51e0" (identifier "PTR_s_t_to_left_003a88e4") (+ "+") (number_literal "-0x51e0")) () ")"))))) (; ";")) (do_statement "do {\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          } while (uVar17 != param_5);" (do "do") (compound_statement "{\n            bVar6 = 0;\n            bVar3 = 0;\n            if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }\n            if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }\n            uVar17 = uVar17 + 1;\n            param_7 = param_7 + param_3[10] + 2;\n            param_6 = param_6 + param_2[0xb0] * 4;\n          }" ({ "{") (expression_statement "bVar6 = 0;" (assignment_expression "bVar6 = 0" (identifier "bVar6") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar3 = 0;" (assignment_expression "bVar3 = 0" (identifier "bVar3") (= "=") (number_literal "0")) (; ";")) (if_statement "if (*(int *)(param_2[0xb4] + 0x40) != 0) {\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }" (if "if") (parenthesized_expression "(*(int *)(param_2[0xb4] + 0x40) != 0)" (( "(") (binary_expression "*(int *)(param_2[0xb4] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xb4] + 0x40)" (* "*") (cast_expression "(int *)(param_2[0xb4] + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xb4] + 0x40)" (( "(") (binary_expression "param_2[0xb4] + 0x40" (subscript_expression "param_2[0xb4]" (identifier "param_2") ([ "[") (number_literal "0xb4") (] "]")) (+ "+") (number_literal "0x40")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);\n              if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }\n              bVar3 = (byte)((ushort)uVar2 >> 8);\n              bVar6 = (byte)uVar2;\n            }" ({ "{") (expression_statement "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);" (assignment_expression "fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (identifier "fVar20") (= "=") (pointer_expression "*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (* "*") (cast_expression "(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4)" (( "(") (binary_expression "param_6 + *(int *)(param_2[0xb4] + 0x44) * 4" (identifier "param_6") (+ "+") (binary_expression "*(int *)(param_2[0xb4] + 0x44) * 4" (pointer_expression "*(int *)(param_2[0xb4] + 0x44)" (* "*") (cast_expression "(int *)(param_2[0xb4] + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xb4] + 0x44)" (( "(") (binary_expression "param_2[0xb4] + 0x44" (subscript_expression "param_2[0xb4]" (identifier "param_2") ([ "[") (number_literal "0xb4") (] "]")) (+ "+") (number_literal "0x44")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (if_statement "if (fVar20 < fVar21) {\n                uVar2 = (undefined2)(int)fVar20;\n              }\n              else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }" (if "if") (parenthesized_expression "(fVar20 < fVar21)" (( "(") (binary_expression "fVar20 < fVar21" (identifier "fVar20") (< "<") (identifier "fVar21")) () ")")) (compound_statement "{\n                uVar2 = (undefined2)(int)fVar20;\n              }" ({ "{") (expression_statement "uVar2 = (undefined2)(int)fVar20;" (assignment_expression "uVar2 = (undefined2)(int)fVar20" (identifier "uVar2") (= "=") (cast_expression "(undefined2)(int)fVar20" (( "(") (type_descriptor "undefined2" (type_identifier "undefined2")) () ")") (cast_expression "(int)fVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "fVar20")))) (; ";")) (} "}")) (else_clause "else {\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }" (else "else") (compound_statement "{\n                uVar2 = (undefined2)(int)(fVar20 - fVar21);\n              }" ({ "{") (expression_statement "uVar2 = (undefined2)(int)(fVar20 - fVar21);" (assignment_expression "uVar2 = (undefined2)(int)(fVar20 - fVar21)" (identifier "uVar2") (= "=") (call_expression "(undefined2)(int)(fVar20 - fVar21)" (call_expression "(undefined2)(int)" (parenthesized_expression "(undefined2)" (( "(") (identifier "undefined2") () ")")) (argument_list "(int)" (( "(") (identifier "int") () ")"))) (argument_list "(fVar20 - fVar21)" (( "(") (binary_expression "fVar20 - fVar21" (identifier "fVar20") (- "-") (identifier "fVar21")) () ")")))) (; ";")) (} "}")))) (expression_statement "bVar3 = (byte)((ushort)uVar2 >> 8);" (assignment_expression "bVar3 = (byte)((ushort)uVar2 >> 8)" (identifier "bVar3") (= "=") (call_expression "(byte)((ushort)uVar2 >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((ushort)uVar2 >> 8)" (( "(") (binary_expression "(ushort)uVar2 >> 8" (cast_expression "(ushort)uVar2" (( "(") (type_descriptor "ushort" (type_identifier "ushort")) () ")") (identifier "uVar2")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "bVar6 = (byte)uVar2;" (assignment_expression "bVar6 = (byte)uVar2" (identifier "bVar6") (= "=") (cast_expression "(byte)uVar2" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar2"))) (; ";")) (} "}"))) (if_statement "if (param_3[0x11] == 1) {\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }\n            else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }" (if "if") (parenthesized_expression "(param_3[0x11] == 1)" (( "(") (binary_expression "param_3[0x11] == 1" (subscript_expression "param_3[0x11]" (identifier "param_3") ([ "[") (number_literal "0x11") (] "]")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n              *param_7 = bVar6;\n              param_7[1] = bVar3;\n            }" ({ "{") (expression_statement "*param_7 = bVar6;" (assignment_expression "*param_7 = bVar6" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (= "=") (identifier "bVar6")) (; ";")) (expression_statement "param_7[1] = bVar3;" (assignment_expression "param_7[1] = bVar3" (subscript_expression "param_7[1]" (identifier "param_7") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "bVar3")) (; ";")) (} "}")) (else_clause "else {\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }" (else "else") (compound_statement "{\n              *param_7 = bVar3;\n              param_7[1] = bVar6;\n            }" ({ "{") (expression_statement "*param_7 = bVar3;" (assignment_expression "*param_7 = bVar3" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (= "=") (identifier "bVar3")) (; ";")) (expression_statement "param_7[1] = bVar6;" (assignment_expression "param_7[1] = bVar6" (subscript_expression "param_7[1]" (identifier "param_7") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "bVar6")) (; ";")) (} "}")))) (expression_statement "uVar17 = uVar17 + 1;" (assignment_expression "uVar17 = uVar17 + 1" (identifier "uVar17") (= "=") (binary_expression "uVar17 + 1" (identifier "uVar17") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_7 = param_7 + param_3[10] + 2;" (assignment_expression "param_7 = param_7 + param_3[10] + 2" (identifier "param_7") (= "=") (binary_expression "param_7 + param_3[10] + 2" (binary_expression "param_7 + param_3[10]" (identifier "param_7") (+ "+") (subscript_expression "param_3[10]" (identifier "param_3") ([ "[") (number_literal "10") (] "]"))) (+ "+") (number_literal "2"))) (; ";")) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" (identifier "param_6") (= "=") (binary_expression "param_6 + param_2[0xb0] * 4" (identifier "param_6") (+ "+") (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" (identifier "param_2") ([ "[") (number_literal "0xb0") (] "]")) (* "*") (number_literal "4")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar17 != param_5)" (( "(") (binary_expression "uVar17 != param_5" (identifier "uVar17") (!= "!=") (identifier "param_5")) () ")")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))))) (} "}")))) (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" (identifier "uVar16") (= "=") (number_literal "0")) (; ";")) (if_statement "if (0 < (int)param_5) {\n        iVar1 = param_2[0xb4];\n        if (*(int *)(iVar1 + 0x40) == 0) goto LAB_001574b0;\n        do {\n          uVar23 = (*(code *)PTR_FUN_003a8a80)\n                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4));\n          while( true ) {\n            uVar12 = (uint)((ulonglong)uVar23 >> 0x20);\n            if (param_3[0x15] == 0) {\n              param_3[0x15] = 8;\n            }\n            if (0 < (int)uVar17) {\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }\n            uVar16 = uVar16 + 1;\n            param_7 = param_7 + param_3[10];\n            param_6 = param_6 + param_2[0xb0] * 4;\n            if (uVar16 == param_5) {\n              return;\n            }\n            iVar1 = param_2[0xb4];\n            uVar17 = *param_3;\n            if (*(int *)(iVar1 + 0x40) != 0) break;\nLAB_001574b0:\n            uVar23 = 0;\n          }\n        } while( true );\n      }" (if "if") (parenthesized_expression "(0 < (int)param_5)" (( "(") (binary_expression "0 < (int)param_5" (number_literal "0") (< "<") (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5"))) () ")")) (compound_statement "{\n        iVar1 = param_2[0xb4];\n        if (*(int *)(iVar1 + 0x40) == 0) goto LAB_001574b0;\n        do {\n          uVar23 = (*(code *)PTR_FUN_003a8a80)\n                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4));\n          while( true ) {\n            uVar12 = (uint)((ulonglong)uVar23 >> 0x20);\n            if (param_3[0x15] == 0) {\n              param_3[0x15] = 8;\n            }\n            if (0 < (int)uVar17) {\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }\n            uVar16 = uVar16 + 1;\n            param_7 = param_7 + param_3[10];\n            param_6 = param_6 + param_2[0xb0] * 4;\n            if (uVar16 == param_5) {\n              return;\n            }\n            iVar1 = param_2[0xb4];\n            uVar17 = *param_3;\n            if (*(int *)(iVar1 + 0x40) != 0) break;\nLAB_001574b0:\n            uVar23 = 0;\n          }\n        } while( true );\n      }" ({ "{") (expression_statement "iVar1 = param_2[0xb4];" (assignment_expression "iVar1 = param_2[0xb4]" (identifier "iVar1") (= "=") (subscript_expression "param_2[0xb4]" (identifier "param_2") ([ "[") (number_literal "0xb4") (] "]"))) (; ";")) (if_statement "if (*(int *)(iVar1 + 0x40) == 0) goto LAB_001574b0;" (if "if") (parenthesized_expression "(*(int *)(iVar1 + 0x40) == 0)" (( "(") (binary_expression "*(int *)(iVar1 + 0x40) == 0" (pointer_expression "*(int *)(iVar1 + 0x40)" (* "*") (cast_expression "(int *)(iVar1 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x40)" (( "(") (binary_expression "iVar1 + 0x40" (identifier "iVar1") (+ "+") (number_literal "0x40")) () ")")))) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001574b0;" (goto "goto") (statement_identifier "LAB_001574b0") (; ";"))) (do_statement "do {\n          uVar23 = (*(code *)PTR_FUN_003a8a80)\n                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4));\n          while( true ) {\n            uVar12 = (uint)((ulonglong)uVar23 >> 0x20);\n            if (param_3[0x15] == 0) {\n              param_3[0x15] = 8;\n            }\n            if (0 < (int)uVar17) {\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }\n            uVar16 = uVar16 + 1;\n            param_7 = param_7 + param_3[10];\n            param_6 = param_6 + param_2[0xb0] * 4;\n            if (uVar16 == param_5) {\n              return;\n            }\n            iVar1 = param_2[0xb4];\n            uVar17 = *param_3;\n            if (*(int *)(iVar1 + 0x40) != 0) break;\nLAB_001574b0:\n            uVar23 = 0;\n          }\n        } while( true );" (do "do") (compound_statement "{\n          uVar23 = (*(code *)PTR_FUN_003a8a80)\n                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4));\n          while( true ) {\n            uVar12 = (uint)((ulonglong)uVar23 >> 0x20);\n            if (param_3[0x15] == 0) {\n              param_3[0x15] = 8;\n            }\n            if (0 < (int)uVar17) {\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }\n            uVar16 = uVar16 + 1;\n            param_7 = param_7 + param_3[10];\n            param_6 = param_6 + param_2[0xb0] * 4;\n            if (uVar16 == param_5) {\n              return;\n            }\n            iVar1 = param_2[0xb4];\n            uVar17 = *param_3;\n            if (*(int *)(iVar1 + 0x40) != 0) break;\nLAB_001574b0:\n            uVar23 = 0;\n          }\n        }" ({ "{") (expression_statement "uVar23 = (*(code *)PTR_FUN_003a8a80)\n                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4));" (assignment_expression "uVar23 = (*(code *)PTR_FUN_003a8a80)\n                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4))" (identifier "uVar23") (= "=") (call_expression "(*(code *)PTR_FUN_003a8a80)\n                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4))" (parenthesized_expression "(*(code *)PTR_FUN_003a8a80)" (( "(") (pointer_expression "*(code *)PTR_FUN_003a8a80" (* "*") (cast_expression "(code *)PTR_FUN_003a8a80" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_003a8a80"))) () ")")) (argument_list "(*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4))" (( "(") (pointer_expression "*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4)" (* "*") (cast_expression "(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + *(int *)(iVar1 + 0x44) * 4)" (( "(") (binary_expression "param_6 + *(int *)(iVar1 + 0x44) * 4" (identifier "param_6") (+ "+") (binary_expression "*(int *)(iVar1 + 0x44) * 4" (pointer_expression "*(int *)(iVar1 + 0x44)" (* "*") (cast_expression "(int *)(iVar1 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x44)" (( "(") (binary_expression "iVar1 + 0x44" (identifier "iVar1") (+ "+") (number_literal "0x44")) () ")")))) (* "*") (number_literal "4"))) () ")")))) () ")")))) (; ";")) (while_statement "while( true ) {\n            uVar12 = (uint)((ulonglong)uVar23 >> 0x20);\n            if (param_3[0x15] == 0) {\n              param_3[0x15] = 8;\n            }\n            if (0 < (int)uVar17) {\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }\n            uVar16 = uVar16 + 1;\n            param_7 = param_7 + param_3[10];\n            param_6 = param_6 + param_2[0xb0] * 4;\n            if (uVar16 == param_5) {\n              return;\n            }\n            iVar1 = param_2[0xb4];\n            uVar17 = *param_3;\n            if (*(int *)(iVar1 + 0x40) != 0) break;\nLAB_001574b0:\n            uVar23 = 0;\n          }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n            uVar12 = (uint)((ulonglong)uVar23 >> 0x20);\n            if (param_3[0x15] == 0) {\n              param_3[0x15] = 8;\n            }\n            if (0 < (int)uVar17) {\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }\n            uVar16 = uVar16 + 1;\n            param_7 = param_7 + param_3[10];\n            param_6 = param_6 + param_2[0xb0] * 4;\n            if (uVar16 == param_5) {\n              return;\n            }\n            iVar1 = param_2[0xb4];\n            uVar17 = *param_3;\n            if (*(int *)(iVar1 + 0x40) != 0) break;\nLAB_001574b0:\n            uVar23 = 0;\n          }" ({ "{") (expression_statement "uVar12 = (uint)((ulonglong)uVar23 >> 0x20);" (assignment_expression "uVar12 = (uint)((ulonglong)uVar23 >> 0x20)" (identifier "uVar12") (= "=") (call_expression "(uint)((ulonglong)uVar23 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((ulonglong)uVar23 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar23 >> 0x20" (cast_expression "(ulonglong)uVar23" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar23")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (if_statement "if (param_3[0x15] == 0) {\n              param_3[0x15] = 8;\n            }" (if "if") (parenthesized_expression "(param_3[0x15] == 0)" (( "(") (binary_expression "param_3[0x15] == 0" (subscript_expression "param_3[0x15]" (identifier "param_3") ([ "[") (number_literal "0x15") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              param_3[0x15] = 8;\n            }" ({ "{") (expression_statement "param_3[0x15] = 8;" (assignment_expression "param_3[0x15] = 8" (subscript_expression "param_3[0x15]" (identifier "param_3") ([ "[") (number_literal "0x15") (] "]")) (= "=") (number_literal "8")) (; ";")) (} "}"))) (if_statement "if (0 < (int)uVar17) {\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }" (if "if") (parenthesized_expression "(0 < (int)uVar17)" (( "(") (binary_expression "0 < (int)uVar17" (number_literal "0") (< "<") (cast_expression "(int)uVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar17"))) () ")")) (compound_statement "{\n              do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);\n            }" ({ "{") (do_statement "do {\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              } while (0 < (int)uVar9);" (do "do") (compound_statement "{\n                uVar11 = param_3[0x15];\n                uVar7 = uVar11;\n                if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }\n                uVar9 = uVar17 - uVar7;\n                uVar14 = uVar11 - uVar7;\n                uVar17 = uVar9;\n                if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }\n                if (uVar11 == 8) {\n                  *param_7 = 0;\n                }\n                param_3[0x15] = uVar14;\n                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);\n                if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }\n                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));\n                if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }\n                *param_7 = bVar3 | *param_7;\n                if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }\n              }" ({ "{") (expression_statement "uVar11 = param_3[0x15];" (assignment_expression "uVar11 = param_3[0x15]" (identifier "uVar11") (= "=") (subscript_expression "param_3[0x15]" (identifier "param_3") ([ "[") (number_literal "0x15") (] "]"))) (; ";")) (expression_statement "uVar7 = uVar11;" (assignment_expression "uVar7 = uVar11" (identifier "uVar7") (= "=") (identifier "uVar11")) (; ";")) (if_statement "if (uVar17 <= uVar11) {\n                  uVar7 = uVar17;\n                }" (if "if") (parenthesized_expression "(uVar17 <= uVar11)" (( "(") (binary_expression "uVar17 <= uVar11" (identifier "uVar17") (<= "<=") (identifier "uVar11")) () ")")) (compound_statement "{\n                  uVar7 = uVar17;\n                }" ({ "{") (expression_statement "uVar7 = uVar17;" (assignment_expression "uVar7 = uVar17" (identifier "uVar7") (= "=") (identifier "uVar17")) (; ";")) (} "}"))) (expression_statement "uVar9 = uVar17 - uVar7;" (assignment_expression "uVar9 = uVar17 - uVar7" (identifier "uVar9") (= "=") (binary_expression "uVar17 - uVar7" (identifier "uVar17") (- "-") (identifier "uVar7"))) (; ";")) (expression_statement "uVar14 = uVar11 - uVar7;" (assignment_expression "uVar14 = uVar11 - uVar7" (identifier "uVar14") (= "=") (binary_expression "uVar11 - uVar7" (identifier "uVar11") (- "-") (identifier "uVar7"))) (; ";")) (expression_statement "uVar17 = uVar9;" (assignment_expression "uVar17 = uVar9" (identifier "uVar17") (= "=") (identifier "uVar9")) (; ";")) (if_statement "if ((int)uVar9 < 0) {\n                  uVar17 = 0;\n                }" (if "if") (parenthesized_expression "((int)uVar9 < 0)" (( "(") (binary_expression "(int)uVar9 < 0" (cast_expression "(int)uVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar9")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n                  uVar17 = 0;\n                }" ({ "{") (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" (identifier "uVar17") (= "=") (number_literal "0")) (; ";")) (} "}"))) (if_statement "if (uVar11 == 8) {\n                  *param_7 = 0;\n                }" (if "if") (parenthesized_expression "(uVar11 == 8)" (( "(") (binary_expression "uVar11 == 8" (identifier "uVar11") (== "==") (number_literal "8")) () ")")) (compound_statement "{\n                  *param_7 = 0;\n                }" ({ "{") (expression_statement "*param_7 = 0;" (assignment_expression "*param_7 = 0" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "param_3[0x15] = uVar14;" (assignment_expression "param_3[0x15] = uVar14" (subscript_expression "param_3[0x15]" (identifier "param_3") ([ "[") (number_literal "0x15") (] "]")) (= "=") (identifier "uVar14")) (; ";")) (expression_statement "uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);" (assignment_expression "uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f)" (identifier "uVar11") (= "=") (binary_expression "(uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f)" (binary_expression "(uVar12 << 1) << (~uVar17 & 0x1f)" (parenthesized_expression "(uVar12 << 1)" (( "(") (binary_expression "uVar12 << 1" (identifier "uVar12") (<< "<<") (number_literal "1")) () ")")) (<< "<<") (parenthesized_expression "(~uVar17 & 0x1f)" (( "(") (binary_expression "~uVar17 & 0x1f" (unary_expression "~uVar17" (~ "~") (identifier "uVar17")) (& "&") (number_literal "0x1f")) () ")"))) (| "|") (binary_expression "(uint)uVar23 >> (uVar17 & 0x1f)" (cast_expression "(uint)uVar23" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar23")) (>> ">>") (parenthesized_expression "(uVar17 & 0x1f)" (( "(") (binary_expression "uVar17 & 0x1f" (identifier "uVar17") (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (if_statement "if ((uVar17 & 0x20) != 0) {\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }" (if "if") (parenthesized_expression "((uVar17 & 0x20) != 0)" (( "(") (binary_expression "(uVar17 & 0x20) != 0" (parenthesized_expression "(uVar17 & 0x20)" (( "(") (binary_expression "uVar17 & 0x20" (identifier "uVar17") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  uVar11 = uVar12 >> (uVar17 & 0x1f);\n                }" ({ "{") (expression_statement "uVar11 = uVar12 >> (uVar17 & 0x1f);" (assignment_expression "uVar11 = uVar12 >> (uVar17 & 0x1f)" (identifier "uVar11") (= "=") (binary_expression "uVar12 >> (uVar17 & 0x1f)" (identifier "uVar12") (>> ">>") (parenthesized_expression "(uVar17 & 0x1f)" (( "(") (binary_expression "uVar17 & 0x1f" (identifier "uVar17") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (} "}"))) (expression_statement "bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));" (assignment_expression "bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f))" (identifier "bVar3") (= "=") (call_expression "(byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f))" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f))" (( "(") (binary_expression "(~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f)" (parenthesized_expression "(~(-1 << (uVar7 & 0x1f)) & uVar11)" (( "(") (binary_expression "~(-1 << (uVar7 & 0x1f)) & uVar11" (unary_expression "~(-1 << (uVar7 & 0x1f))" (~ "~") (parenthesized_expression "(-1 << (uVar7 & 0x1f))" (( "(") (binary_expression "-1 << (uVar7 & 0x1f)" (number_literal "-1") (<< "<<") (parenthesized_expression "(uVar7 & 0x1f)" (( "(") (binary_expression "uVar7 & 0x1f" (identifier "uVar7") (& "&") (number_literal "0x1f")) () ")"))) () ")"))) (& "&") (identifier "uVar11")) () ")")) (<< "<<") (parenthesized_expression "(uVar14 & 0x1f)" (( "(") (binary_expression "uVar14 & 0x1f" (identifier "uVar14") (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (if_statement "if ((uVar14 & 0x20) != 0) {\n                  bVar3 = 0;\n                }" (if "if") (parenthesized_expression "((uVar14 & 0x20) != 0)" (( "(") (binary_expression "(uVar14 & 0x20) != 0" (parenthesized_expression "(uVar14 & 0x20)" (( "(") (binary_expression "uVar14 & 0x20" (identifier "uVar14") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  bVar3 = 0;\n                }" ({ "{") (expression_statement "bVar3 = 0;" (assignment_expression "bVar3 = 0" (identifier "bVar3") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "*param_7 = bVar3 | *param_7;" (assignment_expression "*param_7 = bVar3 | *param_7" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (= "=") (binary_expression "bVar3 | *param_7" (identifier "bVar3") (| "|") (pointer_expression "*param_7" (* "*") (identifier "param_7")))) (; ";")) (if_statement "if (uVar14 == 0) {\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }" (if "if") (parenthesized_expression "(uVar14 == 0)" (( "(") (binary_expression "uVar14 == 0" (identifier "uVar14") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  param_7 = param_7 + 1;\n                  param_3[0x15] = 8;\n                }" ({ "{") (expression_statement "param_7 = param_7 + 1;" (assignment_expression "param_7 = param_7 + 1" (identifier "param_7") (= "=") (binary_expression "param_7 + 1" (identifier "param_7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_3[0x15] = 8;" (assignment_expression "param_3[0x15] = 8" (subscript_expression "param_3[0x15]" (identifier "param_3") ([ "[") (number_literal "0x15") (] "]")) (= "=") (number_literal "8")) (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "(0 < (int)uVar9)" (( "(") (binary_expression "0 < (int)uVar9" (number_literal "0") (< "<") (cast_expression "(int)uVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar9"))) () ")")) (; ";")) (} "}"))) (expression_statement "uVar16 = uVar16 + 1;" (assignment_expression "uVar16 = uVar16 + 1" (identifier "uVar16") (= "=") (binary_expression "uVar16 + 1" (identifier "uVar16") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_7 = param_7 + param_3[10];" (assignment_expression "param_7 = param_7 + param_3[10]" (identifier "param_7") (= "=") (binary_expression "param_7 + param_3[10]" (identifier "param_7") (+ "+") (subscript_expression "param_3[10]" (identifier "param_3") ([ "[") (number_literal "10") (] "]")))) (; ";")) (expression_statement "param_6 = param_6 + param_2[0xb0] * 4;" (assignment_expression "param_6 = param_6 + param_2[0xb0] * 4" (identifier "param_6") (= "=") (binary_expression "param_6 + param_2[0xb0] * 4" (identifier "param_6") (+ "+") (binary_expression "param_2[0xb0] * 4" (subscript_expression "param_2[0xb0]" (identifier "param_2") ([ "[") (number_literal "0xb0") (] "]")) (* "*") (number_literal "4")))) (; ";")) (if_statement "if (uVar16 == param_5) {\n              return;\n            }" (if "if") (parenthesized_expression "(uVar16 == param_5)" (( "(") (binary_expression "uVar16 == param_5" (identifier "uVar16") (== "==") (identifier "param_5")) () ")")) (compound_statement "{\n              return;\n            }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "iVar1 = param_2[0xb4];" (assignment_expression "iVar1 = param_2[0xb4]" (identifier "iVar1") (= "=") (subscript_expression "param_2[0xb4]" (identifier "param_2") ([ "[") (number_literal "0xb4") (] "]"))) (; ";")) (expression_statement "uVar17 = *param_3;" (assignment_expression "uVar17 = *param_3" (identifier "uVar17") (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";")) (if_statement "if (*(int *)(iVar1 + 0x40) != 0) break;" (if "if") (parenthesized_expression "(*(int *)(iVar1 + 0x40) != 0)" (( "(") (binary_expression "*(int *)(iVar1 + 0x40) != 0" (pointer_expression "*(int *)(iVar1 + 0x40)" (* "*") (cast_expression "(int *)(iVar1 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x40)" (( "(") (binary_expression "iVar1 + 0x40" (identifier "iVar1") (+ "+") (number_literal "0x40")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "LAB_001574b0:\n            uVar23 = 0;" (statement_identifier "LAB_001574b0") (: ":") (expression_statement "uVar23 = 0;" (assignment_expression "uVar23 = 0" (identifier "uVar23") (= "=") (number_literal "0")) (; ";"))) (} "}"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (} "}")))) (} "}")) (else_clause "else {\n    (*(code *)PTR_ThrowMagickException_003a8f20)\n              (param_8,PTR_s_courses_003a88ec + -0x7af0,PTR_s_courses_003a88ec + -0x768c,0x9d8,0x1d1\n               ,PTR_s_courses_003a88ec + -0x7ad4,PTR_LAB_003a88e0 + 0x3e28,param_2 + 0xd0);\n  }" (else "else") (compound_statement "{\n    (*(code *)PTR_ThrowMagickException_003a8f20)\n              (param_8,PTR_s_courses_003a88ec + -0x7af0,PTR_s_courses_003a88ec + -0x768c,0x9d8,0x1d1\n               ,PTR_s_courses_003a88ec + -0x7ad4,PTR_LAB_003a88e0 + 0x3e28,param_2 + 0xd0);\n  }" ({ "{") (expression_statement "(*(code *)PTR_ThrowMagickException_003a8f20)\n              (param_8,PTR_s_courses_003a88ec + -0x7af0,PTR_s_courses_003a88ec + -0x768c,0x9d8,0x1d1\n               ,PTR_s_courses_003a88ec + -0x7ad4,PTR_LAB_003a88e0 + 0x3e28,param_2 + 0xd0);" (call_expression "(*(code *)PTR_ThrowMagickException_003a8f20)\n              (param_8,PTR_s_courses_003a88ec + -0x7af0,PTR_s_courses_003a88ec + -0x768c,0x9d8,0x1d1\n               ,PTR_s_courses_003a88ec + -0x7ad4,PTR_LAB_003a88e0 + 0x3e28,param_2 + 0xd0)" (parenthesized_expression "(*(code *)PTR_ThrowMagickException_003a8f20)" (( "(") (pointer_expression "*(code *)PTR_ThrowMagickException_003a8f20" (* "*") (cast_expression "(code *)PTR_ThrowMagickException_003a8f20" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_ThrowMagickException_003a8f20"))) () ")")) (argument_list "(param_8,PTR_s_courses_003a88ec + -0x7af0,PTR_s_courses_003a88ec + -0x768c,0x9d8,0x1d1\n               ,PTR_s_courses_003a88ec + -0x7ad4,PTR_LAB_003a88e0 + 0x3e28,param_2 + 0xd0)" (( "(") (identifier "param_8") (, ",") (binary_expression "PTR_s_courses_003a88ec + -0x7af0" (identifier "PTR_s_courses_003a88ec") (+ "+") (number_literal "-0x7af0")) (, ",") (binary_expression "PTR_s_courses_003a88ec + -0x768c" (identifier "PTR_s_courses_003a88ec") (+ "+") (number_literal "-0x768c")) (, ",") (number_literal "0x9d8") (, ",") (number_literal "0x1d1") (, ",") (binary_expression "PTR_s_courses_003a88ec + -0x7ad4" (identifier "PTR_s_courses_003a88ec") (+ "+") (number_literal "-0x7ad4")) (, ",") (binary_expression "PTR_LAB_003a88e0 + 0x3e28" (identifier "PTR_LAB_003a88e0") (+ "+") (number_literal "0x3e28")) (, ",") (binary_expression "param_2 + 0xd0" (identifier "param_2") (+ "+") (number_literal "0xd0")) () ")"))) (; ";")) (} "}")))) (return_statement "return;" (return "return") (; ";")) (} "}")))

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

void function_1(type_1 *image,type_2 *quantum_info,type_3 var_4,
                       type_4 *p,type_5 *var_11,type_6 *exception)

{
  type_7 var_13;
  type_8 *pPVar2;
  type_9 uVar4;
  type_7 var_12;
  type_9 uVar6;
  type_10 var_29;
  type_9 uVar7;
  type_7 var_14;
  type_11 var_32;
  type_11 var_17;
  type_9 uVar11;
  type_11 uVar12;
  type_9 uVar14;
  type_12 var_22;
  type_11 var_31;
  type_12 var_30;
  type_9 uVar17;
  type_11 var_33;
  type_9 uVar19;
  type_7 *var_16;
  type_7 *var_15;
  type_9 *var_25;
  int var_6;
  type_5 *var_9;
  type_11 var_2;
  float var_7;
  double var_20;
  type_13 uVar29;
  double var_21;
  float var_8;
  double var_19;
  type_14 uVar32;
  
  if (image->storage_class == var_1) {
    var_2 = quantum_info->depth;
    if (var_2 == 8) {
      if (0 < (int)var_11) {
        var_9 = (type_5 *)0x0;
        var_8 = *(float *)(var_3 + -0x51e0);
        do {
          var_6 = (int)(var_4 >> 0x20);
          uVar4 = 0;
          if (image->channel_map[5].traits != var_5) {
            var_7 = *(float *)(var_6 + image->channel_map[5].offset * 4);
            if (var_7 < var_8) {
              uVar4 = (type_9)(int)var_7;
            }
            else {
              uVar4 = (type_9)(int)(var_7 - var_8);
            }
          }
          *(type_9 *)var_4 = uVar4;
          var_9 = var_9 + 1;
          var_4 =
               var_10(var_6 + image->number_channels * 4,
                        (type_9 *)var_4 + quantum_info->pad + 1);
        } while (var_9 != var_11);
      }
    }
    else {
      if (var_2 < 9) {
        if (var_2 == 1) {
          if (7 < (int)var_11) {
            var_8 = *(float *)(var_3 + -0x51e0);
            var_16 = (type_7 *)(var_4._4_4_ + ((type_11)(var_11 + -8) >> 3) + 1);
            do {
              var_6 = (int)(var_4 >> 0x20);
              var_15 = (type_7 *)var_4;
              var_12 = 0;
              if (image->channel_map[5].traits != var_5) {
                var_7 = *(float *)(var_6 + image->channel_map[5].offset * 4);
                if (var_8 <= var_7) {
                  var_7 = var_7 - var_8;
                }
                var_12 = (type_7)(((int)var_7 & 0xffU) << 7);
              }
              *var_15 = var_12;
              var_6 = var_6 + image->number_channels * 4;
              if (image->channel_map[5].traits != var_5) {
                var_7 = *(float *)(var_6 + image->channel_map[5].offset * 4);
                if (var_8 <= var_7) {
                  var_7 = var_7 - var_8;
                }
                var_12 = var_12 | (type_7)(((int)var_7 & 1U) << 6);
              }
              *var_15 = var_12;
              var_6 = var_6 + image->number_channels * 4;
              var_14 = var_12;
              if (image->channel_map[5].traits != var_5) {
                var_7 = *(float *)(var_6 + image->channel_map[5].offset * 4);
                if (var_8 <= var_7) {
                  var_7 = var_7 - var_8;
                }
                var_13 = (type_7)(((int)var_7 & 1U) << 5);
                var_14 = var_12 | var_13;
                *var_15 = var_12 | var_13;
              }
              var_6 = var_6 + image->number_channels * 4;
              if (image->channel_map[5].traits != var_5) {
                var_7 = *(float *)(var_6 + image->channel_map[5].offset * 4);
                if (var_8 <= var_7) {
                  var_7 = var_7 - var_8;
                }
                var_14 = var_14 | (type_7)(((int)var_7 & 1U) << 4);
              }
              *var_15 = var_14;
              var_6 = var_6 + image->number_channels * 4;
              var_12 = var_14;
              if (image->channel_map[5].traits != var_5) {
                var_7 = *(float *)(var_6 + image->channel_map[5].offset * 4);
                if (var_8 <= var_7) {
                  var_7 = var_7 - var_8;
                }
                var_13 = (type_7)(((int)var_7 & 1U) << 3);
                var_12 = var_14 | var_13;
                *var_15 = var_14 | var_13;
              }
              var_6 = var_6 + image->number_channels * 4;
              if (image->channel_map[5].traits != var_5) {
                var_7 = *(float *)(var_6 + image->channel_map[5].offset * 4);
                if (var_8 <= var_7) {
                  var_7 = var_7 - var_8;
                }
                var_12 = var_12 | (type_7)(((int)var_7 & 1U) << 2);
              }
              *var_15 = var_12;
              var_6 = var_6 + image->number_channels * 4;
              var_14 = var_12;
              if (image->channel_map[5].traits != var_5) {
                var_7 = *(float *)(var_6 + image->channel_map[5].offset * 4);
                if (var_8 <= var_7) {
                  var_7 = var_7 - var_8;
                }
                var_13 = (type_7)(((int)var_7 & 1U) << 1);
                var_14 = var_12 | var_13;
                *var_15 = var_12 | var_13;
              }
              var_6 = var_6 + image->number_channels * 4;
              if (image->channel_map[5].traits != var_5) {
                var_7 = *(float *)(var_6 + image->channel_map[5].offset * 4);
                if (var_7 < var_8) {
                  var_12 = (type_7)(int)var_7;
                }
                else {
                  var_12 = (type_7)(int)(var_7 - var_8);
                }
                var_14 = var_14 | var_12 & 1;
              }
              *var_15 = var_14;
              var_4 = var_10(var_6 + image->number_channels * 4,var_15 + 1);
            } while (var_15 + 1 != var_16);
          }
          var_6 = (int)(var_4 >> 0x20);
          if (((type_11)var_11 & 7) == 0) {
            return;
          }
          *(type_9 *)var_4 = 0;
          if (((type_11)var_11 & 7) == 0) {
            return;
          }
          var_17 = 0;
          var_2 = 7;
          var_8 = *(float *)(var_3 + -0x51e0);
          do {
            if (image->channel_map[5].traits != var_5) {
              var_7 = *(float *)(var_6 + image->channel_map[5].offset * 4);
              if (var_8 <= var_7) {
                var_7 = var_7 - var_8;
              }
              var_17 = ((int)var_7 & 1U) << (var_2 & 0x1f) & 0xff | var_17;
            }
            *(type_9 *)var_4 = (char)var_17;
            var_2 = var_2 - 1;
            var_6 = var_6 + image->number_channels * 4;
          } while (var_2 != (~(type_11)var_11 & 7));
          return;
        }
        if (var_2 == 4) {
          if (0 < (int)(var_11 + -1)) {
            var_8 = *(float *)(var_3 + -0x51e0);
            var_16 = (type_7 *)(var_4._4_4_ + ((type_11)(var_11 + -2) >> 1) + 1);
            do {
              var_6 = (int)(var_4 >> 0x20);
              var_15 = (type_7 *)var_4;
              if (image->channel_map[5].traits == var_5) {
                var_12 = 0;
              }
              else {
                var_7 = *(float *)(var_6 + image->channel_map[5].offset * 4);
                if (var_8 <= var_7) {
                  var_7 = var_7 - var_8;
                }
                var_12 = (type_7)(((int)var_7 & 0xffU) << 4);
              }
              *var_15 = var_12;
              var_6 = var_6 + image->number_channels * 4;
              if (image->channel_map[5].traits != var_5) {
                var_7 = *(float *)(var_6 + image->channel_map[5].offset * 4);
                if (var_7 < var_8) {
                  var_14 = (type_7)(int)var_7;
                }
                else {
                  var_14 = (type_7)(int)(var_7 - var_8);
                }
                var_12 = var_12 | var_14 & 0xf;
              }
              *var_15 = var_12;
              var_4 = var_10(var_6 + image->number_channels * 4,var_15 + 1);
            } while (var_15 + 1 != var_16);
          }
          if (((type_11)var_11 & 1) == 0) {
            return;
          }
          if (image->channel_map[5].traits != var_5) {
            var_8 = *(float *)((int)(var_4 >> 0x20) + image->channel_map[5].offset * 4);
            if (var_8 < *(float *)(var_3 + -0x51e0)) {
              uVar4 = (type_9)(((int)var_8 & 0xfU) << 4);
            }
            else {
              uVar4 = (type_9)
                      (((int)(var_8 - *(float *)(var_3 + -0x51e0)) & 0xfU) << 4)
              ;
            }
            *(type_9 *)var_4 = uVar4;
            return;
          }
          *(type_9 *)var_4 = 0;
          return;
        }
      }
      else {
        if (var_2 == 0x20) {
          if (quantum_info->format == var_18) {
            var_9 = (type_5 *)0x0;
            if ((int)var_11 < 1) {
              return;
            }
            var_19 = (quantum_info->state).inverse_scale;
            var_22 = quantum_info->endian;
            var_21 = quantum_info->minimum;
            do {
              var_6 = (int)(var_4 >> 0x20);
              var_25 = (type_9 *)var_4;
              var_20 = 0.0;
              if (image->channel_map[5].traits != var_5) {
                var_20 = (double)*(float *)(var_6 + image->channel_map[5].offset * 4);
              }
              var_8 = (float)(var_19 * var_20 + var_21);
              uVar7 = (type_9)((type_11)var_8 >> 8);
              uVar6 = (type_9)((type_11)var_8 >> 0x10);
              uVar4 = (type_9)((type_11)var_8 >> 0x18);
              if (var_22 == var_23) {
                var_25[1] = uVar6;
                *var_25 = uVar4;
                var_25[2] = uVar7;
                var_25[3] = var_24(var_8,0);
              }
              else {
                *var_25 = var_24(var_8,0);
                var_25[1] = uVar7;
                var_25[2] = uVar6;
                var_25[3] = uVar4;
              }
              var_9 = var_9 + 1;
              var_4 =
                   var_10(var_6 + image->number_channels * 4,var_25 + quantum_info->pad + 4);
            } while (var_9 != var_11);
            return;
          }
          if ((int)var_11 < 1) {
            return;
          }
          var_9 = (type_5 *)0x0;
          var_8 = *(float *)(var_3 + -0x51e0);
          do {
            var_6 = (int)(var_4 >> 0x20);
            var_25 = (type_9 *)var_4;
            uVar7 = 0;
            uVar6 = 0;
            uVar4 = 0;
            uVar11 = 0;
            if (image->channel_map[5].traits != var_5) {
              var_7 = *(float *)(var_6 + image->channel_map[5].offset * 4);
              if (var_8 <= var_7) {
                var_2 = (int)(var_7 - var_8) | 0x80000000;
              }
              else {
                var_2 = (type_11)var_7;
              }
              uVar11 = (type_9)(var_2 >> 0x18);
              uVar4 = (type_9)(var_2 >> 0x10);
              uVar6 = (type_9)(var_2 >> 8);
              uVar7 = (type_9)var_2;
            }
            if (quantum_info->endian == var_23) {
              *var_25 = uVar7;
              var_25[1] = uVar6;
              var_25[2] = uVar4;
              var_25[3] = uVar11;
            }
            else {
              *var_25 = uVar11;
              var_25[1] = uVar4;
              var_25[2] = uVar6;
              var_25[3] = uVar7;
            }
            var_9 = var_9 + 1;
            var_4 =
                 var_10(var_6 + image->number_channels * 4,var_25 + quantum_info->pad + 4);
          } while (var_9 != var_11);
          return;
        }
        if (var_2 == 0x40) {
          if (quantum_info->format == var_18) {
            var_9 = (type_5 *)0x0;
            if ((int)var_11 < 1) {
              return;
            }
            var_19 = (quantum_info->state).inverse_scale;
            var_22 = quantum_info->endian;
            var_21 = quantum_info->minimum;
            do {
              var_6 = (int)(var_4 >> 0x20);
              var_25 = (type_9 *)var_4;
              var_20 = 0.0;
              if (image->channel_map[5].traits != var_5) {
                var_20 = (double)*(float *)(var_6 + image->channel_map[5].offset * 4);
              }
              var_20 = var_19 * var_20 + var_21;
              uVar4 = (type_9)((type_15)var_20 >> 0x20);
              uVar19 = (type_9)((type_15)var_20 >> 8);
              uVar17 = (type_9)((type_15)var_20 >> 0x10);
              uVar7 = (type_9)((type_15)var_20 >> 0x18);
              uVar14 = (type_9)((type_15)var_20 >> 0x28);
              uVar11 = (type_9)((type_15)var_20 >> 0x30);
              uVar6 = (type_9)((type_15)var_20 >> 0x38);
              if (var_22 == var_23) {
                var_25[1] = uVar11;
                *var_25 = uVar6;
                var_25[2] = uVar14;
                var_25[3] = uVar4;
                var_25[4] = uVar7;
                var_25[5] = uVar17;
                var_25[6] = uVar19;
                var_25[7] = var_26(var_20,0);
              }
              else {
                *var_25 = var_26(var_20,0);
                var_25[1] = uVar19;
                var_25[2] = uVar17;
                var_25[3] = uVar7;
                var_25[4] = uVar4;
                var_25[5] = uVar14;
                var_25[6] = uVar11;
                var_25[7] = uVar6;
              }
              var_9 = var_9 + 1;
              var_4 =
                   var_10(var_6 + image->number_channels * 4,var_25 + quantum_info->pad + 8);
            } while (var_9 != var_11);
            return;
          }
        }
        else if (var_2 == 0x10) {
          if (quantum_info->format == var_18) {
            if ((int)var_11 < 1) {
              return;
            }
            var_9 = (type_5 *)0x0;
            var_22 = var_23;
            var_21 = *(double *)(var_27 + 0x1440);
            do {
              var_6 = (int)(var_4 >> 0x20);
              var_25 = (type_9 *)var_4;
              var_8 = 0.0;
              var_30 = quantum_info->endian;
              if (image->channel_map[5].traits != var_5) {
                var_8 = (float)((double)*(float *)(var_6 + image->channel_map[5].offset * 4) *
                                var_21);
              }
              var_29 = var_28(var_8);
              uVar4 = (type_9)(var_29 >> 8);
              if (var_30 == var_22) {
                *var_25 = (char)var_29;
                var_25[1] = uVar4;
              }
              else {
                *var_25 = uVar4;
                var_25[1] = (char)var_29;
              }
              var_9 = var_9 + 1;
              var_4 =
                   var_10(var_6 + image->number_channels * 4,var_25 + quantum_info->pad + 2);
            } while (var_9 != var_11);
            return;
          }
          if ((int)var_11 < 1) {
            return;
          }
          var_9 = (type_5 *)0x0;
          var_8 = *(float *)(var_3 + -0x51e0);
          do {
            var_6 = (int)(var_4 >> 0x20);
            var_25 = (type_9 *)var_4;
            uVar6 = 0;
            uVar4 = 0;
            if (image->channel_map[5].traits != var_5) {
              var_7 = *(float *)(var_6 + image->channel_map[5].offset * 4);
              if (var_7 < var_8) {
                uVar29 = (type_13)(int)var_7;
              }
              else {
                uVar29 = (type_13)(int)(var_7 - var_8);
              }
              uVar4 = (type_9)((type_10)uVar29 >> 8);
              uVar6 = (type_9)uVar29;
            }
            if (quantum_info->endian == var_23) {
              *var_25 = uVar6;
              var_25[1] = uVar4;
            }
            else {
              *var_25 = uVar4;
              var_25[1] = uVar6;
            }
            var_9 = var_9 + 1;
            var_4 =
                 var_10(var_6 + image->number_channels * 4,var_25 + quantum_info->pad + 2);
          } while (var_9 != var_11);
          return;
        }
      }
      var_9 = (type_5 *)0x0;
      if (0 < (int)var_11) {
        pPVar2 = image->channel_map;
        if (pPVar2[5].traits == var_5) goto LAB_001574b0;
        do {
          uVar32 = (*(type_16 *)PTR___fixunssfdi_003a8a80)
                             (*(type_17 *)((int)(var_4 >> 0x20) + pPVar2[5].offset * 4));
          while( true ) {
            var_17 = (type_11)((type_15)uVar32 >> 0x20);
            var_16 = (type_7 *)var_4;
            if ((quantum_info->state).bits == 0) {
              (quantum_info->state).bits = 8;
            }
            if (0 < (int)var_2) {
              do {
                var_31 = (quantum_info->state).bits;
                var_32 = var_31;
                if (var_2 <= var_31) {
                  var_32 = var_2;
                }
                uVar12 = var_2 - var_32;
                var_33 = var_31 - var_32;
                var_2 = uVar12;
                if ((int)uVar12 < 0) {
                  var_2 = 0;
                }
                if (var_31 == 8) {
                  *var_16 = 0;
                }
                (quantum_info->state).bits = var_33;
                var_31 = (var_17 << 1) << (~var_2 & 0x1f) | (type_11)uVar32 >> (var_2 & 0x1f);
                if ((var_2 & 0x20) != 0) {
                  var_31 = var_17 >> (var_2 & 0x1f);
                }
                var_12 = (type_7)((~(-1 << (var_32 & 0x1f)) & var_31) << (var_33 & 0x1f));
                if ((var_33 & 0x20) != 0) {
                  var_12 = 0;
                }
                *var_16 = var_12 | *var_16;
                if (var_33 == 0) {
                  var_16 = var_16 + 1;
                  (quantum_info->state).bits = 8;
                }
              } while (0 < (int)uVar12);
            }
            var_9 = var_9 + 1;
            var_4 =
                 var_10((int)(var_4 >> 0x20) + image->number_channels * 4,
                          var_16 + quantum_info->pad);
            if (var_9 == var_11) {
              return;
            }
            pPVar2 = image->channel_map;
            var_2 = quantum_info->depth;
            if (pPVar2[5].traits != var_5) break;
LAB_001574b0:
            uVar32 = 0;
          }
        } while( true );
      }
    }
  }
  else {
    (*(type_16 *)PTR_ThrowMagickException_003a8f20)
              (exception,var_34 + -0x7af0,var_34 + -0x768c,0x9d8,
               0x1d1,var_34 + -0x7ad4,var_27 + 0x3e28,image->filename);
  }
  return;
}


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

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

{
  int iVar1;
  byte bVar3;
  undefined2 uVar2;
  byte bVar4;
  byte *pbVar5;
  byte bVar6;
  uint uVar7;
  byte bVar8;
  uint uVar9;
  byte bVar10;
  uint uVar11;
  uint uVar12;
  byte bVar13;
  uint uVar14;
  byte bVar15;
  uint uVar16;
  uint uVar17;
  float fVar20;
  double dVar18;
  double dVar19;
  double extraout_f0_1;
  float fVar21;
  double dVar22;
  undefined8 uVar23;
  
  if (*param_2 == 2) {
    uVar17 = *param_3;
    if (uVar17 == 8) {
      if (0 < (int)param_5) {
        uVar17 = 0;
        fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);
        do {
          bVar3 = 0;
          if (*(int *)(param_2[0xb4] + 0x40) != 0) {
            fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);
            if (fVar20 < fVar21) {
              bVar3 = (byte)(int)fVar20;
            }
            else {
              bVar3 = (byte)(int)(fVar20 - fVar21);
            }
          }
          *param_7 = bVar3;
          uVar17 = uVar17 + 1;
          param_6 = param_6 + param_2[0xb0] * 4;
          param_7 = param_7 + param_3[10] + 1;
        } while (uVar17 != param_5);
      }
    }
    else {
      if (uVar17 < 9) {
        if (uVar17 == 1) {
          if (7 < (int)param_5) {
            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);
            pbVar5 = param_7 + (param_5 - 8 >> 3) + 1;
            do {
              bVar3 = 0;
              if (*(int *)(param_2[0xb4] + 0x40) != 0) {
                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);
                if (fVar21 <= fVar20) {
                  fVar20 = fVar20 - fVar21;
                }
                bVar3 = (byte)(((int)fVar20 & 0xffU) << 7);
              }
              *param_7 = bVar3;
              param_6 = param_6 + param_2[0xb0] * 4;
              if (*(int *)(param_2[0xb4] + 0x40) != 0) {
                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);
                if (fVar21 <= fVar20) {
                  fVar20 = fVar20 - fVar21;
                }
                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 6);
              }
              *param_7 = bVar3;
              param_6 = param_6 + param_2[0xb0] * 4;
              bVar6 = bVar3;
              if (*(int *)(param_2[0xb4] + 0x40) != 0) {
                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);
                if (fVar21 <= fVar20) {
                  fVar20 = fVar20 - fVar21;
                }
                bVar4 = (byte)(((int)fVar20 & 1U) << 5);
                bVar6 = bVar3 | bVar4;
                *param_7 = bVar3 | bVar4;
              }
              param_6 = param_6 + param_2[0xb0] * 4;
              if (*(int *)(param_2[0xb4] + 0x40) != 0) {
                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);
                if (fVar21 <= fVar20) {
                  fVar20 = fVar20 - fVar21;
                }
                bVar6 = bVar6 | (byte)(((int)fVar20 & 1U) << 4);
              }
              *param_7 = bVar6;
              param_6 = param_6 + param_2[0xb0] * 4;
              bVar3 = bVar6;
              if (*(int *)(param_2[0xb4] + 0x40) != 0) {
                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);
                if (fVar21 <= fVar20) {
                  fVar20 = fVar20 - fVar21;
                }
                bVar4 = (byte)(((int)fVar20 & 1U) << 3);
                bVar3 = bVar6 | bVar4;
                *param_7 = bVar6 | bVar4;
              }
              param_6 = param_6 + param_2[0xb0] * 4;
              if (*(int *)(param_2[0xb4] + 0x40) != 0) {
                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);
                if (fVar21 <= fVar20) {
                  fVar20 = fVar20 - fVar21;
                }
                bVar3 = bVar3 | (byte)(((int)fVar20 & 1U) << 2);
              }
              *param_7 = bVar3;
              param_6 = param_6 + param_2[0xb0] * 4;
              bVar6 = bVar3;
              if (*(int *)(param_2[0xb4] + 0x40) != 0) {
                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);
                if (fVar21 <= fVar20) {
                  fVar20 = fVar20 - fVar21;
                }
                bVar4 = (byte)(((int)fVar20 & 1U) << 1);
                bVar6 = bVar3 | bVar4;
                *param_7 = bVar3 | bVar4;
              }
              param_6 = param_6 + param_2[0xb0] * 4;
              if (*(int *)(param_2[0xb4] + 0x40) != 0) {
                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);
                if (fVar20 < fVar21) {
                  bVar3 = (byte)(int)fVar20;
                }
                else {
                  bVar3 = (byte)(int)(fVar20 - fVar21);
                }
                bVar6 = bVar6 | bVar3 & 1;
              }
              *param_7 = bVar6;
              param_7 = param_7 + 1;
              param_6 = param_6 + param_2[0xb0] * 4;
            } while (param_7 != pbVar5);
          }
          if ((param_5 & 7) == 0) {
            return;
          }
          *param_7 = 0;
          if ((param_5 & 7) == 0) {
            return;
          }
          uVar16 = 0;
          uVar17 = 7;
          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);
          do {
            if (*(int *)(param_2[0xb4] + 0x40) != 0) {
              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);
              if (fVar21 <= fVar20) {
                fVar20 = fVar20 - fVar21;
              }
              uVar16 = ((int)fVar20 & 1U) << (uVar17 & 0x1f) & 0xff | uVar16;
            }
            *param_7 = (byte)uVar16;
            uVar17 = uVar17 - 1;
            param_6 = param_6 + param_2[0xb0] * 4;
          } while (uVar17 != (~param_5 & 7));
          return;
        }
        if (uVar17 == 4) {
          if (0 < (int)(param_5 - 1)) {
            fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);
            pbVar5 = param_7 + (param_5 - 2 >> 1) + 1;
            do {
              if (*(int *)(param_2[0xb4] + 0x40) == 0) {
                bVar3 = 0;
              }
              else {
                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);
                if (fVar21 <= fVar20) {
                  fVar20 = fVar20 - fVar21;
                }
                bVar3 = (byte)(((int)fVar20 & 0xffU) << 4);
              }
              *param_7 = bVar3;
              param_6 = param_6 + param_2[0xb0] * 4;
              if (*(int *)(param_2[0xb4] + 0x40) != 0) {
                fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);
                if (fVar20 < fVar21) {
                  bVar6 = (byte)(int)fVar20;
                }
                else {
                  bVar6 = (byte)(int)(fVar20 - fVar21);
                }
                bVar3 = bVar3 | bVar6 & 0xf;
              }
              *param_7 = bVar3;
              param_7 = param_7 + 1;
              param_6 = param_6 + param_2[0xb0] * 4;
            } while (param_7 != pbVar5);
          }
          if ((param_5 & 1) == 0) {
            return;
          }
          if (*(int *)(param_2[0xb4] + 0x40) != 0) {
            fVar21 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);
            if (fVar21 < *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) {
              bVar3 = (byte)(((int)fVar21 & 0xfU) << 4);
            }
            else {
              bVar3 = (byte)(((int)(fVar21 - *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0)) & 0xfU)
                            << 4);
            }
            *param_7 = bVar3;
            return;
          }
          *param_7 = 0;
          return;
        }
      }
      else {
        if (uVar17 == 0x20) {
          if (param_3[2] == 1) {
            uVar17 = 0;
            if ((int)param_5 < 1) {
              return;
            }
            dVar22 = *(double *)(param_3 + 0x12);
            uVar16 = param_3[0x11];
            dVar19 = *(double *)(param_3 + 4);
            do {
              dVar18 = 0.0;
              if (*(int *)(param_2[0xb4] + 0x40) != 0) {
                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);
              }
              fVar21 = (float)(dVar22 * dVar18 + dVar19);
              bVar4 = (byte)((uint)fVar21 >> 8);
              bVar6 = (byte)((uint)fVar21 >> 0x10);
              bVar3 = (byte)((uint)fVar21 >> 0x18);
              if (uVar16 == 1) {
                param_7[1] = bVar6;
                *param_7 = bVar3;
                param_7[2] = bVar4;
                param_7[3] = SUB41(fVar21,0);
              }
              else {
                *param_7 = SUB41(fVar21,0);
                param_7[1] = bVar4;
                param_7[2] = bVar6;
                param_7[3] = bVar3;
              }
              uVar17 = uVar17 + 1;
              param_7 = param_7 + param_3[10] + 4;
              param_6 = param_6 + param_2[0xb0] * 4;
            } while (uVar17 != param_5);
            return;
          }
          if ((int)param_5 < 1) {
            return;
          }
          uVar17 = 0;
          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);
          do {
            bVar4 = 0;
            bVar6 = 0;
            bVar3 = 0;
            bVar8 = 0;
            if (*(int *)(param_2[0xb4] + 0x40) != 0) {
              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);
              if (fVar21 <= fVar20) {
                uVar16 = (int)(fVar20 - fVar21) | 0x80000000;
              }
              else {
                uVar16 = (uint)fVar20;
              }
              bVar8 = (byte)(uVar16 >> 0x18);
              bVar3 = (byte)(uVar16 >> 0x10);
              bVar6 = (byte)(uVar16 >> 8);
              bVar4 = (byte)uVar16;
            }
            if (param_3[0x11] == 1) {
              *param_7 = bVar4;
              param_7[1] = bVar6;
              param_7[2] = bVar3;
              param_7[3] = bVar8;
            }
            else {
              *param_7 = bVar8;
              param_7[1] = bVar3;
              param_7[2] = bVar6;
              param_7[3] = bVar4;
            }
            uVar17 = uVar17 + 1;
            param_7 = param_7 + param_3[10] + 4;
            param_6 = param_6 + param_2[0xb0] * 4;
          } while (uVar17 != param_5);
          return;
        }
        if (uVar17 == 0x40) {
          if (param_3[2] == 1) {
            uVar17 = 0;
            if ((int)param_5 < 1) {
              return;
            }
            dVar22 = *(double *)(param_3 + 0x12);
            uVar16 = param_3[0x11];
            dVar19 = *(double *)(param_3 + 4);
            do {
              dVar18 = 0.0;
              if (*(int *)(param_2[0xb4] + 0x40) != 0) {
                dVar18 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);
              }
              dVar18 = dVar22 * dVar18 + dVar19;
              bVar3 = (byte)((ulonglong)dVar18 >> 0x20);
              bVar15 = (byte)((ulonglong)dVar18 >> 8);
              bVar13 = (byte)((ulonglong)dVar18 >> 0x10);
              bVar4 = (byte)((ulonglong)dVar18 >> 0x18);
              bVar10 = (byte)((ulonglong)dVar18 >> 0x28);
              bVar8 = (byte)((ulonglong)dVar18 >> 0x30);
              bVar6 = (byte)((ulonglong)dVar18 >> 0x38);
              if (uVar16 == 1) {
                param_7[1] = bVar8;
                *param_7 = bVar6;
                param_7[2] = bVar10;
                param_7[3] = bVar3;
                param_7[4] = bVar4;
                param_7[5] = bVar13;
                param_7[6] = bVar15;
                param_7[7] = SUB81(dVar18,0);
              }
              else {
                *param_7 = SUB81(dVar18,0);
                param_7[1] = bVar15;
                param_7[2] = bVar13;
                param_7[3] = bVar4;
                param_7[4] = bVar3;
                param_7[5] = bVar10;
                param_7[6] = bVar8;
                param_7[7] = bVar6;
              }
              uVar17 = uVar17 + 1;
              param_7 = param_7 + param_3[10] + 8;
              param_6 = param_6 + param_2[0xb0] * 4;
            } while (uVar17 != param_5);
            return;
          }
        }
        else if (uVar17 == 0x10) {
          if (param_3[2] == 1) {
            if ((int)param_5 < 1) {
              return;
            }
            uVar17 = 0;
            uVar16 = 1;
            dVar19 = *(double *)(PTR_LAB_003a88e0 + 0x1440);
            do {
              param_1 = param_1 & 0xffffffff00000000;
              uVar12 = param_3[0x11];
              if (*(int *)(param_2[0xb4] + 0x40) != 0) {
                dVar19 = (double)*(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4) * dVar19;
                param_1 = CONCAT44((int)((ulonglong)dVar19 >> 0x20),(float)dVar19);
              }
              uVar2 = FUN_00155b60(param_1);
              bVar3 = (byte)((ushort)uVar2 >> 8);
              if (uVar12 == uVar16) {
                *param_7 = (byte)uVar2;
                param_7[1] = bVar3;
              }
              else {
                *param_7 = bVar3;
                param_7[1] = (byte)uVar2;
              }
              uVar17 = uVar17 + 1;
              param_7 = param_7 + param_3[10] + 2;
              param_6 = param_6 + param_2[0xb0] * 4;
              dVar19 = extraout_f0_1;
            } while (uVar17 != param_5);
            return;
          }
          if ((int)param_5 < 1) {
            return;
          }
          uVar17 = 0;
          fVar21 = *(float *)(PTR_s_t_to_left_003a88e4 + -0x51e0);
          do {
            bVar6 = 0;
            bVar3 = 0;
            if (*(int *)(param_2[0xb4] + 0x40) != 0) {
              fVar20 = *(float *)(param_6 + *(int *)(param_2[0xb4] + 0x44) * 4);
              if (fVar20 < fVar21) {
                uVar2 = (undefined2)(int)fVar20;
              }
              else {
                uVar2 = (undefined2)(int)(fVar20 - fVar21);
              }
              bVar3 = (byte)((ushort)uVar2 >> 8);
              bVar6 = (byte)uVar2;
            }
            if (param_3[0x11] == 1) {
              *param_7 = bVar6;
              param_7[1] = bVar3;
            }
            else {
              *param_7 = bVar3;
              param_7[1] = bVar6;
            }
            uVar17 = uVar17 + 1;
            param_7 = param_7 + param_3[10] + 2;
            param_6 = param_6 + param_2[0xb0] * 4;
          } while (uVar17 != param_5);
          return;
        }
      }
      uVar16 = 0;
      if (0 < (int)param_5) {
        iVar1 = param_2[0xb4];
        if (*(int *)(iVar1 + 0x40) == 0) goto LAB_001574b0;
        do {
          uVar23 = (*(code *)PTR_FUN_003a8a80)
                             (*(undefined4 *)(param_6 + *(int *)(iVar1 + 0x44) * 4));
          while( true ) {
            uVar12 = (uint)((ulonglong)uVar23 >> 0x20);
            if (param_3[0x15] == 0) {
              param_3[0x15] = 8;
            }
            if (0 < (int)uVar17) {
              do {
                uVar11 = param_3[0x15];
                uVar7 = uVar11;
                if (uVar17 <= uVar11) {
                  uVar7 = uVar17;
                }
                uVar9 = uVar17 - uVar7;
                uVar14 = uVar11 - uVar7;
                uVar17 = uVar9;
                if ((int)uVar9 < 0) {
                  uVar17 = 0;
                }
                if (uVar11 == 8) {
                  *param_7 = 0;
                }
                param_3[0x15] = uVar14;
                uVar11 = (uVar12 << 1) << (~uVar17 & 0x1f) | (uint)uVar23 >> (uVar17 & 0x1f);
                if ((uVar17 & 0x20) != 0) {
                  uVar11 = uVar12 >> (uVar17 & 0x1f);
                }
                bVar3 = (byte)((~(-1 << (uVar7 & 0x1f)) & uVar11) << (uVar14 & 0x1f));
                if ((uVar14 & 0x20) != 0) {
                  bVar3 = 0;
                }
                *param_7 = bVar3 | *param_7;
                if (uVar14 == 0) {
                  param_7 = param_7 + 1;
                  param_3[0x15] = 8;
                }
              } while (0 < (int)uVar9);
            }
            uVar16 = uVar16 + 1;
            param_7 = param_7 + param_3[10];
            param_6 = param_6 + param_2[0xb0] * 4;
            if (uVar16 == param_5) {
              return;
            }
            iVar1 = param_2[0xb4];
            uVar17 = *param_3;
            if (*(int *)(iVar1 + 0x40) != 0) break;
LAB_001574b0:
            uVar23 = 0;
          }
        } while( true );
      }
    }
  }
  else {
    (*(code *)PTR_ThrowMagickException_003a8f20)
              (param_8,PTR_s_courses_003a88ec + -0x7af0,PTR_s_courses_003a88ec + -0x768c,0x9d8,0x1d1
               ,PTR_s_courses_003a88ec + -0x7ad4,PTR_LAB_003a88e0 + 0x3e28,param_2 + 0xd0);
  }
  return;
}

